Innehållsförteckning:

IoT Made Simple: Övervaka flera sensorer: 7 steg
IoT Made Simple: Övervaka flera sensorer: 7 steg

Video: IoT Made Simple: Övervaka flera sensorer: 7 steg

Video: IoT Made Simple: Övervaka flera sensorer: 7 steg
Video: How to Interface Industrial Sensors with Arduino Nano 2024, Maj
Anonim
IoT Made Simple: Övervaka flera sensorer
IoT Made Simple: Övervaka flera sensorer
IoT Made Simple: Övervaka flera sensorer
IoT Made Simple: Övervaka flera sensorer

För några veckor sedan publicerade jag här en handledning om övervakning av temperatur med hjälp av en DS18B20, en digital sensor som kommunicerar över en 1-tråds buss och skickar data över internet med NodeMCU och Blynk:

IoT Made Simple: Övervaka temperaturen var som helst

Men det vi missade i prospektering var en av de stora fördelarna med denna typ av sensor som är möjligheten att samla in flera data, från flera sensorer anslutna till samma 1-trådsbuss. Och nu är det dags att också utforska det.

Vi kommer att utöka det som utvecklades på den senaste handledningen och övervaka nu två DS18B20 -sensorer, konfigurerade en i Celcius och den andra i Fahrenheit. Data kommer att skickas till en Blynk -app, som visas i blockdiagrammet ovan.

Steg 1: Materialräkning

  • NodeMCU ESP 12-E (*)
  • 2 X DS18B20 temperatursensor
  • Motstånd 4,7K ohm
  • Bakbord
  • Kabeldragning

(*) Alla typer av ESP -enheter kan användas här. De vanligaste är NodeMCU V2 eller V3. Båda kommer alltid att fungera bra.

Steg 2: DS18B20 temperatursensor

DS18B20 Temperaturgivare
DS18B20 Temperaturgivare

Vi kommer att använda i denna handledning en vattentät version av DS18B20 -sensorn. Det är mycket användbart för fjärrtemperatur i våta förhållanden, till exempel på fuktig mark. Sensorn är isolerad och kan ta mätningar fram till 125oC (Adafrut rekommenderar inte att använda den över 100oC på grund av dess kabel -PVC -mantel).

DS18B20 är en digital sensor som gör den bra att använda även över långa avstånd! Dessa 1-trådiga digitala temperatursensorer är ganska exakta (± 0,5 ° C över stora delar av intervallet) och kan ge upp till 12 bitar precision från den inbyggda digital-till-analoga omvandlaren. De fungerar utmärkt med NodeMCU med en enda digital stift, och du kan till och med ansluta flera till samma stift, var och en har ett unikt 64-bitars ID inbränt på fabriken för att skilja dem åt.

Sensorn fungerar från 3,0 till 5,0V, vilket innebär att den kan drivas direkt från en av 3,3V NodeMCU -stiften.

Sensorn har 3 ledningar:

  • Svart: GND
  • Röd: VCC
  • Gul: 1-tråds data

Här hittar du fullständig data: DS18B20 Datablad

Steg 3: Anslut sensorerna till NodeMCU

Ansluta sensorerna till NodeMCU
Ansluta sensorerna till NodeMCU
  1. Anslut de 3 ledningarna från varje sensor på mini -brödbrädan som visas på bilden ovan. Jag använde speciella kontakter för att bättre fixera sensorns kabel på den.
  2. Observera att båda sensorerna är parallella. Om du har mer än 2 sensorer bör du göra detsamma.

    • Röd ==> 3,3V
    • Svart ==> GND
    • Gul ==> D4
  3. Använd ett motstånd på 4,7K ohm mellan VCC (3,3V) och data (D4)

Steg 4: Installera lämpliga bibliotek

För att kunna använda DS18B20 korrekt krävs två bibliotek:

  1. OneWire
  2. Dallas Temperatur

Installera båda biblioteken i ditt Arduino IDE -bibliotek.

Observera att OneWire -biblioteket MÅSTE vara det speciella, modifierat för att användas med ESP8266, annars får du ett fel under sammanställningen. Du hittar den senaste versionen på ovanstående länk.

Steg 5: Testa sensorerna

Testar sensorerna
Testar sensorerna

För att testa sensorerna, ladda ner nedanstående fil från min GitHub:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

