Innholdsfortegnelse:
- Trinn 1: Materialregning
- Trinn 2: DS18B20 temperatursensor
- Trinn 3: Koble sensorene til NodeMCU
- Trinn 4: Installere de aktuelle bibliotekene
- Trinn 5: Testing av sensorene
- Trinn 6: Bruke Blynk
- Trinn 7: Konklusjon
Video: IoT Made Simple: Overvåking av flere sensorer: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
For noen uker siden publiserte jeg her en opplæring om overvåking av temperatur ved hjelp av en DS18B20, en digital sensor som kommuniserer over en 1-tråds buss, og sender data over internett med NodeMCU og Blynk:
IoT Made Simple: Overvåke temperaturen hvor som helst
Men det vi savnet i leting, var en av de store fordelene med denne typen sensor som er muligheten til å samle inn flere data, fra flere sensorer koblet til den samme 1-leder bussen. Og nå er det på tide å også utforske det.
Vi vil utvide det som ble utviklet på den siste opplæringen, og overvåke nå to DS18B20 -sensorer, konfigurert en i Celcius og den andre i Fahrenheit. Dataene blir sendt til en Blynk -app, som vist i blokkdiagrammet ovenfor.
Trinn 1: Materialregning
- NodeMCU ESP 12-E (*)
- 2 X DS18B20 temperatursensor
- Motstand 4,7K ohm
- Brødbrett
- Kabling
(*) Alle typer ESP -enheter kan brukes her. Den vanligste er NodeMCU V2 eller V3. Begge vil alltid fungere bra.
Trinn 2: DS18B20 temperatursensor
Vi vil i denne opplæringen bruke en vanntett versjon av DS18B20 -sensoren. Det er veldig nyttig for fjerntemperatur i våte forhold, for eksempel på fuktig jord. Sensoren er isolert og kan ta målinger til 125oC (Adafrut anbefaler ikke å bruke den over 100oC på grunn av kabel -PVC -kappen).
DS18B20 er en digital sensor som gjør det godt å bruke selv over lange avstander! Disse 1-leders digitale temperatursensorene er ganske presise (± 0,5 ° C over store deler av området) og kan gi opptil 12 bits presisjon fra den innebygde digital-til-analoge omformeren. De fungerer bra med NodeMCU ved hjelp av en enkelt digital pin, og du kan til og med koble flere til samme pin, hver har en unik 64-biters ID brent inn på fabrikken for å skille dem fra hverandre.
Sensoren fungerer fra 3,0 til 5,0V, det vil si at den kan drives direkte fra en av 3,3V NodeMCU -pinnene.
Sensoren har 3 ledninger:
- Svart: GND
- Rød: VCC
- Gul: 1-tråds data
Her finner du alle dataene: DS18B20 Dataark
Trinn 3: Koble sensorene til NodeMCU
- Koble de 3 ledningene fra hver sensor på mini -brødbrettet som vist på bildet ovenfor. Jeg brukte spesielle kontakter for å fikse sensorens kabel bedre på den.
-
Vær oppmerksom på at begge sensorene er parallelle. Hvis du har mer enn 2 sensorer, bør du gjøre det samme.
- Rød ==> 3,3V
- Svart ==> GND
- Gul ==> D4
- Bruk en 4,7K ohm motstand mellom VCC (3.3V) og Data (D4)
Trinn 4: Installere de aktuelle bibliotekene
For å bruke DS18B20 riktig, vil to biblioteker være nødvendige:
- OneWire
- Dallas Temperatur
Installer begge bibliotekene i Arduino IDE -biblioteket.
Vær oppmerksom på at OneWire -biblioteket MÅ være det spesielle, modifisert for bruk med ESP8266, ellers får du en feil under kompilering. Du finner den siste versjonen på lenken ovenfor.
Trinn 5: Testing av sensorene
For å teste sensorene, last ned filen nedenfor fra min GitHub:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
*Sendertest for flere temperaturer**2 x OneWire -sensor: DS18B20*Koblet til NodeMCU D4 (eller Arduino Pin 2)**Utviklet av 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 oppsett () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Testing av tosensordata"); } void loop () {float temp_0; flyt 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å koden ovenfor, bør vi legge merke til at de viktigste linjene er:
temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 vil registrere Temp i Celcius
temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 vil fange Temp i Fahrenheit
Den første vil returnere en verdi fra Sensor [0] (se "indeksen (0)") i Celcius (se delen av koden: "getTempC". Den andre linjen er relatert til Sensor [1] og vil returnere data i Fahrenheit. Du kan ha "n" -sensorer her siden du har en annen "indeks" for hver av dem.
Last opp koden nå i NodeMCU og overvåke temperaturen ved hjelp av Serial Monitor.
Bildet ovenfor viser det forventede resultatet. Hold hver av sensorene i hånden din, du bør se temperaturen stige.
Trinn 6: Bruke Blynk
Når du begynner å fange temperaturdata, er det på tide å se det hvor som helst. Vi vil gjøre dette ved hjelp av Blynk. Så, alle fangede data vil bli vist i sanntid på mobilenheten din, og vi vil også bygge et historisk depot for det.
Følg trinnene nedenfor:
- Lag et nytt prosjekt.
- Gi den et navn (i mitt tilfelle "Dual Temperature Monitor")
- Velg Ny enhet - ESP8266 (WiFi) som "Mine enheter"
- Kopier AUTH TOKEN som skal brukes i koden (du kan sende den til e -posten din).
-
Inkluderer to "Gauge" widgets, som definerer:
- Virtuell pin som skal brukes 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 for sensor [1]
- Frekvensen for å lese data: 1 sekund
- Inkluderer en "History Graph" widget, som definerer V10 og V11 som virtuelle pins
- Trykk på "Spill" (trekanten i høyre hjørne)
Selvfølgelig vil Blynk -appen ringe deg om at NodeMCU er frakoblet. Det er på tide å laste opp hele koden til din Arduino IDE. Du kan få det her:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Endre "dummy data" med din egen legitimasjon.
/ * Blynk legitimasjon */
char auth = "DIN BLYNK AUTH -KODE HER"; / * WiFi legitimasjon */ char ssid = "DIN SSID"; char pass = "DITT PASSORD";
Og det er det!
Følg hele koden. Det er i utgangspunktet den forrige koden, der vi skrev inn med Blynk -parametere og spesifikke funksjoner. Legg merke til de to siste linjene i koden. De er de viktigste her. Hvis du har flere sensorer som samler inn data, bør du også ha like nye linjer som de (med relevante nye virtuelle pinner definert).
/**************************************************************
* IoT Multiple Temperature Monitor med Blynk * Blynk -biblioteket er lisensiert under MIT -lisens * Denne eksempelkoden er i offentlig eiendom. **Flere OneWire -sensor: DS18B20*Utviklet av Marcelo Rovai - 25. august 2017 ********************************* ***************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Kommenter dette til deaktiver utskrifter og spar plass / * Blynk legitimasjon * / char auth = "DIN BLYNK AUTH CODE HER"; / * WiFi legitimasjon */ char ssid = "DIN SSID"; char pass = "DITT PASSORD"; / * TIMER */ #include SimpleTimer timer; / * DS18B20 Temperatursensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 på arduino pin2 tilsvarer D4 på fysisk bord OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; ugyldig oppsett () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Testing av tosensordata"); } 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); // virtuell pin V10 Blynk.virtualWrite (11, temp_1); // virtuell pin V11}
Når koden er lastet opp og kjører, sjekk Blynk -appen. Det skal nå også kjøre som vist på utskriftsskjermen ovenfor fra iPhone.
Trinn 7: Konklusjon
Som alltid håper jeg at dette prosjektet kan hjelpe andre å finne veien i den spennende verden av elektronikk, robotikk og IoT!
Vennligst besøk min GitHub for oppdaterte filer: NodeMCU Dual Temp Monitor
For flere prosjekter, vennligst besøk bloggen min: MJRoBot.org
Hilsener fra den sørlige verden!
Se deg på min neste instruktive!
Takk skal du ha, Marcelo
Anbefalt:
Arduino -kontrollerende flere P.I.R -sensorer på samme bord: 3 trinn
Arduino -styring av flere PIR -sensorer på samme bord: I dag vil jeg fortelle deg hvordan du kobler flere PIR -sensorer til en enkelt Arduino Bord > her har jeg også brukt 4 -kanals relemodul for litt ekstra funksjonalitet. (ELLER Du kan bruke så mange som pin din arduin
KOBLING AV FLERE SENSORER TIL EN ARDUINO UNO SERIALPORT: 4 trinn
KOBLING AV FLERE SENSORER TIL EN ARDUINO UNO SERIAL PORT: I denne opplæringen skal vi utvide en enkelt Arduino UNO UART (Rx/Tx) serieport slik at flere Atlas -sensorer kan kobles til. Utvidelsen gjøres ved hjelp av 8: 1 Serial Port Expander -kort. Arduino -havnen er knyttet til ekspanderen etter at
KOBLING AV FLERE SENSORER TIL RASPBERRY PI: 6 trinn (med bilder)
KOBLING AV FLERE SENSORER TIL RASPBERRY PI: I dette prosjektet vil vi koble tre av Atlas Scientifics EZO -sensorer (pH, oppløst oksygen og temperatur) til en Raspberry Pi 3B+. I stedet for å koble kretsene til Raspberry Pi, bruker vi Whitebox Labs Tentacle T3 -skjoldet. T
2.4 TFT Arduino værstasjon med flere sensorer: 7 trinn
2.4 TFT Arduino værstasjon med flere sensorer: En bærbar Arduino værstasjon med en TFT LCD og noen få sensorer
Termometer med temperaturrelativ farge på en 2 "TFT -skjerm og flere sensorer: 5 trinn
Termometer med temperaturrelativ farge på en 2 "TFT -skjerm og flere sensorer: Jeg har laget et display som viser målingene til flere temperatursensorer. Det kult er at fargen på verdiene endres med temperaturen: > 75 grader Celcius = RED > 60 > 75 = ORANGE > 40 < 60 = GUL > 30 < 40