Sommario:

Come controllare le prese usando un Raspberry Pi: 6 passaggi
Come controllare le prese usando un Raspberry Pi: 6 passaggi

Video: Come controllare le prese usando un Raspberry Pi: 6 passaggi

Video: Come controllare le prese usando un Raspberry Pi: 6 passaggi
Video: Come rendere SMART le prese con il Raspberry Pi Zero 2024, Luglio
Anonim
Come controllare le prese usando un Raspberry Pi
Come controllare le prese usando un Raspberry Pi
Come controllare le prese usando un Raspberry Pi
Come controllare le prese usando un Raspberry Pi
Come controllare le prese usando un Raspberry Pi
Come controllare le prese usando un Raspberry Pi

In questo Instructable, ti mostrerò come creare un'interfaccia web per controllare le prese di casa usando un Raspberry Pi. Ho scelto di scrivere questo progetto quando ho visto il concorso Sensors e, poiché questo progetto prevede l'utilizzo di un sensore per leggere i codici dal telecomando fornito con le prese acquistate, ho pensato che questo progetto sarebbe stato perfetto.

Lavorerò per mantenere questo livello il più alto possibile e fornirò il codice per far funzionare tutto. Per tutte voi scimmie del codice là fuori, sentitevi liberi di scavare nel codice e scrutatemi nei commenti! Cerco sempre di migliorare. C'è molto da fare in questo, quindi se hai domande su qualsiasi passaggio, lascia un commento in modo che possa aggiornare Instructable con i dettagli necessari.

Questo progetto utilizza prese controllate a radiofrequenza a 433 MHz accoppiate con un trasmettitore RF collegato al tuo Raspberry Pi. Le prese sono dotate di telecomandi che possono accendere/spegnere le prese, ma non è divertente! Utilizzeremo invece un server Web in esecuzione sul raspberry pi che consente a chiunque sia connesso alla rete di attivare o disattivare determinate prese. Un front-end Web per questo progetto è l'ideale poiché qualsiasi dispositivo connesso al Web sulla rete può essere utilizzato come telecomando.

Questo è un progetto che sogno da anni di portare a termine e, sebbene ci sia ancora spazio per integrazioni, il progetto descritto di seguito è un sistema funzionale.

Forniture

  • Un Raspberry Pi (ho usato un RPi 3 Model B+)
  • Un trasmettitore e ricevitore a 433 MHz (ho usato questo)
  • Prese a 433 MHz (ho usato questo)
  • Maglioni da donna a donna (ho comprato questo mazzo)
  • Un computer o un dispositivo portatile in grado di accedere a Internet

Passaggio 1: configura il tuo Raspberry Pi

Configura il tuo Raspberry Pi
Configura il tuo Raspberry Pi

Inizia installando l'ultima versione di Raspbian sul tuo nuovo Raspberry Pi. Se prevedi di utilizzare un Pi esistente (cosa che puoi fare totalmente), tutto ciò che devi fare è assicurarti di avere Python 3 sul tuo Pi, poiché è quello in cui è scritto tutto il codice sorgente che fornisco. Per fare questo, genere

pitone3

nella riga di comando. Se hai Python 3, dovresti vedere il terminale Python aperto. Esci dal terminale chiudendo o digitando

Uscita()

Dopo averlo confermato, devi installare il pallone sul tuo Pi. Flask ci permette di creare il nostro server web. Dalla riga di comando Pi, digita

sudo pip3 install flask

Nel caso in cui non sia installato pip sul tuo Pi, dovrai digitare

sudo apt-get install python3-pip

Preferisco sviluppare sul mio Raspberry Pi comodamente dal mio computer desktop. Se anche tu preferisci questa opzione, devi installare una sorta di ambiente per SSH nel Pi. PuTTY funzionerà, ma preferisco avere una GUI (interfaccia utente grafica), che fa sembrare che tu sia direttamente sul Pi. Per l'opzione GUI, ti consigliamo di installare VNC Viewer sul computer su cui prevedi di lavorare. Ci sono anche impostazioni che dovrai regolare sul tuo Pi. Le istruzioni per modificare le impostazioni sono disponibili qui.

Passaggio 2: collegamento dell'hardware

Collegamento dell'hardware
Collegamento dell'hardware