*Test av flera temperatursändare**2 x OneWire -sensor: DS18B20*Ansluten till NodeMCU D4 (eller Arduino Pin 2)**Utvecklad av Marcelo Rovai - 25 augusti 2017 **************** *********************************************/ #include # inkludera #define ONE_WIRE_BUS 2 // DS18B20 på NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Testa data med två sensorer"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 kommer att fånga Temp i Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 kommer att fånga Temp i Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); fördröjning (1000); }

Om vi tittar på koden ovan bör vi märka att de viktigaste raderna är:

temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 kommer att fånga Temp i Celcius

temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 kommer att fånga Temp i Fahrenheit

Den första returnerar ett värde från sensor [0] (se "index (0)") i Celcius (se delen av koden: "getTempC". Den andra raden är relaterad till sensor [1] och returnerar data i Fahrenheit. Du kan ha här "n" sensorer eftersom du har ett annat "index" för var och en av dem.

Ladda upp nu koden i din NodeMCU och övervaka temperaturen med hjälp av Serial Monitor.

Bilden ovan visar det förväntade resultatet. Håll var och en av sensorerna i handen, du bör se temperaturen stiga.

Steg 6: Använda Blynk

Använda Blynk
Använda Blynk
Använda Blynk
Använda Blynk

När du har börjat fånga temperaturdata är det dags att se den var som helst. Vi kommer att göra detta med Blynk. Så, alla fångade data kommer att visas i realtid på din mobila enhet och vi kommer också att bygga ett historiskt förråd för det.

Följ stegen nedan:

  1. Skapa ett nytt projekt.
  2. Ge det ett namn (i mitt fall "Dual Temperature Monitor")
  3. Välj Ny enhet - ESP8266 (WiFi) som "Mina enheter"
  4. Kopiera AUTH TOKEN som ska användas i koden (du kan skicka det till din e -post).
  5. Innehåller två "Gauge" widgets som definierar:

    • Virtuell pin som ska användas med varje sensor: V10 (Sensor [0]) och V11 (Sensor [1])
    • Temperaturområdet: -5 till 100 oC för sensor [0]
    • Temperaturområdet: 25 till 212 oC för sensor [1]
    • Frekvens för att läsa data: 1 sekund
  6. Innehåller en widget "History Graph" som definierar V10 och V11 som virtuella stift
  7. Tryck på "Spela" (triangeln i höger upp hörn)

Naturligtvis kommer Blynk -appen att meddela dig att NodeMCU är offline. Det är dags att ladda upp hela koden till din Arduino IDE. Du kan få det här:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Ändra "dummy -data" med dina egna referenser.

/ * Blynk referenser */

char auth = "DIN BLYNK AUTH -KOD HÄR"; / * WiFi -uppgifter */ char ssid = "DITT SSID"; char pass = "DITT LÖSENORD";

Och det är allt!

Följ hela koden. Det är i princip den tidigare koden, där vi angav med Blynk -parametrar och specifika funktioner. Notera de två sista raderna i koden. De är de viktigaste här. Om du har fler sensorer som samlar in data bör du också ha likvärdiga nya rader som de (med relevanta nya virtuella stift definierade).

/**************************************************************

* IoT Multiple Temperature Monitor med Blynk * Blynk -biblioteket är licensierat under MIT -licens * Denna exempelkod är i allmän egendom. **Flera OneWire -sensorer: DS18B20*Utvecklad av Marcelo Rovai - 25 augusti 2017 ********************************** ***************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Kommentera detta till inaktivera utskrifter och spara utrymme / * Blynk referenser * / char auth = "DIN BLYNK AUTH -KOD HÄR"; / * WiFi -uppgifter */ char ssid = "DITT SSID"; char pass = "DITT LÖSENORD"; / * TIMER */ #include SimpleTimer timer; / * DS18B20 Temperatursensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 på arduino pin2 motsvarar D4 på det fysiska kortet 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 ("Testning av data från två sensorer"); } void loop () {timer.run (); // Initierar SimpleTimer Blynk.run (); } /************************************************ ****Skicka sensordata till Blynk ***************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 kommer att fånga Temp i Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 kommer att fånga 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 har laddats upp och körs, kontrollera Blynk -appen. Det borde nu också köras som visas på utskriftsskärmen ovan från min iPhone.

Steg 7: Slutsats

Slutsats
Slutsats

Som alltid hoppas jag att detta projekt kan hjälpa andra att hitta sin väg i den spännande världen av elektronik, robotik och IoT!

Besök min GitHub för uppdaterade filer: NodeMCU Dual Temp Monitor

För fler projekt, besök min blogg: MJRoBot.org

Hälsningar från södra världen!

Vi ses på min nästa instruerbara!

Tack, Marcelo

Rekommenderad: