Monitoraggio della temperatura in Raspberry Pi

Monitoraggio della temperatura in Raspberry Pi

Video playerhttps: // linuxhint.com/wp-content/uploads/2020/10/2020-09-29-20-47-25.MP400: 0000: 0000: 40use su/giù tasti freccia per aumentare o ridurre il volume.
Il monitoraggio delle temperature può essere un requisito in molti dei tuoi progetti Raspberry Pi. È relativamente facile da fare in Raspberry Pi e i componenti richiesti per questo progetto non sono troppo costosi.Questo articolo mostra come utilizzare il modulo termometro digitale DS18B20 per monitorare la temperatura utilizzando Raspberry Pi. L'articolo dimostra anche come creare un'app Web per visualizzare la temperatura.

Cose di cui avrai bisogno:

Per provare gli esempi in questo articolo, avrai bisogno di quanto segue:

  1. Un computer a bordo di Raspberry Pi a bordo
  2. Un adattatore di alimentazione per il dispositivo Raspberry Pi
  3. Una scheda microSD con sistema operativo Raspberry Pi installato
  4. Connettività di rete sul dispositivo Raspberry Pi
  5. Una breadboard
  6. 3 pezzi di fili di collegamento da femmina a femmina
  7. Alcuni fili di collegamento da maschio a maschio
  8. Una resistenza da 10k
  9. Un modulo termometro digitale DS18B20

Pinout del termometro digitale DS18B20

Se si tiene il termometro digitale DS18B20 come mostrato nell'immagine in basso, il primo pin sarà macinato (GND), Il secondo pin sarà DATI, E il terzo pin sarà VCC.

Schema elettrico

Lo schema del circuito del monitor di temperatura è mostrato nell'immagine sottostante.

Qui, il PIN2/5V del dispositivo Raspberry Pi dovrebbe essere collegato a PIN3/VCC del modulo termometro digitale.

IL PIN7/GPIO4 del dispositivo Raspberry Pi dovrebbe essere collegato a Pin2/Data del modulo termometro digitale.

IL Pin9/GND del dispositivo Raspberry Pi dovrebbe essere collegato a Pin1/GND del modulo termometro digitale.

UN Resistenza da 10kΩ dovrebbe essere collegato tra Pin2 E Pin3 del modulo termometro digitale.

Dovresti tenere il tuo Raspberry Pi come mostrato nell'immagine qui sotto. Quindi, il perno in alto a sinistra sarà Pin1. Il pin proprio accanto a Pin1 sarà Pin2. Quindi, se si muovi in ​​avanti una riga, quella sinistra sarà Pin3 E quello giusto sarà PIN4, e così via.

Una volta che hai collegato tutti i componenti al tuo dispositivo Raspberry Pi, dovrebbe assomigliare a questo:

Dai un'occhiata più da vicino a come ho messo i componenti sulla breadboard.

Una volta che hai collegato tutti i componenti al tuo dispositivo Raspberry Pi, accendi il dispositivo Raspberry Pi. Quindi, connettiti al dispositivo Raspberry Pi tramite VNC o SSH.

Dati di temperatura di lettura dal termometro digitale DS18B20

Il modulo termometro DS18B20 utilizza il protocollo di comunicazione a 1 filo per inviare dati a Raspberry Pi. Per impostazione predefinita, l'interfaccia a 1 filo non è abilitata. È possibile abilitare facilmente l'interfaccia dallo strumento di configurazione Raspberry Pi.

Per abilitare l'interfaccia a 1 filo, eseguire RASPI-CONFIG con il seguente comando:

$ sudo raspi-config

Selezionare Opzioni di interfaccia e premere .

Selezionare 1 filo e premere .

Selezionare e premere .

Premere .

Per uscire da RASPI-CONFIG utilità, stampa .

Affinché le modifiche abbiano effetto, riavvia il tuo Raspberry Pi come segue:

$ sudo riavvia

Per verificare se il W1_GPIO E w1_therm Vengono caricati i moduli del kernel, eseguire il seguente comando:

$ sudo lsmod | grep W1

Se per qualche motivo, il w1_therm Il modulo non viene caricato, quindi è possibile caricarlo manualmente con il seguente comando:

$ sudo modprobe w1_therm

Una volta che hai abilitato Comunicazione a 1 filo e caricato il w1_therm Modulo, un nuovo dispositivo (28-00000BA693E9, nel mio caso) dovrebbe essere elencato in /sys/bus/w1/dispositivi directory, come puoi vedere nello screenshot qui sotto.

$ ls/sys/bus/w1/dispositivi/

Passare alla nuova directory, come segue:

$ cd/sys/bus/w1/dispositivi/28-00000ba693e9

Dovresti trovare un temperatura File nella directory, come puoi vedere nello screenshot seguente.

$ ls -lh

IL temperatura Il file è un file di testo semplice. È possibile leggere i dati di temperatura utilizzando il gatto comando, come segue:

$ CAT TEMPERATH

Come puoi vedere, i dati di temperatura vengono stampati sulla console. Qui, 30375 significa 30.375 ° C.

