Sommario:

Server dati IoT a doppia temperatura: 12 passaggi (con immagini)
Server dati IoT a doppia temperatura: 12 passaggi (con immagini)

Video: Server dati IoT a doppia temperatura: 12 passaggi (con immagini)

Video: Server dati IoT a doppia temperatura: 12 passaggi (con immagini)
Video: IoT in pillole e applicazioni 2024, Giugno
Anonim
Server dati IoT a doppia temperatura
Server dati IoT a doppia temperatura

Questo è il mio primo tentativo di scrivere un Instructable e quindi per favore vacci piano con me! Se pensi che questo non sia male, per favore votami per il First Time Author Contest.

Questo è il mio progetto Lock-Down per monitorare a distanza 2 temperature in una serra, una a livello del pavimento e una appena sotto il tetto. Sebbene avessi già usato Raspberry Pi (RPi), questo progetto ha coinvolto diversi elementi che non avevo usato e lungo la strada ho trovato diversi tutorial obsoleti o semplicemente sbagliati. Questa è la mia raccolta di conoscenze per realizzare un doppio monitor di temperatura remoto funzionante da un Pi Zero e 2 sensori di temperatura digitali a un filo DS18B20+ acquisiti lungo la strada.

Cose che ho imparato su:

  • Rendere disponibili i dati da un dispositivo come parte dell'Internet of Things (IoT)
  • Interfaccia 1-Wire con 2 dispositivi
  • Dataplicity
  • Dati JSON
  • Configurazione del firewall UFW
  • Usare Freeboard.io per visualizzare i dati
  • Configurazione dell'RPi per l'esecuzione automatica del programma

Ci sono enormi quantità di dati che possono essere trovati con una semplice ricerca su tutti questi argomenti, ma ciò che non è così chiaro è come combinare tutti questi elementi separati.

Forniture

  • Avrai bisogno di un Raspberry Pi (con monitor, mouse e tastiera per la configurazione ma non durante l'esecuzione del progetto finito)
  • Una connessione Internet funzionante.
  • Un alimentatore con un connettore Micro USB
  • 2 dei sensori di temperatura digitali a un filo DS18B20+. Ho scoperto che Amazon era il più economico
  • Resistore da 4K7 ohm o ho usato 2 resistori da 10K ohm.
  • Piccola breadboard e pochi fili maschio/femmina per prove al banco
  • Piccolo pezzo di listellare per l'assemblaggio finale
  • Strumenti semplici per la saldatura e la spelatura dei fili.
  • Piccola scatola di plastica per ospitare il disegno finito

Passaggio 1: hardware

Hardware
Hardware
Hardware
Hardware

Avevo già un Raspberry Pi Zero W (con wireless) ma sono sicuro che questo semplice progetto funzionerà bene su qualsiasi RPI. La scatola di strani bit elettronici nel mio laboratorio aveva tutto il resto (breadboard, filo, alimentatore ecc.) E quindi tutto ciò che dovevo comprare erano due sensori 2 x DS18B20 da Amazon. Questi sono i normali chip DS18B20 semplicemente montati in un alloggiamento impermeabile e un cavo da 3 m. Ci sono 3 fili dal cavo:

  • Rosso – alimentazione – collegare al pin 3.3v 1
  • Nero – ritorno – collegare al pin di massa 6
  • Giallo – dati – connettersi al pin 7. GPIO4

I sensori utilizzano l'interfaccia 1-Wire ed erano molto facili da collegare e da cui ottenere dati. Ci sono diverse pagine sul Web con i dettagli per la connessione di 1 dispositivo ma molto poco per la connessione di 2 (o più).

Per il test al banco, il circuito è stato assemblato utilizzando una breadboard. I tutorial che ho trovato affermano di utilizzare un resistore 4K7 per polarizzare la linea dati, ma non sono riuscito a trovarne uno e quindi ho usato 2 * 10K in parallelo e ha funzionato bene. Ci sono molte risorse sul Web per utilizzare una breadboard per assemblare circuiti RPi e quindi non le ripeterò qui.

Diagramma creato utilizzando Circuit Diagram

Passaggio 2: installazione del software del sistema operativo Raspberry Pi

Configurazione del software del sistema operativo Raspberry Pi
Configurazione del software del sistema operativo Raspberry Pi
Configurazione del software del sistema operativo Raspberry Pi
Configurazione del software del sistema operativo Raspberry Pi
Configurazione del software del sistema operativo Raspberry Pi
Configurazione del software del sistema operativo Raspberry Pi

Poiché avevo già utilizzato questo RPi, ho deciso di iniziare con un'installazione pulita del sistema operativo, ho riformattato la scheda SD e installato una versione pulita di NOOBS. Ho quindi installato la versione desktop completa di Raspian (l'opzione migliore) in quanto ciò installerebbe anche PIP e GIT che la versione lite non lo fa. Anche se non avevo bisogno dell'interfaccia grafica utente (GUI) per il progetto, è un modo semplice per configurare tutte le opzioni e con una scheda SD da 16 GB non mancava lo spazio.

Ho impostato l'accesso WI-FI, quindi ho eseguito l'installazione completa e quindi la procedura guidata con aggiornamenti e aggiornamenti, ecc. Utilizzando la GUI, ho impostato l'RPI in base alle esigenze solo perché l'utilizzo della GUI è più semplice dell'interfaccia della riga di comando (CLI). Sono andato alla finestra di configurazione dal menu e poi:

  • Nella scheda di sistema, ho cambiato la password, impostato per l'avvio su CLI e deselezionato Accesso automatico
  • Nella scheda interfacce, ho abilitato 1-wire
  • Ho fatto clic su ok e riavviato

Se hai bisogno di tornare alla GUI in qualsiasi momento, digita startx nella CLI

startx

Passaggio 3: impostare Dataplicity per consentire l'accesso remoto

Imposta Dataplicity per consentire l'accesso remoto
Imposta Dataplicity per consentire l'accesso remoto
Imposta Dataplicity per consentire l'accesso remoto
Imposta Dataplicity per consentire l'accesso remoto
Imposta Dataplicity per consentire l'accesso remoto
Imposta Dataplicity per consentire l'accesso remoto

Ho trovato un articolo di blog davvero utile sul sito di Dataplicity all'indirizzo https://blog.dataplicity.com/how-to-build-a-raspb… e ne ho utilizzato alcune parti. La sezione 3 del blog descrive la configurazione di Dataplicity per l'accesso remoto all'RPi. Non ho mai usato Dataplicity prima, ma devo dire che lo consiglio vivamente come strumento di accesso remoto molto semplice. Sebbene gli screenshot (nel blog sopra) siano un po' datati, il principio va bene.

Sul tuo PC, vai su Dataplicity.com e crea un account (potresti usare il browser nella GUI, ma piuttosto lento su RPi Zero). Quindi fare clic sul pulsante "aggiungi nuovo dispositivo" e una riga di codice viene visualizzata nella finestra pop-up. Quindi vai alla CLI su RPi e digita la riga di testo. Se tutto è a posto, verrà visualizzato il logo Dataplicity e il programma di installazione verrà eseguito.

Tornato sul tuo PC, il nuovo dispositivo dovrebbe ora apparire sul sito Web di Dataplicity. Fai clic sul dispositivo e dovresti vedere una schermata del terminale per il tuo RPi.

Ci sono alcune cose da notare qui:

  • Per accedere, digita "su pi" (per l'accesso come superutente) e ti verrà richiesta la password (come impostata in precedenza)
  • Devi abilitare Wormhole (da usare in seguito)
  • Avrai bisogno dell'indirizzo Wormhole per visualizzare i dati in un secondo momento (fai clic con il pulsante destro del mouse per copiare quando necessario)

È possibile utilizzare questo accesso remoto per tutti i passaggi seguenti ed è molto più semplice per copiare dati, programmi, ecc. che direttamente sull'RPi.

Passaggio 4: Controlla i sensori

Ora puoi utilizzare Dataplicity per l'accesso remoto a RPI per tutte le sezioni successive.

Se ora tutto è collegato correttamente, dovresti essere in grado di vedere le temperature restituite dai DS18B20. Ho lavorato sul tutorial di Pi Hut ma la maggior parte di questo non era richiesto. Se vuoi i dettagli completi li puoi trovare qui:

I bit importanti sono andare alla directory dei dispositivi e assicurarsi che vengano visualizzati 2 sensori diversi.

cd /sys/bus/w1/dispositivi/

Questo dovrebbe mostrare 2 dispositivi che iniziano con 28- e il bus master. Il mio mostra:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Questi 2 numeri ID sono importanti e saranno necessari in seguito! Quindi passare a una delle directory dei sensori:

cd 28-011453ebfdaa

(ad esempio) e poi leggere il valore dal sensore

gatto w1_slave

Dovrebbero essere visualizzate 2 righe di testo:

53 01 4b 46 7f ff 0c 10 2d: crc=2d SI

53 01 4b 46 7f ff 0c 10 2d t=21187

Il S mostra che il sensore sta leggendo correttamente e il 21187 mostra la temperatura in gradi Celsius di 21,187 (divisione per 1000) Ripetere questa operazione per controllare il secondo sensore. Se entrambi leggono bene, possiamo passare alla lettura dei dati con Python3.

Ho copiato e adattato il seguente codice che ho trovato sul Web ma non ricordo da dove. Se questo sembra il tuo codice, mi scuso perché non era previsto alcun plagio; per favore fatemelo sapere e riconoscerò il vostro lavoro.

Crea una directory chiamata project e passa a quella directory.

mkdir ~/progetti

cd ~/progetti

In questa directory, usa l'editor di testo (nano) per creare e modificare un file chiamato thermo-test.py

sudo nano thermo-test.py

Questo dovrebbe aver aperto l'editor e poiché stai usando Dataplicity, puoi semplicemente copiare il seguente codice qui sotto (thermo-test.py) e incollarlo nell'editor. Sarà necessario modificare i 2 nomi dei dispositivi (a partire da 28-…) con quelli indicati sopra. Quando tutto sembra corretto, premi ctrl+X per terminare, Y per salvare e tornare a utilizzare il nome esistente. Se preferisci usare la GUI, Thonny farà lo stesso.

Per eseguire il programma di prova:

sudo python3 thermo-test.py

Se tutto va bene, questo dovrebbe eseguire il file usando python 3 e stampare sullo schermo le 2 temperature ogni 10 secondi. Puoi verificare che tutto sia ok posizionando 1 sensore in acqua ghiacciata o riscaldandolo delicatamente con un asciugacapelli. Se tutto sembra a posto, allora possiamo andare avanti!

Passaggio 5: firewall UFW

UFW Firewall
UFW Firewall

Poiché questo RPi sarebbe stato permanentemente connesso a Internet, ho deciso che un firewall sarebbe stato una buona idea e uno semplice da usare è Uncomplicated Firewall (ufw). C'è un tutorial molto semplice qui

Non sto andando molto in profondità in quanto questo non è lo scopo di questo Instructable, ma in breve:

Installa il firewall con:

sudo apt-get install ufw

Imposta le regole predefinite:

sudo ufw default allow outgoing

sudo ufw default nega in arrivo

Apri la porta 80 per Dataplicity

sudo ufw consenti 80

Abilita il firewall

sudo ufw enable

Controlla lo stato e assicurati che tutto funzioni

sudo ufw status

Passaggio 6: invio dei dati sulla temperatura come JSON

Invio dei dati sulla temperatura come JSON
Invio dei dati sulla temperatura come JSON

Torna al blog di Tim Fernando e alla sezione 5.

Segui i passaggi come indicato (tranne che abbiamo già creato la directory dei progetti) e tutto dovrebbe funzionare correttamente. Usando GIT scaricherai i file dell'applicazione di Tim e il PIP assicurerà che tutti i programmi richiesti siano installati sul tuo RPi. Ho quindi scoperto che dovevo riavviare per assicurarmi che tutti i pacchetti fossero impostati correttamente.

Quindi esegui il programma di Tim e il tuo RPi dovrebbe fornire i dati JSON per il primo sensore.

cd home/pi/progetti/ temperatura-serve-pi

sudo gunicorn temperatura: app -b 0.0.0.0: 80

Puoi continuare attraverso il blog fino alla sezione 6 dove troverai i dati forniti per 1 dei sensori.

Puoi anche utilizzare JSON Viewer per vedere i dati https://codebeautify.org/jsonviewer Fare clic sul pulsante "carica URL" e incollare l'indirizzo Wormhole indicato in precedenza. Nel riquadro di sinistra, dovresti vedere due voci, una per Celsius e una per Fahrenheit.

Passaggio 7: inviare dati da entrambi i sensori

Invia dati da entrambi i sensori
Invia dati da entrambi i sensori

Sulla base del codice in temperature.py e thermo-test.py, ho creato 2temps.py Modificato come prima nella directory /projects/temperature-serve-pi, incollato nel codice e salvato. poi ho corso

sudo gunicorn 2temps:app -b 0.0.0.0:80

Ora, quando ho eseguito nuovamente JSON Viewer, ho ottenuto i valori per temp1 e temp2

Successo:)

Passaggio 8: avvio automatico

Avvio automatico
Avvio automatico

Poiché l'alimentazione alla serra viene interrotta occasionalmente, volevo che l'RPi caricasse automaticamente il programma e iniziasse a provare i dati. Il modo più semplice sembra essere quello di modificare il file rc.local e aggiungere il codice richiesto in basso appena sopra la riga di uscita 0.

