Cuprins:

IoT simplificat: monitorizarea mai multor senzori: 7 pași
IoT simplificat: monitorizarea mai multor senzori: 7 pași

Video: IoT simplificat: monitorizarea mai multor senzori: 7 pași

Video: IoT simplificat: monitorizarea mai multor senzori: 7 pași
Video: Monitorizați de la distanță consumul de energie al casei dvs. | PZEM-004T | RemoteXY IoT Cloud 2024, Iulie
Anonim
IoT simplificat: monitorizarea mai multor senzori
IoT simplificat: monitorizarea mai multor senzori
IoT simplificat: monitorizarea mai multor senzori
IoT simplificat: monitorizarea mai multor senzori

Acum câteva săptămâni, am publicat aici un tutorial despre monitorizarea temperaturii folosind un DS18B20, un senzor digital care comunică printr-un autobuz cu 1 fir, trimitând date prin internet cu NodeMCU și Blynk:

IoT simplificat: monitorizarea temperaturii oriunde

Dar ceea ce ne-a lipsit în explorare a fost unul dintre marile avantaje ale acestui tip de senzor, care este posibilitatea de a colecta mai multe date, de la mai mulți senzori conectați la același autobuz cu 1 fir. Și acum este timpul să o explorăm.

Vom extinde ceea ce a fost dezvoltat pe ultimul tutorial, monitorizând acum doi senzori DS18B20, configurați unul în Celcius și celălalt în Fahrenheit. Datele vor fi trimise către o aplicație Blynk, așa cum se arată în diagrama bloc de mai sus.

Pasul 1: Lista materialelor

  • NodeMCU ESP 12-E (*)
  • 2 X senzor de temperatură DS18B20
  • Rezistor 4.7K ohmi
  • BreadBoard
  • Cablare

(*) Orice tip de dispozitiv ESP poate fi utilizat aici. Cele mai frecvente sunt NodeMCU V2 sau V3. Ambele vor funcționa întotdeauna bine.

Pasul 2: senzor de temperatură DS18B20

Senzor de temperatură DS18B20
Senzor de temperatură DS18B20

Vom folosi în acest tutorial o versiune impermeabilizată a senzorului DS18B20. Este foarte util pentru temperaturi îndepărtate în condiții umede, de exemplu pe un sol umed. Senzorul este izolat și poate lua măsurători până la 125oC (Adafrut nu recomandă utilizarea acestuia peste 100oC datorită căptușelii din PVC din cablu).

DS18B20 este un senzor digital, ceea ce îl face bine să fie folosit chiar și pe distanțe mari! Acești senzori de temperatură digitale cu 1 fir sunt destul de preciși (± 0,5 ° C în mare parte) și pot oferi până la 12 biți de precizie de la convertorul digital-analog la bord. Funcționează excelent cu NodeMCU folosind un singur pin digital și puteți chiar conecta mai multe pe același pin, fiecare are un ID unic pe 64 de biți ars din fabrică pentru a le diferenția.

Senzorul funcționează de la 3,0 la 5,0 V, ceea ce înseamnă că poate fi alimentat direct de la unul dintre pinii NodeMCU de 3,3 V.

Senzorul are 3 fire:

  • Negru: GND
  • Roșu: VCC
  • Galben: date cu 1 fir

Aici, puteți găsi datele complete: Foaie de date DS18B20

Pasul 3: Conectarea senzorilor la NodeMCU

Conectarea senzorilor la NodeMCU
Conectarea senzorilor la NodeMCU
  1. Conectați cele 3 fire de la fiecare senzor la mini Breadboard așa cum se arată în fotografia de mai sus. Am folosit conectori speciali pentru a fixa mai bine cablul senzorului pe el.
  2. Rețineți că ambii senzori sunt în paralel. Dacă aveți mai mult de 2 senzori, ar trebui să faceți același lucru.

    • Roșu ==> 3.3V
    • Negru ==> GND
    • Galben ==> D4
  3. Folosiți un rezistor de 4.7K ohmi între VCC (3.3V) și Date (D4)

Pasul 4: Instalarea bibliotecilor adecvate

Pentru a utiliza corect DS18B20, vor fi necesare două biblioteci:

  1. OneWire
  2. DallasTemperature

Instalați ambele biblioteci în depozitul dvs. Arduino IDE Library.

Rețineți că biblioteca OneWire TREBUIE să fie cea specială, modificată pentru a fi utilizată cu ESP8266, altfel veți primi o eroare în timpul compilării. Veți găsi ultima versiune la linkul de mai sus.

Pasul 5: Testarea senzorilor

Testarea senzorilor
Testarea senzorilor

Pentru testarea senzorilor, descărcați fișierul de mai jos de pe GitHub:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

* Test de transmitere a temperaturii multiple * * 2 x OneWire Sensor: DS18B20 * Conectat la NodeMCU D4 (sau Arduino Pin 2) * * Dezvoltat de Marcelo Rovai - 25 august 2017 **************** **********************************************/ #include # include #define ONE_WIRE_BUS 2 // DS18B20 pe pinul NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Testarea datelor senzorului dublu"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzorul 0 va captura Temp în Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzorul 0 va captura Temp în Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); întârziere (1000); }