È possibile utilizzare un linguaggio di programmazione, come Python o Node.JS, per analizzare questi dati di temperatura e usarli sulla tua app. Ti mostrerò come farlo nella prossima sezione di questo articolo.

Per analizzare i dati di temperatura utilizzando un linguaggio di programmazione, avrai bisogno del percorso assoluto per il temperatura file. Puoi trovarlo usando il readlink comando, come segue:

$ readlink -f temperatura

Crea un'app Web per visualizzare i dati di temperatura:

In questa sezione, imparerai come analizzare i dati di temperatura dal modulo termometro DS18B20 e visualizzarli su un'app Web.

In questo esempio, creerò un'API, che analizzerà i dati di temperatura dal modulo termometro DS18B20 a cui è possibile accedere all'API. Creerò anche un'app Web che prenderà i dati di temperatura dall'API e la visualizzerà bene. Userò il nodo.linguaggio di programmazione JS per farlo. I codici vengono caricati nel mio repository GitHub Shovon8/DS18B20-Raspberrypi-API. Potresti voler verificarlo se hai difficoltà a copiare i codici di copia e pasto.

Nodo.JS non è installato sul sistema operativo Raspberry Pi per impostazione predefinita. Ma è disponibile nel repository di pacchetti ufficiali di Raspberry Pi OS. È possibile installare facilmente il nodo.JS dal repository pacchetto Raspberry Pi OS.

Innanzitutto, aggiorna la cache del repository del pacchetto APT con il seguente comando:

$ sudo apt update

Successivamente, installa il nodo.JS e NPM con il seguente comando:

$ sudo apt install nodejs npm

Per confermare l'installazione, premere Y e poi premere .

Il gestore dei pacchetti APT scaricherà e installerà tutti i pacchetti richiesti. Potrebbe volerci un po 'di tempo per completare.

A questo punto, nodo.JS e NPM dovrebbero essere installati.

Una volta nodo.JS e NPM sono installati, controlla se il nodo E npm Sono disponibili comandi, come segue:

$ nodo -version
$ npm -version

Aggiorna NPM con il seguente comando:

$ sudo npm install -global npm

NPM dovrebbe essere aggiornato.

Come puoi vedere, NPM è stato aggiornato dalla versione 5.8.0 alla versione 6.14.8.

$ nodo -version
$ npm -version

Ora quel nodo.JS e NPM sono installati, crea la nuova directory del progetto ~/ds18b20, come segue:

$ mkdir -v ~/ds18b20

Navigare verso il ~/ds18b20 Directory, come segue:

$ cd ~/ds18b20

Crea il vuoto pacchetto.JSON file con il seguente comando:

$ npm init - -y

Installa il Esprimere.js Libreria per il progetto con il seguente comando:

$ npm Installa -Save Express

L'Espresso.La libreria JS dovrebbe ora essere installata.

Crea il nuovo file server.js Nella directory del progetto, come segue:

$ nano server.js

Immettere le seguenti righe di codici in server.js file.

let express = requisite ('express');
let fs = requisito ('fs');
let server = express ();
port const = 8080;
const webroot = './pubblico';
server.get ('/', espresse.static (Webroot));
server.get ('/temperatura', (req, res) =>
let tempdatapath = '/sys/bus/w1/dispositivi/28-00000ba693e9/temperatura';
Lascia la temperatura = FS.readFilesync (tempDatapath, codifica: 'utf8', flag: 'r') / 1000;
res.json (temperatura, rangestart: -55, rangend: 125);
);
server.ascolt (port, () =>
console.log ('server in esecuzione sulla porta $ porta');
);

Una volta terminato, premere + X seguito da Y E Per salvare il server.file js.

Qui, le importazioni della linea 1 esprimere, e la linea 2 importa il fs modulo.

La riga 4 inizializza Express.

La riga 6 e 7 definiscono il PORTA E Webroot variabili costanti, rispettivamente. L'API e il server web si svolgeranno PORTA (che è 8080, In questo articolo) e il server web servirà contenuti statici dal Webroot (qual è pubblico/ Directory all'interno della directory del progetto in questo articolo).

La riga 9 viene utilizzata per configurare Express per servire contenuti statici da Webroot.

Linee 11-15 Definisci l'endpoint API /temperatura, che verrà utilizzato per ottenere i dati di temperatura in formato JSON.

Nella riga 12, il tempdatapath La variabile contiene il percorso assoluto a temperatura File del modulo termometro digitale DS18B20, mostrato in una sezione precedente di questo articolo.

Nella riga 13, i dati di temperatura vengono letti da temperatura File usando il nodo.Modulo JS FS e i dati di temperatura sono archiviati in temperatura variabile.

Nella riga 14, i dati di temperatura sono stampati in formato JSON. Il modulo termometro digitale DS18B20 può misurare tra le temperature da -55 ° C a 125 ° C. L'ho aggiunto nell'output JSON usando il rangestart E raggio proprietà.

Infine, la riga 17-19 esegue l'API e il server web su PORTA (che è 8080, in questo articolo).

Creare un pubblico/ Directory nella directory del progetto, come segue:

$ mkdir -v pubblico

Corri il server.js programma con il seguente comando:

$ node server.js

Il server dovrebbe essere in esecuzione sulla porta 8080.

È possibile accedere ai dati di temperatura del modulo termometro DS18B20 dal /temperatura Endpoint dell'API.

Per verificare se è possibile ottenere i dati di temperatura dall'API, eseguire arricciare, come segue:

$ CURL -S http: // localhost: 8080/temperatura | json_pp

Come puoi vedere, i dati di temperatura vengono stampati sulla console in formato JSON. Quindi, l'API funziona.

Premere + C per fermare il server.

Ora creerò una pagina Web che richiederà il server API per i dati di temperatura e la visualizzerà bene sulla pagina. I dati di temperatura verranno aggiornati ogni 5 secondi.

Crea un nuovo indice.html file in pubblico/ Directory del progetto, come segue:

$ nano pubblico/indice.html

Immettere le seguenti righe di codici in indice.html file.




Monitor di temperatura







00.00 ° C


Aggiornamenti di temperatura in ogni 5 secondi



Una volta terminato, premere + X seguito da Y E per salvare il indice.html file.

Il file HTML indice.html è facile da capire. È il formato in cui i dati di temperatura verranno visualizzati nell'app Web.

Qui, le righe 53-55 vengono utilizzate per visualizzare una barra di avanzamento e le linee 57-60 vengono utilizzate per visualizzare la temperatura.

Le righe 5-49 vengono utilizzate per decorare bene l'app Web utilizzando CSS (foglio di stile a cascata).

Le righe 62-109 vengono utilizzate per rendere funzionale l'app Web. I codici JavaScript vengono utilizzati per animare la barra di avanzamento, recuperare i dati di temperatura dall'API e visualizzare le informazioni.

La riga 63 esegue il principale funzione Una volta caricata l'app Web nel browser.

IL principale La funzione è molto lunga. Si estende dalla linea 65 alla linea 108. All'interno della funzione principale, abbiamo alcune altre funzioni, come gettemperature, updateTemperature, updateprogress, app, E inizio.

IL updateprogress La funzione, nelle righe 83-86, prende la percentuale di progressi man mano che l'input e aggiorna la barra di avanzamento.

IL updateTemperature Funzione nelle righe 77-81 prende i dati di temperatura come input e aggiorna l'app Web con i dati di temperatura.

IL gettemperature funzione nelle righe 66-75 fa una richiesta al /temperatura Endpoint dell'API e ottiene i dati di temperatura. Una volta ricevuti i dati, chiama il updateTemperature funzione con i dati. IL updateTemperature La funzione quindi aggiorna l'app Web con i nuovi dati di temperatura.

IL app La funzione, nelle righe 88-99, anima la barra di avanzamento e richiede i dati di temperatura dall'API ogni 5 secondi.

IL inizio La funzione, nelle righe 101-104, avvia l'app Web.

Apri il pacchetto.JSON File con l'editor di testo nano come segue:

pacchetto $ nano.JSON

Modifica principale A server.js e aggiungi il nuovo script servire nel Script sezione, come contrassegnato nello screenshot seguente.

Una volta terminato, premere + X seguito da Y E per salvare il pacchetto.JSON file.

Ora che tutto è pronto, esegui l'app Web e l'API con il seguente comando:

$ npm run serve

Il server dovrebbe essere in esecuzione sulla porta 8080.

Ora, apri un browser Web sul tuo dispositivo Raspberry Pi e visita http: // localhost: 8080. I dati di temperatura dal modulo termometro digitale DS18B20 devono essere visualizzati sul browser Web, come puoi vedere nello screenshot seguente.

I dati di temperatura devono essere aggiornati ogni 5 secondi.

Come puoi vedere, la temperatura cambia ogni 5 secondi.

Se si desidera accedere all'app Web da un altro computer sulla tua rete, dovrai conoscere l'indirizzo IP del tuo dispositivo Raspberry Pi.

Puoi trovare l'indirizzo IP del tuo dispositivo Raspberry Pi con il seguente comando:

$ hostname -i

Come puoi vedere, l'indirizzo IP del mio dispositivo Raspberry Pi è 192.168.0.107. Questo sarà diverso per te. Quindi, assicurati di sostituire l'indirizzo IP da ora in poi.

Una volta conosciuto l'indirizzo IP del tuo dispositivo Raspberry Pi, dovresti essere in grado di accedere all'app Web da qualsiasi computer sulla tua rete utilizzando un browser Web. Basta visitare http: // 192.168.0.107: 8080 e l'app Web dovrebbe mostrare i dati di temperatura dal modulo termometro digitale DS18B20.

Conclusione

In questo articolo, hai imparato a utilizzare il modulo termometro digitale DS18B20 in Raspberry Pi per misurare la temperatura. Hai anche imparato a creare un nodo.JS API per mostrare i dati di temperatura in un'app Web, che accede ai dati di temperatura dall'API e li visualizza. Questo articolo dovrebbe aiutarti a iniziare con il monitoraggio della temperatura Raspberry PI con il modulo termometro digitale DS18B20 e IoT con Raspberry Pi.