Indholdsfortegnelse:

IoT Made Simple: Overvågning af flere sensorer: 7 trin
IoT Made Simple: Overvågning af flere sensorer: 7 trin

Video: IoT Made Simple: Overvågning af flere sensorer: 7 trin

Video: IoT Made Simple: Overvågning af flere sensorer: 7 trin
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, December
Anonim
IoT Made Simple: Overvågning af flere sensorer
IoT Made Simple: Overvågning af flere sensorer
IoT Made Simple: Overvågning af flere sensorer
IoT Made Simple: Overvågning af flere sensorer

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

DS18B20 Temperatursensor
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

Tilslutning af sensorerne til NodeMCU
Tilslutning af sensorerne til NodeMCU
  1. 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.
  2. 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
  3. 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:

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

Test af sensorerne
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

Brug af Blynk
Brug af Blynk
Brug af Blynk
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:

  1. Opret et nyt projekt.
  2. Giv det et navn (i mit tilfælde "Dual Temperature Monitor")
  3. Vælg Ny enhed - ESP8266 (WiFi) som "Mine enheder"
  4. Kopiér AUTH TOKEN, der skal bruges i koden (du kan sende det til din e -mail).
  5. 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
  6. Inkluderer en "History Graph" widget, der definerer V10 og V11 som virtuelle pins
  7. 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

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