cd ecc

sudo nan rc.local

quindi add-in

dormire 10

cd home/pi/progetti/temperature-serve-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &

  • Il & alla fine dice al computer di eseguire lo script in una sottoshell in modo che il tuo computer non aspetti la fine della funzione e continui con l'avvio
  • Sleep 10 [secondi] si assicura che tutte le operazioni precedenti siano state completate prima di avviare il servizio.

Esci e salva come prima. Quindi riavviare ed eseguire nuovamente JSON Viewer per verificare che tutto sia a posto.

Se vuoi maggiori informazioni sui programmi in esecuzione automatica, c'è un ottimo tutorial qui

Passaggio 9: visualizzare i dati su Freeboard.io (1)

Visualizza i dati su Freeboard.io (1)
Visualizza i dati su Freeboard.io (1)

I passaggi nel blog di Tim funzionano bene, in sintesi; creare un account su www.freeboard.io e quindi creare un nuovo Freeboard, ho chiamato il mio SHEDTEMPERATURES.

Innanzitutto, aggiungi un'origine dati, fai clic su AGGIUNGI in alto a destra e dal pop-up seleziona JSON come tipo, dai un NOME all'origine dati, aggiungi l'indirizzo del wormhole precedente come URL e fai clic su NO per PROVA THINGPROXY. Le temperature cambiano solo molto lentamente, quindi AGGIORNARE OGNI 15 SECONDI va bene. Fare clic su SALVA.

Passaggio 10: visualizzare i dati su Freeboard.io (2)

Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)
Visualizza i dati su Freeboard.io (2)

Fare clic su AGGIUNGI PANNELLO e poi su + per aggiungere il primo widget. Puoi selezionare e giocare con vari tipi, ma ho scoperto che Gauge andava bene. Assegna un TITOLO, UNITÀ (C), MINIMO e MASSIMO adatti alla tua applicazione. Per DATASOURCE, fare clic sul + e apparirà la sorgente creata sopra.

Il menu a discesa dovrebbe ora mostrare le 2 origini dati JSON (temp2 e temp2) create in precedenza. Seleziona la fonte appropriata e fai clic su Salva.

Ripeti questo per il secondo calibro e siamo a posto.

I dati dovrebbero ora essere visualizzati sui 2 indicatori e se hai ancora il PRi collegato a un monitor, dovresti vedere le richieste di Freeboard.io non appena arrivano.

Passaggio 11: costruisci il progetto in una scatola

Costruisci il progetto in una scatola
Costruisci il progetto in una scatola
Costruisci il progetto in una scatola
Costruisci il progetto in una scatola
Costruisci il progetto in una scatola
Costruisci il progetto in una scatola
Costruisci il progetto in una scatola
Costruisci il progetto in una scatola

Fino a quel momento, l'RPi e gli altri componenti erano stati tutti assemblati sul banco utilizzando una breadboard. Un piccolo pezzo di stripboard è stato quindi utilizzato per sostituire la breadboard e i cavi sono stati tutti saldati in posizione.

È stata trovata una piccola scatola di immagazzinaggio Lego rosa brillante che aveva molto spazio e dove l'RPI non si surriscaldava. sono stati praticati dei fori sui lati della scatola e sono stati utilizzati pilastri di montaggio in nylon da 3 mm per tenere in posizione l'RPi e lo stripboard.

Sono necessarie solo 3 connessioni da GPIO, 3.3v, GND e dati.

  • 3.3vdc pin 1
  • GND pin 6
  • Dati (GPIO4) pin 7

Nella scatola sono stati aggiunti anche i fori per l'alimentazione USB e i cavi per i sensori di temperatura. Una volta che tutto è stato montato in posizione, è stata aggiunta una piccola quantità di sigillante siliconico per garantire che i ragni non pensassero che fosse un bel posto caldo dove passare l'inverno!

Passaggio 12: finito

Finito
Finito
Finito
Finito

La scatola è stata inserita nella serra e alimentata da un caricatore USB. I due sensori sono stati posizionati uno vicino alla parte superiore della serra e l'altro su un vaso di piante per controllare quanto freddo stavano diventando le piantine durante la notte.

Questo è il mio primo Instructable e spero che tu pensi che vada bene. Se trovate errori fatemelo sapere e modificherò dove richiesto. Il prossimo passo potrebbe essere quello di registrare i dati ogni (diciamo) 60 secondi, ma questo verrà dopo.

Consigliato: