In questo articolo, ti mostrerò come creare un'applicazione Web Web Station basata su API Python utilizzando il temperatura, pressione barometrica, E umidità Sensori del cappello di Sense Raspberry Pi. Per seguire questo articolo, avrai bisogno di quanto segue:
NOTA: In questo articolo, ci connetteremo a Raspberry Pi da remoto tramite VNC o SSH utilizzando la configurazione senza testa di Raspberry Pi. Se non si desidera accedere al tuo Raspberry Pi da remoto tramite SSH o VNC, dovrai collegare un monitor, una tastiera e un mouse al tuo Raspberry PI.
Per imparare a flashing dell'immagine del sistema operativo Raspberry Pi su una scheda MicroSD, si prega di fare riferimento a come installare e utilizzare Raspberry Pi Imager. Se hai bisogno di aiuto per installare il sistema operativo Raspberry Pi sul tuo Raspberry Pi, leggi come installare il sistema operativo Raspberry Pi su Raspberry Pi 4. Se hai bisogno di aiuto con la configurazione senza testa di Raspberry Pi, dai un'occhiata a come installare e configurare il sistema operativo Raspberry Pi su Raspberry Pi 4 senza monitor esterno.
Collegamento del cappello di Sense Raspberry Pi a Raspberry Pi
Il kit di cappelli Sense Raspberry Pi viene fornito con la tavola per componente aggiuntiva Raspberry Pi Sense, un'intestazione da maschio a femmina da 40 pin e alcune viti e distanziali.
Prima di poter attaccare la tavola da cappello sensoriale al Raspberry Pi, è necessario collegare l'intestazione a 40 pin al cappello da senso. Collega i pin maschili dell'intestazione maschio-femmina a 40 pin al cappello di senso come mostrato nelle immagini sottostanti.
I computer a bordo a bordo di Raspberry PI hanno 4 fori che possono essere utilizzati per allegare schede aggiuntive o una custodia. Per collegare la scheda aggiuntiva, inserire viti dal retro di Raspberry Pi, come mostrato nelle immagini sottostanti.
Quindi, collegare un distanziatore alla vite.
Una volta che aggiungi tutte e quattro le viti e i distanziali, il tuo Raspberry Pi dovrebbe apparire come quello mostrato nell'immagine qui sotto.
Collegare il cappello di Sense Raspberry Pi alla testata maschile GPIO a 40 pin di Raspberry Pi, come mostrato nelle immagini sottostanti.
NOTA: Fai attenzione mentre scollega il cappello di Sense Raspberry Pi dall'intestazione GPIO da 40 pin di lampone per evitare di piegare i pin del lampone PI GPIO.
Con le quattro viti rimanenti, fissare il cappello di Sense Raspberry Pi, come mostrato nelle immagini sottostanti.
Accensione sul Raspberry Pi
Ora che il cappello di Sense Raspberry Pi è collegato al Raspberry Pi, inserire la scheda MicroSD con sistema operativo Raspberry Pi nello slot per schede microSD del Raspberry Pi, collegare il cavo di alimentazione al Raspberry Pi e accenderla.
Installazione della libreria Python di Raspberry Pi Sense Hat
Per usare il cappello di Sense Raspberry Pi su Raspberry Pi, il Hat-Hat La libreria Python deve essere installata sul sistema operativo Raspberry Pi. IL Hat-Hat La libreria è disponibile nel repository di pacchetti ufficiali di Raspberry Pi OS.
Per installare il Raspberry Pi Hat-Hat Libreria Python sul sistema operativo Raspberry Pi, aggiorna prima la cache del repository del pacchetto APT con il seguente comando:
$ sudo apt updateQuindi, esegui il seguente comando:
$ sudo APT Installa Sense -Hat -yInstallazione della libreria Python Framework Micro Framework Flask
Useremo il framework Python Flask per creare la nostra applicazione meteorologica. È possibile installare il pallone dal repository del pacchetto ufficiale del sistema operativo Raspberry Pi con il seguente comando:
$ sudo apt install python3 -flask -yCreazione di una directory di progetto
È una buona idea creare una directory di progetto per organizzare i file di progetto. Per creare una directory di progetto ~/lavoro, Usa il seguente comando:
$ mkdir ~/lavoroUna volta creata la directory del progetto, vai alla directory del progetto come segue:
$ cd ~/lavoroTestare il cappello di Sense Raspberry Pi
Per verificare se il cappello di Raspberry Pi Sense funziona, possiamo scrivere un semplice script di test Python. Puoi creare un nuovo script Python chiamato test.Py con il nano Editor di testo come segue:
$ nano test.PyImmettere il seguente codice in test.Py file. Principe della riga 1 Sensehat dal Sense_hat Modulo, la riga 3 crea a Sensehat oggetto e memorizza un riferimento in senso variabile e righe 5-6 Imposta il colore di tutti i LED 8 × 8 su rosso. Una volta terminato, premere + X seguito da Y E .
Puoi eseguire il test.Py Script Python con il seguente comando:
Test $ Python3.PyLa matrice LED 8 × 8 dovrebbe brillare di colore rosso come mostrato nell'immagine sottostante.
Per spegnere i LED del cappello da sensazione, eseguire il chiaro() metodo senza alcun valore di colore in test.Py Script Python, come mostrato nello screenshot seguente, ed eseguire il test.Py Script di Python di nuovo.
I LED del cappello da senso dovrebbero ora essere disattivati, come mostrato nell'immagine qui sotto.
Se il cappello da senso funziona correttamente, passa alla sezione successiva.
Ottenere dati meteorologici da Sense Hat
È possibile ottenere i dati del sensore dal cappello di sensazione molto facilmente usando il Hat-Hat Biblioteca Python. Per recuperare i dati dei sensori dal cappello da sensazione, è possibile creare un nuovo script Python read_sensor_data.Py come segue:
$ nano read_sensor_data.PyImmettere il seguente codice in read_sensor_data.Py File Python.
da Sense_hat Import SensehatUna volta terminato, premere + X seguito da Y E .
Nel codice sopra, le righe 1 e 2 importano tutte le librerie richieste, la riga 4 crea a Sensehat oggetto, e la riga 5 disattiva tutti i LED del cappello da senso usando il chiaro() metodo. Il ciclo while nella riga 7 è un ciclo infinito che eseguirà il codice nelle righe 8-16 per sempre.
Nella riga 8, il get_temperature () Il metodo viene utilizzato per leggere i dati di temperatura (in gradi Celsius) dal sensore di umidità del Cappello Sense. Nella riga 9, i dati di temperatura vengono convertiti da gradi Celsius in gradi Fahrenheit. Nella riga 10, il get_pressure () Il metodo viene utilizzato per leggere i dati di pressione dell'aria (in millibar) dal sensore di pressione del cappello sensoriale. Nella riga 11, il get_humidità () Il metodo viene utilizzato per leggere i dati sull'umidità (in %) dal sensore di umidità del cappello sensato.
Le righe 13-15 vengono utilizzate per stampare i dati del sensore sulla console e la riga 16 viene utilizzata per attendere 5 secondi prima di leggere di nuovo i dati del sensore.
Puoi eseguire il read_sensor_data.Py Script Python come segue:
$ python3 read_sensor_data.PyUna volta eseguito lo script, i dati del sensore verranno stampati sulla console.
Ora che possiamo leggere i dati del sensore dal Cappello Sense, premere + C per fermare il programma.
Creazione di un'app Web della stazione meteorologica
In questa sezione, ti mostreremo come utilizzare il framework Web Python Flask per creare un'API meteorologica e un'applicazione meteorologica. L'applicazione meteorologica accederà all'API dei dati meteorologici e mostrerà i dati meteorologici in tempo reale. Tutto il codice discusso in questa sezione è disponibile su GitHub su Shovon8/Raspberry-PI-HAT-HAT-Weather-app.
Innanzitutto, crea un server.Py Script Python nella directory del progetto come segue:
$ nano server.PyImmettere il seguente codice in server.Py File Python.
Dal pallone di importazione di palloneQuindi, premere + X seguito da Y E per salvare il server.Py Script di Python.
Nel codice sopra, le righe 1-5 importano tutte le librerie richieste, la riga 7 crea un'app di pallone, la riga 11 crea un oggetto Sensehat e la riga 12 disattiva tutti i LED di Sense Hat. La riga 8 disabilita la memorizzazione nella cache Web per l'app Fask. Poiché questa app è leggera, non è necessario la memorizzazione nella cache. Se si desidera modificare l'app, avere disabilitato nella cache Web renderà i test molto più facili.
Righe 18-31 Leggi i dati del sensore dal cappello di sensazione e restituisci i dati API in formato JSON su HTTP OTTIENI CHE OTTIENI NELLA RICHIESTA /API Endpoint del server web. Righe 37-39 Restituisci la home page dell'app Web meteo su / Endpoint del server web. La homepage è resa da casa.html file, che dovrebbe essere in modelli/ Directory della directory del progetto.
Le righe 14-16 vengono utilizzate per consentire l'accesso a stile.CSS E app.js file statici. Questi file dovrebbero essere in statico/ Directory della directory del progetto. IL stile.CSS Il file viene utilizzato per modellare il casa.html home page e il app.js Il file viene utilizzato per richiedere i dati API da /API endpoint e aggiornare i dati meteorologici su casa.html pagina ogni 5 secondi.
Creare il statico/ E modelli/ Directory nella directory del progetto come segue:
$ mkdir -v statico, modelliCreare un casa.html file in modelli/ directory come segue:
$ nano modelli/casa.htmlImmettere il seguente codice in casa.html file.
Temperatura
Pressione
Umidità
Quindi, premere + X seguito da Y E per salvare il casa.html file.
Creare un stile.CSS file in statico/ directory come segue:
$ nano statico/stile.CSSImmettere i seguenti codici in stile.CSS file.
@import url ('https: // caratteri.Googleapis.com/css2?famiglia = roboto & display = swap ');Quindi, premere + X seguito da Y E per salvare il stile.CSS file.
Creare un app.js file in statico/ directory come segue:
$ nano statico/app.jsImmettere il seguente codice in app.js file.
finestra.addEventListener ('carico', main);Quindi, premere + X seguito da Y E per salvare il app.js file.
Qui, la riga 1 esegue il principale() funzione Quando la pagina Web termina il caricamento. Nel principale() funzione, il getApidata () La funzione recupera i dati dell'API meteorologica utilizzando AJAX e chiama il aggiornamento() funzione (nella riga 10) una volta che i dati sono stati recuperati correttamente. IL aggiornamento() La funzione aggiorna l'elemento pagina Web utilizzando i dati API.
Nella riga 20, il documento.getElementById () Il metodo viene utilizzato per ottenere il riferimento dell'elemento pagina web con l'ID tempc. La riga 28 viene utilizzata per sostituire il contenuto dell'elemento pagina web che ha l'ID tempc con la temperatura (in Celsius) dall'API. Allo stesso modo, i contenuti di tutti gli elementi Web (righe 21-26) sono sostituiti con i rispettivi dati API.
Nel app () funzione, il getApidata () è chiamato ogni 5 secondi (5000 millisecondi) per mantenere aggiornati i dati meteorologici nell'app meteorologica. Finalmente, nella riga 46, il app () la funzione viene eseguita.
Per testare l'app Web, immettere il comando seguente:
$ Flask_app = server.py blask run -host = 0.0.0.0L'app meteo dovrebbe essere eseguita sulla porta 5000 (per impostazione predefinita).
Per verificare se l'API meteorologica funziona, eseguire il seguente comando:
$ CURL -S http: // localhost: 5000/API | json_ppCome puoi vedere, i dati dell'API meteorologica vengono stampati sulla console. Pertanto, l'API funziona.
Per testare l'app meteorologica, visitare http: // localhost: 5000 da un browser Web Chromium. L'app meteo dovrebbe essere caricata sul browser Web, ma all'inizio non è necessario visualizzare dati meteorologici.
Dopo alcuni secondi, l'app meteorologica dovrebbe finire di recuperare i dati meteorologici dall'API e visualizzarli.
In qualsiasi momento, puoi premere + C per fermare il server web.
Creazione del servizio SystemD per l'app Web meteo
In questa sezione, ti mostreremo come creare un file di servizio SystemD per l'app meteorologica in modo che inizi automaticamente all'avvio.
Innanzitutto, crea un Stazione metereologica.servizio File nella directory del progetto come segue:
$ nano stazione meteorologica.servizioImmettere le seguenti righe di codice in Stazione metereologica.servizio file.
[Unità]Quindi, premere + X seguito da Y E per salvare il Stazione metereologica.servizio file.
Copia il Stazione metereologica.servizio file a /etc/systemd/system/ Directory con il seguente comando:
$ sudo cp -v stazione meteorologica.Servizio/etc/systemd/system/Ricarica i demoni Systemd per le modifiche per avere effetto come segue:
$ sudo systemctl demone-ricaricamentoIL Stazione metereologica Il servizio SystemD dovrebbe essere inattivo al momento, come mostrato nello screenshot seguente.
$ sudo systemctl stazione meteorologica.servizioIniziare il Stazione metereologica Servizio con il seguente comando:
$ sudo systemctl Inizia stazione meteorologica.servizioCome puoi vedere, il Stazione metereologica Il servizio è ora in esecuzione.
$ sudo systemctl stazione meteorologica.servizioOra che il Stazione metereologica Il servizio funziona, è possibile aggiungerlo all'avvio del sistema del sistema operativo Raspberry Pi con il seguente comando:
$ sudo systemctl abilita stazione meteorologica.servizioRiavvia il tuo Raspberry Pi con il seguente comando:
$ sudo riavviaUna volta i tuoi stivali di lampone, il Stazione metereologica Il servizio dovrebbe essere in esecuzione, come mostrato nello screenshot seguente.
$ sudo systemctl stazione meteorologica.servizioAccesso all'app meteorologica da altri dispositivi
Per accedere all'app meteorologica da altri dispositivi nella tua rete domestica, è necessario conoscere l'indirizzo IP del tuo Raspberry Pi. Puoi trovare l'indirizzo IP del tuo Raspberry Pi 4 dall'interfaccia di gestione web del router Home. Nel nostro caso, l'indirizzo IP è 192.168.0.103, ma questo indirizzo sarà diverso per te, quindi assicurati di sostituire questo indirizzo con il tuo in tutti i passaggi successivi.
Se hai accesso alla console Raspberry Pi, è possibile eseguire il seguente comando per trovare anche l'indirizzo IP.
$ hostname -iUna volta che conosci l'indirizzo IP del tuo Raspberry Pi, puoi accedervi da qualsiasi dispositivo nella tua rete domestica. Come mostrato nello screenshot di seguito, abbiamo accettato l'app meteo da uno smartphone Android.
Conclusione
In questo articolo, ti abbiamo mostrato come usare il cappello di Sense Raspberry Pi per costruire una stazione meteorologica Raspberry Pi. Abbiamo usato il Hat-Hat Biblioteca Python per estrarre i dati meteorologici dal cappello di Sense Raspberry Pi. Quindi, abbiamo usato il framework Web Python Python Python per creare un'API meteorologica e un'applicazione Web. L'app Web ottiene i dati meteorologici dall'API meteorologica ogni 5 secondi per mantenere aggiornata l'app Web con gli ultimi dati meteorologici.