Innholdsfortegnelse:

IoT Made Simple: Overvåking av flere sensorer: 7 trinn
IoT Made Simple: Overvåking av flere sensorer: 7 trinn

Video: IoT Made Simple: Overvåking av flere sensorer: 7 trinn

Video: IoT Made Simple: Overvåking av flere sensorer: 7 trinn
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, Juli
Anonim
IoT Made Simple: Overvåking av flere sensorer
IoT Made Simple: Overvåking av flere sensorer
IoT Made Simple: Overvåking av flere sensorer
IoT Made Simple: Overvåking av flere sensorer

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

DS18B20 Temperatursensor
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 sensorene til NodeMCU
Koble sensorene til NodeMCU
  1. 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.
  2. 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
  3. 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:

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

Testing av sensorene
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

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

  1. Lag et nytt prosjekt.
  2. Gi den et navn (i mitt tilfelle "Dual Temperature Monitor")
  3. Velg Ny enhet - ESP8266 (WiFi) som "Mine enheter"
  4. Kopier AUTH TOKEN som skal brukes i koden (du kan sende den til e -posten din).
  5. 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
  6. Inkluderer en "History Graph" widget, som definerer V10 og V11 som virtuelle pins
  7. 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

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