Indholdsfortegnelse:
- Trin 1: Regning af materiale
- Trin 2: DS18B20 Temperatursensor
- Trin 3: Tilslutning af sensorerne til NodeMCU
- Trin 4: Installation af de relevante biblioteker
- Trin 5: Test af sensorerne
- Trin 6: Brug af Blynk
- Trin 7: Konklusion
Video: IoT Made Simple: Overvågning af flere sensorer: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
For et par uger siden offentliggjorde jeg her en vejledning om overvågning af temperatur ved hjælp af en DS18B20, en digital sensor, der kommunikerer over en 1-Wire bus, der sender data over internettet med NodeMCU og Blynk:
IoT Made Simple: Overvågning af temperaturen hvor som helst
Men det, vi savnede i efterforskning, var en af de store fordele ved denne slags sensorer, der er muligheden for at indsamle flere data fra flere sensorer forbundet til den samme 1-leder bus. Og nu er det tid til også at udforske det.
Vi vil udvide det, der blev udviklet på den sidste vejledning, og overvåge nu to DS18B20 -sensorer, konfigureret en i Celcius og den anden i Fahrenheit. Dataene sendes til en Blynk -app, som vist i blokdiagrammet ovenfor.
Trin 1: Regning af materiale
- NodeMCU ESP 12-E (*)
- 2 X DS18B20 temperatursensor
- Modstand 4,7K ohm
- Brødbræt
- Ledninger
(*) Enhver type ESP -enhed kan bruges her. Den mest almindelige er NodeMCU V2 eller V3. Begge vil altid fungere fint.
Trin 2: DS18B20 Temperatursensor
Vi vil i denne vejledning bruge en vandtæt version af DS18B20 -sensoren. Det er meget nyttigt til fjern temperatur i våde forhold, for eksempel på en fugtig jord. Sensoren er isoleret og kan foretage målinger indtil 125oC (Adafrut anbefaler ikke at bruge den over 100oC på grund af dens kabel -PVC -kappe).
DS18B20 er en digital sensor, der gør det godt at bruge selv over lange afstande! Disse 1-tråds digitale temperatursensorer er ret præcise (± 0,5 ° C over meget af området) og kan give op til 12 bits præcision fra den indbyggede digital-til-analoge omformer. De fungerer godt med NodeMCU ved hjælp af en enkelt digital pin, og du kan endda slutte flere til den samme pin, hver har et unikt 64-bit ID, der er indbrændt på fabrikken for at differentiere dem.
Sensoren fungerer fra 3,0 til 5,0V, hvilket betyder, at den kan drives direkte fra en af de 3,3V NodeMCU -ben.
Sensoren har 3 ledninger:
- Sort: GND
- Rød: VCC
- Gul: 1-tråds data
Her kan du finde de fulde data: DS18B20 Datablad
Trin 3: Tilslutning af sensorerne til NodeMCU
- Tilslut de 3 ledninger fra hver sensor på mini -brødbrættet som vist på billedet ovenfor. Jeg brugte specielle stik til bedre at fastgøre sensorens kabel på det.
-
Bemærk, at begge sensorer er parallelle. Hvis du har mere end 2 sensorer, bør du gøre det samme.
- Rød ==> 3,3V
- Sort ==> GND
- Gul ==> D4
- Brug en 4,7K ohm modstand mellem VCC (3,3V) og data (D4)
Trin 4: Installation af de relevante biblioteker
For at bruge DS18B20 korrekt skal to biblioteker være nødvendige:
- OneWire
- Dallas Temperatur
Installer begge biblioteker i dit Arduino IDE -bibliotek.
Bemærk, at OneWire -biblioteket SKAL være det specielle, ændret til brug med ESP8266, ellers får du en fejl under kompilering. Du finder den sidste version på ovenstående link.
Trin 5: Test af sensorerne
For at teste sensorerne skal du downloade nedenstående fil fra min GitHub:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
*Multiple Temperature Sendor Test**2 x OneWire Sensor: DS18B20*Tilsluttet NodeMCU D4 (eller Arduino Pin 2)**Udviklet af Marcelo Rovai - 25. august 2017 **************** ******* ***** inkludere #define ONE_WIRE_BUS 2 // DS18B20 på NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); ugyldig opsætning () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Test af data fra to sensorer"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 registrerer Temp i Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 registrerer Temp i Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); forsinkelse (1000); }
Når vi ser på ovenstående kode, bør vi bemærke, at de vigtigste linjer er:
temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 registrerer Temp i Celcius
temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 registrerer Temp i Fahrenheit
Den første vil returnere en værdi fra Sensor [0] (se "indekset (0)") i Celcius (se den del af koden: "getTempC". Den anden linje er relateret til Sensor [1] og returnerer data i Fahrenheit. Du kan have "n" -sensorer her, da du har et andet "indeks" for hver af dem.
Upload nu koden i din NodeMCU og overvåg temperaturen ved hjælp af Serial Monitor.
Ovenstående foto viser det forventede resultat. Hold hver af sensorerne i din hånd, du skal se temperaturen stige.
Trin 6: Brug af Blynk
Når du først er begyndt at fange temperaturdata, er det tid til at se det hvor som helst. Vi gør dette ved hjælp af Blynk. Så alle fangede data vil blive vist i realtid på din mobilenhed, og vi vil også opbygge et historisk lager for det.
Følg nedenstående trin:
- Opret et nyt projekt.
- Giv det et navn (i mit tilfælde "Dual Temperature Monitor")
- Vælg Ny enhed - ESP8266 (WiFi) som "Mine enheder"
- Kopiér AUTH TOKEN, der skal bruges i koden (du kan sende det til din e -mail).
-
Indeholder to "Gauge" widgets, der definerer:
- Virtuel pin, der skal bruges med hver sensor: V10 (Sensor [0]) og V11 (Sensor [1])
- Temperaturområdet: -5 til 100 oC for sensor [0]
- Temperaturområdet: 25 til 212 oC til sensor [1]
- Frekvensen for at læse data: 1 sekund
- Inkluderer en "History Graph" widget, der definerer V10 og V11 som virtuelle pins
- Tryk på "Afspil" (trekanten i højre hjørne)
Selvfølgelig vil Blynk -appen ringe til dig om, at NodeMCU er offline. Det er tid til at uploade den fulde kode på din Arduino IDE. Du kan få det her:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Skift "dummy -data" med dine egne legitimationsoplysninger.
/ * Blynk legitimationsoplysninger */
char auth = "DIN BLYNK AUTH -KODE HER"; / * WiFi -legitimationsoplysninger */ char ssid = "DIN SSID"; char pass = "DIT KODEORD";
Og det er det!
Se den fulde kode. Det er dybest set den tidligere kode, hvor vi indtastede med Blynk -parametre og specifikke funktioner. Bemærk de to sidste linjer i koden. Det er de vigtigste her. Hvis du har flere sensorer, der indsamler data, skal du også have ækvivalente nye linjer som dem (med relevante nye virtuelle stifter defineret).
/**************************************************************
* IoT Multiple Temperature Monitor med Blynk * Blynk -bibliotek er licenseret under MIT -licens * Denne eksempelkode er i det offentlige domæne. **Flere OneWire -sensor: DS18B20*Udviklet af Marcelo Rovai - 25. august 2017 ********************************** ***************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Kommenter dette til deaktiver udskrifter og spar plads / * Blynk legitimationsoplysninger * / char auth = "DIN BLYNK AUTH CODE HER"; / * WiFi -legitimationsoplysninger */ char ssid = "DIN SSID"; char pass = "DIT KODEORD"; / * TIMER */ #inkluderer SimpleTimer timer; / * DS18B20 Temperatursensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 på arduino pin2 svarer til D4 på fysisk board OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; ugyldig opsætning () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Test af data fra to sensorer"); } void loop () {timer.run (); // Starter SimpleTimer Blynk.run (); } /************************************************ ****Send sensordata til Blynk ***************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 registrerer Temp i Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 registrerer Temp i 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); // virtuel pin V10 Blynk.virtualWrite (11, temp_1); // virtuel pin V11}
Når koden er uploadet og kører, skal du kontrollere Blynk -appen. Det skulle nu også køre som vist på ovenstående udskrivningsskærm fra min iPhone.
Trin 7: Konklusion
Som altid håber jeg, at dette projekt kan hjælpe andre med at finde vej i den spændende verden inden for elektronik, robotik og IoT!
Besøg min GitHub for opdaterede filer: NodeMCU Dual Temp Monitor
For flere projekter, besøg min blog: MJRoBot.org
Saludos fra den sydlige del af verden!
Vi ses på min næste instruerbare!
Tak skal du have, Marcelo
Anbefalede:
Arduino -styring af flere P.I.R -sensorer på samme bord: 3 trin
Arduino -styring af flere PIR -sensorer på samme bord: I dag vil jeg fortælle dig, hvordan du forbinder flere PIR -sensorer med en enkelt Arduino Bord > her har jeg også brugt 4 -kanals relæmodul til ekstra funktionalitet. (ELLER Du kan bruge så mange pin din arduin
TILSLUTNING AF FLERE SENSORER TIL EN ARDUINO UNO SERIAL PORT: 4 trin
TILSLUTNING AF FLERE SENSORER TIL EN ARDUINO UNO SERIAL PORT: I denne vejledning udvider vi en enkelt Arduino UNO UART (Rx/Tx) seriel port, så flere Atlas sensorer kan tilsluttes. Udvidelsen udføres ved hjælp af 8: 1 Serial Port Expander -kort. Arduinos havn er forbundet med ekspanderen efter at
TILSLUTNING AF FLERE SENSORER TIL RASPBERRY PI: 6 trin (med billeder)
TILSLUTNING AF FLERE SENSORER TIL RASPBERRY PI: I dette projekt vil vi forbinde tre af Atlas Scientifics EZO -sensorer (pH, opløst ilt og temperatur) til en Raspberry Pi 3B+. I stedet for at koble kredsløbene til Raspberry Pi, bruger vi Whitebox Labs Tentacle T3 -skjoldet. T
2.4 TFT Arduino vejrstation med flere sensorer: 7 trin
2.4 TFT Arduino vejrstation med flere sensorer: En bærbar Arduino vejrstation med en TFT LCD og et par sensorer
Termometer med temperaturrelativ farve på en 2 "TFT -skærm og flere sensorer: 5 trin
Termometer med temperaturrelativ farve på en 2 "TFT -skærm og flere sensorer: Jeg har lavet et display, der viser målinger af flere temperatursensorer. Det fede er, at farven på værdierne ændres med temperaturen: > 75 grader Celcius = RØD > 60 > 75 = ORANGE > 40 < 60 = GUL > 30 < 40