A questo punto, è il momento di effettuare tutte le connessioni fisiche necessarie in preparazione dell'impostazione del codice sorgente per questo progetto. Collegherai i pin del trasmettitore e del ricevitore ai pin GPIO del tuo Pi. Dovrai fare riferimento religiosamente al diagramma di piedinatura dei pin GPIO. Per farlo, apri il terminale sul tuo Pi e digita

piedinatura

Di seguito sono riportati i collegamenti che ho effettuato. Potresti avere una configurazione diversa se hai acquistato un hardware trasmettitore/ricevitore diverso da quello indicato nell'introduzione. Se decidi di scegliere numeri di pin diversi da quelli che ti indico qui sotto, non temere! Quando scarichi il codice sorgente, modifica semplicemente i numeri dei pin secondo necessità nel file RxTx.py.

Ricevitore (grande chip):

  • GND - Qualsiasi pin di terra designato
  • DATI - Pin 11
  • DER - Non connesso
  • +5V - Qualsiasi pin designato +5V
  • ------
  • +5V - Qualsiasi pin designato +5V
  • GND - Qualsiasi pin di terra designato
  • GND - Non connesso
  • ANT - Non connesso

Nota: puoi collegare un'antenna secondo necessità, ma ho scoperto che non ne avevo bisogno. Questo piccolo chip era sorprendentemente sensibile e rileva fedelmente i segnali fino ad almeno 50 piedi da dove si trovava e attraverso almeno due pareti.

Trasmettitore:

  • P - Il pin da 3,3 V
  • DA - Pin 7
  • G - Qualsiasi pin di terra designato
  • AN - non connesso

Nota: ancora una volta, puoi collegare un'antenna al trasmettitore secondo necessità, ma ho scoperto che non ne avevo bisogno. La portata è più che sufficiente (50+ piedi).

Passaggio 3: aggiunta del codice

Questa è la parte su cui ho trascorso la maggior parte del mio tempo durante lo sviluppo di questo progetto. Cerco di commentare il più possibile, ma probabilmente ho lasciato dei vuoti che potrebbero richiedere una spiegazione se qualcuno di voi passa il tempo a cercare di capirlo. Se ti capita, lascia un commento!

Le lingue che sono coinvolte qui sono:

  • Pitone
  • CSS
  • Javascript
  • HTML
  • JQuery/Ajax

Il Python è usato nel server flask e nel

RxTx.py

file, che gestisce la trasmissione e la ricezione del codice. I CSS vengono utilizzati per generare lo stile della pagina web. Chi vuole un sito noioso!? Javascript viene utilizzato in qualsiasi gestione degli eventi (premendo un pulsante, ecc.). L'HTML è l'elemento fondamentale della pagina web. Infine, JQuery/Ajax viene utilizzato per comunicare tra la pagina Web e il backend Python.

Se tutte queste lingue sembrano intimidatorie, non preoccuparti! Sapevo solo che Python stava entrando in questo progetto, che è stato il linguaggio che ha coinvolto la minor quantità di codice, vai a capire … Basti dire che prenditi il tuo tempo per esaminare il codice se è quello che scegli di fare. Se non vuoi, non devi!

Quella che segue è la struttura di directory che ho scelto di utilizzare con questa pagina web. La cartella zip allegata a questo passaggio contiene tutto il codice sorgente nella seguente struttura.

Uscita Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> webpage-- static----- favicon.ico----- style.css-- templates----- index.html----- schedule.html-- app.py-- data.file

Puoi mettere la cartella Outlet Switch ovunque sul tuo Pi. Quando sei pronto per eseguire il tuo server web, apri il terminale sul tuo Pi e

cd

(cambia directory) nella directory della pagina web. Quindi digita

python3 app.py

nel terminale. Se non ci sono stati errori, dovresti essere a posto!

P. S. Per favore, sii paziente se incontri qualche bug. Ho provato a schiacciarli tutti prima di caricarli.

Passaggio 4: provalo

Dagli Un colpo!
Dagli Un colpo!

Ora che stai eseguendo il codice, puoi avere un'idea dell'interfaccia web a portata di mano. Il controllo del sistema è molto semplice:

  • Puoi aggiungere tutti i punti vendita che desideri utilizzando l'interfaccia web.
  • L'eliminazione è semplice come fare clic su Modifica, selezionare i punti vendita che si desidera eliminare e fare clic su Elimina.

