Cuprins:
- Pasul 1: Lista materialelor
- Pasul 2: senzor de temperatură DS18B20
- Pasul 3: Conectarea senzorilor la NodeMCU
- Pasul 4: Instalarea bibliotecilor adecvate
- Pasul 5: Testarea senzorilor
- Pasul 6: Utilizarea Blynk
- Pasul 7: Concluzie
Video: IoT simplificat: monitorizarea mai multor senzori: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
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
- 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.
-
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
- 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:
- OneWire
- 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
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
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:
- Creați un proiect nou.
- Dați-i un nume (în cazul meu „Monitor de temperatură dublă”)
- Selectați dispozitiv nou - ESP8266 (WiFi) ca „Dispozitivele mele”
- Copiați AUTH TOKEN pentru a fi utilizat în cod (îl puteți trimite la adresa dvs. de e-mail).
-
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ă
- Include un widget „History Graph”, care definește V10 și V11 ca pini virtuali
- 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
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:
Eliminați fundalul mai multor imagini utilizând Photoshop 2020: 5 pași
Eliminați fundalul mai multor imagini folosind Photoshop 2020: Eliminarea fundalului unei imagini este foarte ușor acum! Acesta este modul în care se utilizează Adobe Photoshop 2020 pentru a elimina fundalul mai multor imagini (lot) utilizând un script simplu
Cultivarea mai multor salată în spațiu mai mic sau Cultivarea salatei în spațiu, (mai mult sau mai puțin) .: 10 pași
Cultivarea mai multor salată în spațiu mai mic sau … Cultivarea salată în spațiu, (mai mult sau mai puțin). Nu aș putea fi mai încântat să proiectez pentru producția de culturi spațiale și să postez primul meu Instructable. Pentru a începe, concursul ne-a cerut
Controlul mai multor LED-uri cu Python și pinii GPIO ai Raspberry Pi: 4 pași (cu imagini)
Controlul mai multor LED-uri cu Python și pinii GPIO ai Raspberry Pi: Acest instructiv demonstrează cum să controlați mai mulți pin-uri GPIO de pe RaspberryPi pentru a alimenta 4 LED-uri. Vă va prezenta, de asemenea, parametrii și declarațiile condiționale în Python. Instrucțiunile noastre anterioare Utilizarea pinilor GPIO ai Raspberry Pi pentru a
Utilizarea a mai mult de 4 motoare - Stivuirea mai multor paravane: 3 pași
Utilizarea a mai mult de 4 motoare - Stivuirea mai multor ecrane de protecție: dispozitivul de înlocuire senzorială și augmentare senzorială vibrotactilă (https: //www.instructables.com/id/Vibrotactile-Sens …) arată o modalitate de a construi un dispozitiv care traduce un senzorial intrare în stimuli vibratori. Acei stimuli vibratori sunt p
Conectarea mai multor butoane la un singur pin pe Arduino: 4 pași
Conectarea mai multor butoane la un singur pin pe Arduino: Bună tuturor, când proiectele dvs. Arduino au depășit LED-urile intermitente, este posibil să aveți nevoie de niște pini suplimentari. Vă voi arăta un truc pe care îl puteți folosi acolo unde puteți avea mai multe butoane, toate conectate la același pin analogic