Sommario:
- Passaggio 1: Distinta base
- Passaggio 2: sensore di temperatura DS18B20
- Passaggio 3: collegamento dei sensori a NodeMCU
- Passaggio 4: installazione delle librerie appropriate
- Passaggio 5: test dei sensori
- Passaggio 6: utilizzo di Blynk
- Passaggio 7: conclusione
Video: IoT reso semplice: monitoraggio di più sensori: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Qualche settimana fa, ho pubblicato qui un tutorial sul monitoraggio della temperatura utilizzando un DS18B20, un sensore digitale che comunica su un bus 1-Wire, inviando dati su Internet con NodeMCU e Blynk:
IoT reso semplice: monitoraggio della temperatura ovunque
Ma quello che ci è mancato nell'esplorazione, è stato uno dei grandi vantaggi di questo tipo di sensore che è la possibilità di raccogliere più dati, da più sensori collegati allo stesso bus a 1 filo. E ora è il momento di esplorarlo anche.
Espanderemo quanto sviluppato nell'ultimo tutorial, monitorando ora due sensori DS18B20, configurati uno in Celsius e l'altro in Fahrenheit. I dati verranno inviati a un'app Blynk, come mostrato nello schema a blocchi sopra.
Passaggio 1: Distinta base
- NodoMCU ESP 12-E (*)
- 2 X DS18B20 Sensore di temperatura
- Resistore 4.7K Ohm
- Tagliere
- Cablaggio
(*) Qui è possibile utilizzare qualsiasi tipo di dispositivo ESP. I più comuni sono NodeMCU V2 o V3. Entrambi funzioneranno sempre bene.
Passaggio 2: sensore di temperatura DS18B20
Useremo in questo tutorial una versione impermeabilizzata del sensore DS18B20. È molto utile per la temperatura remota in condizioni umide, ad esempio su un terreno umido. Il sensore è isolato e può effettuare misurazioni fino a 125oC (Adafrut sconsiglia di utilizzarlo oltre i 100oC a causa della guaina in PVC del cavo).
Il DS18B20 è un sensore digitale che lo rende buono da usare anche su lunghe distanze! Questi sensori di temperatura digitali a 1 filo sono abbastanza precisi (±0,5°C su gran parte dell'intervallo) e possono fornire fino a 12 bit di precisione dal convertitore digitale-analogico integrato. Funzionano alla grande con NodeMCU utilizzando un singolo pin digitale e puoi persino collegarne più di uno allo stesso pin, ognuno ha un ID univoco a 64 bit stampato in fabbrica per differenziarli.
Il sensore funziona da 3.0 a 5.0V, il che significa che può essere alimentato direttamente da uno dei pin NodeMCU da 3.3V.
Il sensore ha 3 fili:
- Nero: GND
- Rosso: VCC
- Giallo: dati a 1 filo
Qui puoi trovare i dati completi: Scheda tecnica DS18B20
Passaggio 3: collegamento dei sensori a NodeMCU
- Collegare i 3 fili di ciascun sensore alla mini breadboard come mostrato nella foto sopra. Ho usato connettori speciali per fissare meglio il cavo del sensore su di esso.
-
Notare che entrambi i sensori sono in parallelo. Se hai più di 2 sensori, dovresti fare lo stesso.
- Rosso ==> 3.3V
- Nero ==> GND
- Giallo ==> D4
- Utilizzare un resistore da 4,7 K ohm tra VCC (3,3 V) e Dati (D4)
Passaggio 4: installazione delle librerie appropriate
Per utilizzare correttamente il DS18B20, saranno necessarie due librerie:
- OneWire
- Dallas Temperatura
Installa entrambe le librerie nel tuo deposito della libreria IDE Arduino.
Nota che la libreria OneWire DEVE essere quella speciale, modificata per essere utilizzata con ESP8266, altrimenti riceverai un errore durante la compilazione. Troverai l'ultima versione al link sopra.
Passaggio 5: test dei sensori
Per testare i sensori, scarica il file seguente dal mio GitHub:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
* Test sensore di temperatura multiplo * * 2 x OneWire Sensor: DS18B20 * Collegato a NodeMCU D4 (o Arduino Pin 2) * * Sviluppato da Marcelo Rovai - 25 agosto 2017 **************** **********************************************/ #includere # include #define ONE_WIRE_BUS 2 // DS18B20 su NodeMCU pin D4 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); void setup() { Serial.begin(115200); DS18B20.begin(); Serial.println("Test dei dati del doppio sensore"); } void loop() { float temp_0; float temp_1; DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Il sensore 0 catturerà Temp in Celsius temp_1 = DS18B20.getTempFByIndex(1); // Il sensore 0 catturerà Temp in Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println("oF"); ritardo(1000); }
Guardando il codice sopra, dovremmo notare che le righe più importanti sono:
temp_0 = DS18B20.getTempCByIndex(0); // Il sensore 0 catturerà la temperatura in Celsius
temp_1 = DS18B20.getTempFByIndex(1); // Il sensore 0 catturerà la temperatura in gradi Fahrenheit
Il primo restituirà un valore da Sensor [0] (guarda "index(0)") in Celsius (guarda la porzione di codice: "getTempC". La seconda riga è correlata a Sensor[1] e restituirà i dati in Fahrenheit. Potresti avere qui "n" sensori poiché hai un "indice" diverso per ognuno di essi.
Carica ora il codice nel tuo NodeMCU e monitora la temperatura utilizzando il monitor seriale.
La foto sopra mostra il risultato atteso. Tieni in mano ciascuno dei sensori, dovresti vedere la temperatura salire.
Passaggio 6: utilizzo di Blynk
Una volta che inizi a catturare i dati sulla temperatura, è il momento di vederli da qualsiasi luogo. Lo faremo usando Blynk. Quindi, tutti i dati acquisiti verranno visualizzati in tempo reale sul tuo dispositivo mobile e costruiremo anche un deposito storico per questo.
Segui i passaggi seguenti:
- Crea un nuovo progetto.
- Dagli un nome (nel mio caso "Dual Temperature Monitor")
- Seleziona Nuovo dispositivo - ESP8266 (WiFi) come "I miei dispositivi"
- Copia il TOKEN AUTH da utilizzare nel codice (puoi inviarlo alla tua email).
-
Include due widget "Gauge", che definiscono:
- Pin virtuale da utilizzare con ogni sensore: V10 (Sensor[0]) e V11 (Sensor[1])
- L'intervallo di temperatura: da -5 a 100 oC per il sensore [0]
- L'intervallo di temperatura: da 25 a 212 oC per il sensore [1]
- La frequenza di lettura dei dati: 1 secondo
- Include un widget "Grafico storico", che definisce V10 e V11 come pin virtuali
- Premi "Play" (il triangolo nell'angolo in alto a destra)
Ovviamente, l'app Blynk ti dirà che il NodeMCU è offline. È ora di caricare il codice completo sul tuo IDE Arduino. Puoi ottenerlo qui:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Modifica i "dati fittizi" con le tue credenziali.
/* Credenziali Blynk */
char auth = "QUI IL TUO CODICE AUTENTICO BLYNK"; /* Credenziali WiFi */ char ssid = "IL TUO SSID"; char pass = "LA TUA PASSWORD";
E questo è tutto!
Sotto il codice completo. È sostanzialmente il codice precedente, dove siamo entrati con parametri Blynk e funzioni specifiche. Nota le ultime 2 righe del codice. Questi sono i più importanti qui. Se hai più sensori che raccolgono dati, dovresti anche avere nuove linee equivalenti a quelle (con i nuovi pin virtuali pertinenti definiti).
/**************************************************************
* IoT Multiple Temperature Monitor con Blynk * La libreria Blynk è concessa in licenza con licenza MIT * Questo codice di esempio è di dominio pubblico. * * Sensore OneWire multiplo: DS18B20 * Sviluppato da Marcelo Rovai - 25 agosto 2017 ********************************* ****************************/ /* ESP & Blynk */ #include #include #define BLYNK_PRINT Serial // Commenta questo a disabilita le stampe e risparmia spazio /* Blynk credenziali */ char auth = "IL TUO CODICE DI AUTH BLYNK QUI"; /* Credenziali WiFi */ char ssid = "IL TUO SSID"; char pass = "LA TUA PASSWORD"; /* TIMER */ #include timer SimpleTimer; /* Sensore di temperatura DS18B20 */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 sul pin2 di arduino corrisponde a D4 sulla scheda fisica OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); int temp_0; int temp_1; void setup() { Serial.begin(115200); Blynk.begin(auth, ssid, pass); DS18B20.begin(); timer.setInterval(1000L, getSendData); Serial.println(" "); Serial.println("Test dei dati del doppio sensore"); } void loop() { timer.run(); // Avvia SimpleTimer Blynk.run(); } /************************************************** *** * Invia i dati del sensore a Blynk **************************************** *********/ void getSendData() { DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Il sensore 0 catturerà Temp in Celsius temp_1 = DS18B20.getTempFByIndex(1); // Il sensore 0 catturerà Temp in Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println("oF"); Blynk.virtualWrite(10, temp_0); //pin virtuale V10 Blynk.virtualWrite(11, temp_1); //pin virtuale V11 }
Una volta che il codice è stato caricato ed eseguito, controlla l'app Blynk. Ora dovrebbe funzionare anche come mostrato nella schermata di stampa sopra dal mio iPhone.
Passaggio 7: conclusione
Come sempre, spero che questo progetto possa aiutare gli altri a trovare la loro strada nell'entusiasmante mondo dell'elettronica, della robotica e dell'IoT!
Si prega di visitare il mio GitHub per i file aggiornati: NodeMCU Dual Temp Monitor
Per altri progetti, visita il mio blog: MJRoBot.org
Saludos dal sud del mondo!
Ci vediamo al mio prossimo istruttore!
Grazie, Marcelo
Consigliato:
Giocattoli adattabili all'interruttore: un treno a vapore reso accessibile!: 7 passaggi (con immagini)
Switch-Adapt Toys: un giocattolo del treno a vapore reso accessibile!: L'adattamento del giocattolo apre nuove strade e soluzioni personalizzate per consentire ai bambini con capacità motorie limitate o disabilità dello sviluppo di interagire con i giocattoli in modo indipendente. In molti casi, i bambini che richiedono i giocattoli adattati non sono in grado di int
Giocattoli adattabili all'interruttore: un camion dei pompieri WolVol reso accessibile!: 7 passaggi
Switch-Adapt Toys: un camion dei pompieri WolVol reso accessibile!: L'adattamento del giocattolo apre nuove strade e soluzioni personalizzate per consentire ai bambini con capacità motorie limitate o disabilità dello sviluppo di interagire con i giocattoli in modo indipendente. In molti casi, i bambini che richiedono i giocattoli adattati non sono in grado di int
Il più semplice misuratore di temperatura e umidità IoT: 5 passaggi (con immagini)
Il più semplice misuratore di temperatura e umidità IoT: il più semplice misuratore di temperatura e umidità IoT consente di raccogliere temperatura, umidità e indice di calore. Quindi inviali ad Adafruit IO
Kit per auto di monitoraggio robot intelligente fai-da-te Monitoraggio fotosensibile dell'auto: 7 passaggi
Fai da te Smart Robot Tracking Car Kit Tracking Car Photosensitive: Design by SINONING ROBOTÈ possibile acquistare da tracking robot carTheoryLM393 chip confrontare i due fotoresistori, quando c'è un LED fotoresistore laterale su BIANCO il lato del motore si fermerà immediatamente, l'altro lato del motore girare, in modo che
Giocattoli che si adattano all'interruttore: Uovo di serpente telecomandato reso accessibile!: 7 passaggi (con immagini)
Giocattoli adattati all'interruttore: serpente telecomandato reso accessibile dalle uova!: l'adattamento dei giocattoli apre nuove strade e soluzioni personalizzate per consentire ai bambini con capacità motorie limitate o disabilità dello sviluppo di interagire con i giocattoli in modo indipendente. In molti casi, i bambini che richiedono i giocattoli adattati non sono in grado di int