Il video di YouTube sopra mostra come aggiungere effettivamente un nuovo punto vendita alla tua lista. Per riassumere ciò che mostra:

  • Per prima cosa inserisci il titolo del punto vendita nel campo Titolo
  • Fare clic o toccare fuori dal campo Titolo per consentire al programma di verificare che il titolo non esista già. Non puoi avere titoli con lo stesso nome
  • Una volta convalidati, i pulsanti Codice ON e Codice OFF sono abilitati.
  • Tieni premuto il pulsante ON sul telecomando fornito e fai clic rapidamente sul pulsante ON Code sull'interfaccia. Tieni premuto il pulsante sul telecomando finché il tuo codice binario non compila il campo adiacente.
  • Ripetere il passaggio precedente per il codice OFF.
  • Fai clic su OK e ora sei pronto per cambiare questa presa!

Come accennato nell'introduzione, il progetto non è completo al 100% per i miei usi. Il componente più grande che devo ancora completare e implementare è la capacità di pianificazione. Ho intenzione di consentire all'utente di creare un programma che consenta l'accensione e lo spegnimento automatico dei punti vendita a orari prestabiliti.

Passaggio 5: debug e file RxTx.py

Debug e file RxTx.py
Debug e file RxTx.py
Debug e file RxTx.py
Debug e file RxTx.py
Debug e file RxTx.py
Debug e file RxTx.py
Debug e file RxTx.py
Debug e file RxTx.py

L'unica limitazione nota del sistema è la possibilità di incompatibilità tra i punti vendita di diversi fornitori. I messaggi di codice di attivazione e disattivazione sono a 25 bit per il mio sistema e se un sistema ha una lunghezza del messaggio diversa, non è immediatamente compatibile con questo progetto. Se hai seguito esattamente le istruzioni e hai ancora problemi a farlo funzionare, il seguente sarebbe il modo migliore per eseguire il debug del problema.

  • Assicurati di avere matplotlib installato sul tuo Pi. Puoi farlo digitando quanto segue nel terminale del Pi:

    • pitone3

    • import matplotlib

    • Se ricevi un errore, devi installare matplotlib.
    • Esci dalla shell Python usando

      Uscita()

  • Per installare matplotlib, digita

    sudo pip3 install matplotlib

  • nel terminale
  • Scarica il file test.py allegato e posizionalo accanto al file RxTx.py sul tuo Pi
  • Apri il terminale Python e cambia la directory nella cartella comm.
  • Tipo

    python3 test.py

  • Quando viene visualizzato il messaggio "**Registrazione avviata**", tieni premuto il pulsante ON o OFF del telecomando fino al termine della registrazione.
  • Il programma caricherà una figura matplotlib simile a quella sopra. Ingrandisci finché non vedi il segnale ripetitivo come mostrato nelle foto sopra.
  • Conta l'1 logico totale e lo 0 logico per ogni messaggio, dove un messaggio è un'iterazione del segnale ripetitivo visto sopra. Se il totale è 25, è probabile che il file RxTx.py non sia responsabile. Se incontri qualcosa di diverso da 25, assicurati di commentare di seguito e riorganizzerò il file RxTx.py in modo che sia più aperto (o sentiti libero di provarci).

Cosa succede se non vedo un segnale ripetitivo?

Se non vedi un segnale ripetitivo, una delle due cose è sbagliata. Innanzitutto, controlla che tutti i collegamenti dei cavi dei ponticelli siano eseguiti correttamente. Se tutto sembra a posto, potresti avere un cattivo ricevitore. Hai comprato quello che ti ho suggerito? Quando ho comprato il mio primo chip ricevitore, era molto rumoroso. Così rumoroso che non riuscivo a ottenere un segnale chiaro. Quindi ho restituito quel chip e ho preso quello che avevo collegato, e non avrebbe potuto funzionare meglio.

Passaggio 6: divertiti

Sai che hai la possibilità di accendere/spegnere le prese dal tuo telefono, tablet, computer o altro dispositivo abilitato per il web! Fatemi sapere cosa ne pensate nei commenti!

Consigliato: