Innehållsförteckning:
- Steg 1: Materialräkning
- Steg 2: DS18B20 temperatursensor
- Steg 3: Anslut sensorerna till NodeMCU
- Steg 4: Installera lämpliga bibliotek
- Steg 5: Testa sensorerna
- Steg 6: Använda Blynk
- Steg 7: Slutsats
Video: IoT Made Simple: Övervaka flera sensorer: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
- 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.
-
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
- 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:
- OneWire
- 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
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
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:
- Skapa ett nytt projekt.
- Ge det ett namn (i mitt fall "Dual Temperature Monitor")
- Välj Ny enhet - ESP8266 (WiFi) som "Mina enheter"
- Kopiera AUTH TOKEN som ska användas i koden (du kan skicka det till din e -post).
-
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
- Innehåller en widget "History Graph" som definierar V10 och V11 som virtuella stift
- 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
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:
Arduino -styrande flera P.I.R -sensorer på samma bord: 3 steg
Arduino -styrning av flera PIR -sensorer på samma bord: Idag kommer jag att berätta hur du ansluter flera PIR -sensorer med en enda Arduino Bord > här har jag också använt 4 -kanals relämodul för lite extra funktionalitet. (ELLER Du kan använda så många nålar till din arduin
ANSLUTNING AV FLERA SENSORER TILL EN ARDUINO UNO SERIALPORT: 4 steg
ANSLUTNING AV FLERA SENSORER TILL EN ARDUINO UNO SERIALPORT: I denna handledning kommer vi att utöka en enda Arduino UNO UART (Rx/Tx) serieport så att flera Atlas -sensorer kan anslutas. Expansionen görs med 8: 1 Serial Port Expander -kort. Arduinos hamn är kopplad till expanderaren efter att
ANSLUTNING AV FLERA SENSORER TILL RASPBERRY PI: 6 steg (med bilder)
ANSLUTNING AV FLERA SENSORER TILL RASPBERRY PI: I detta projekt kommer vi att ansluta tre av Atlas Scientifics EZO -sensorer (pH, upplöst syre och temperatur) till en Raspberry Pi 3B+. Istället för att koppla kretsarna till Raspberry Pi kommer vi att använda Whitebox Labs Tentacle T3 -sköld. T
2.4 TFT Arduino väderstation med flera sensorer: 7 steg
2.4 TFT Arduino väderstation med flera sensorer: En bärbar Arduino väderstation med en TFT LCD och några sensorer
Termometer med temperaturrelativ färg på en 2 "TFT -skärm och flera sensorer: 5 steg
Termometer med temperaturrelativ färg på en 2 "TFT -display och flera sensorer: Jag har gjort en display som visar måtten på flera temperatursensorer. Det coola är att värdenas färg ändras med temperaturen: > 75 grader Celcius = RED > 60 > 75 = ORANGE > 40 < 60 = GUL > 30 < 40