Privind codul de mai sus, ar trebui să observăm că cele mai importante linii sunt:

temp_0 = DS18B20.getTempCByIndex (0); // Senzorul 0 va captura Temp în Celcius

temp_1 = DS18B20.getTempFByIndex (1); // Senzorul 0 va captura Temp în Fahrenheit

Primul va returna o valoare de la Senzor [0] (uită-te la „index (0)”) în Celcius (uită-te la porțiunea codului: „getTempC”. A doua linie este legată de Senzor [1] și va returna date în Fahrenheit. Ați putea avea aici senzori „n”, deoarece aveți un „index” diferit pentru fiecare dintre ei.

Încărcați acum codul în NodeMCU și monitorizați temperatura utilizând Serial Monitor.

Fotografia de mai sus arată rezultatul scontat. Țineți fiecare dintre senzori în mână, ar trebui să vedeți că temperatura crește.

Pasul 6: Utilizarea Blynk

Folosind Blynk
Folosind Blynk
Folosind Blynk
Folosind Blynk

Odată ce ați început să captați date despre temperatură, este timpul să le vedeți de oriunde. Vom face acest lucru folosind Blynk. Deci, toate datele capturate vor fi afișate în timp real pe dispozitivul dvs. mobil și, de asemenea, vom construi un depozit istoric pentru asta.

Urmați pașii de mai jos:

  1. Creați un proiect nou.
  2. Dați-i un nume (în cazul meu „Monitor de temperatură dublă”)
  3. Selectați dispozitiv nou - ESP8266 (WiFi) ca „Dispozitivele mele”
  4. Copiați AUTH TOKEN pentru a fi utilizat în cod (îl puteți trimite la adresa dvs. de e-mail).
  5. Include două widget-uri „Gauge”, care definesc:

    • Pin virtual care trebuie utilizat cu fiecare senzor: V10 (senzor [0]) și V11 (senzor [1])
    • Intervalul de temperatură: -5 până la 100 oC pentru senzor [0]
    • Intervalul de temperatură: 25 - 212 oC pentru senzor [1]
    • Frecvența de citire a datelor: 1 secundă
  6. Include un widget „History Graph”, care definește V10 și V11 ca pini virtuali
  7. Apăsați „Redare” (Triunghiul din colțul din dreapta sus)

Desigur, aplicația Blynk vă va informa că NodeMCU este offline. Este timpul să încărcați codul complet la ID-ul dvs. Arduino. O puteți obține aici:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Schimbați „datele fictive” cu propriile acreditări.

/ * Acreditări Blynk * /

char auth = "CODUL TAU BLYNK AUTH AICI"; / * Acreditări WiFi * / char ssid = "SSID-UL TĂU"; char pass = "PAROLA DUMNEAVOASTRĂ";

Si asta e!

Mai jos codul complet. Este practic codul anterior, unde am intrat cu parametrii Blynk și funcții specifice. Rețineți ultimele 2 linii ale codului. Acestea sunt cele mai importante aici. Dacă aveți mai mulți senzori care colectează date, ar trebui să aveți, de asemenea, linii noi echivalente cu acelea (cu noi pini virtuali pertinenți definiți).

/**************************************************************

* Monitor de temperatură multiplă IoT cu Blynk * Biblioteca Blynk este licențiată sub licență MIT * Acest exemplu de cod este în domeniul public. * * Senzor OneWire multiplu: DS18B20 * Dezvoltat de Marcelo Rovai - 25 august 2017 ********************************* **************************** / / * ESP & Blynk * / #include #include #define BLYNK_PRINT Serial // Comentează asta la dezactivați tipăririle și economisiți spațiu / * acreditări Blynk * / char auth = "CODUL AUTOR BLYNK AICI"; / * Acreditări WiFi * / char ssid = "SSID-UL TĂU"; char pass = "PAROLA DUMNEAVOASTRĂ"; / * TIMER * / #include temporizatorul SimpleTimer; / * Senzor de temperatură DS18B20 * / #include #include #define ONE_WIRE_BUS 2 // DS18B20 pe arduino pin2 corespunde D4 pe placa fizică 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 ("Testarea datelor senzorului dublu"); } void loop () {timer.run (); // Inițiază SimpleTimer Blynk.run (); } / ************************************************ *** * Trimiteți datele senzorului către Blynk ****************************************** ********* / void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzorul 0 va captura Temp în Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzorul 0 va captura Temp în 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 virtual V10 Blynk.virtualWrite (11, temp_1); // pinul virtual V11}

După ce codul este încărcat și rulat, verificați aplicația Blynk. Ar trebui să ruleze acum, așa cum se arată în ecranul de imprimare de mai sus de pe iPhone.

Pasul 7: Concluzie

Concluzie
Concluzie

Ca întotdeauna, sper că acest proiect îi poate ajuta pe ceilalți să își găsească drumul în lumea interesantă a electronicii, roboticii și IoT!

Vă rugăm să vizitați GitHub pentru fișierele actualizate: NodeMCU Dual Temp Monitor

Pentru mai multe proiecte, vă rugăm să vizitați blogul meu: MJRoBot.org

Salude din sudul lumii!

Ne vedem la următorul meu instructabil!

Mulțumesc, Marcelo

Recomandat: