Sommario:

IoT reso semplice: monitoraggio di più sensori: 7 passaggi
IoT reso semplice: monitoraggio di più sensori: 7 passaggi

Video: IoT reso semplice: monitoraggio di più sensori: 7 passaggi

Video: IoT reso semplice: monitoraggio di più sensori: 7 passaggi
Video: Recensione Aqara sensor P1 e lumi - Integrazione in home assistant con zigbee2mqtt 2024, Novembre
Anonim
IoT reso semplice: monitoraggio di più sensori
IoT reso semplice: monitoraggio di più sensori
IoT reso semplice: monitoraggio di più sensori
IoT reso semplice: monitoraggio di più sensori

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

Sensore di temperatura DS18B20
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

Collegamento dei sensori a NodeMCU
Collegamento dei sensori a NodeMCU
  1. 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.
  2. 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
  3. 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:

  1. OneWire
  2. 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

Testare i sensori
Testare i 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

Usando Blynk
Usando Blynk
Usando Blynk
Usando 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:

  1. Crea un nuovo progetto.
  2. Dagli un nome (nel mio caso "Dual Temperature Monitor")
  3. Seleziona Nuovo dispositivo - ESP8266 (WiFi) come "I miei dispositivi"
  4. Copia il TOKEN AUTH da utilizzare nel codice (puoi inviarlo alla tua email).
  5. 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
  6. Include un widget "Grafico storico", che definisce V10 e V11 come pin virtuali
  7. 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

Conclusione
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: