Inhoudsopgave:
- Stap 1: Stuklijst
- Stap 2: DS18B20 temperatuursensor
- Stap 3: De sensoren aansluiten op NodeMCU
- Stap 4: De juiste bibliotheken installeren
- Stap 5: De sensoren testen
- Stap 6: Blynk. gebruiken
- Stap 7: Conclusie
Video: IoT eenvoudig gemaakt: meerdere sensoren bewaken - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Een paar weken geleden heb ik hier een tutorial gepubliceerd over het bewaken van de temperatuur met behulp van een DS18B20, een digitale sensor die communiceert via een 1-draads bus en gegevens via internet verzendt met NodeMCU en Blynk:
IoT eenvoudig gemaakt: temperatuur overal bewaken
Maar wat we bij de verkenning misten, was een van de grote voordelen van dit soort sensoren, namelijk de mogelijkheid om meerdere gegevens te verzamelen, van meerdere sensoren die op dezelfde 1-draads bus zijn aangesloten. En nu is het tijd om het ook te verkennen.
We zullen uitbreiden wat in de laatste zelfstudie is ontwikkeld, waarbij we nu twee DS18B20-sensoren bewaken, één geconfigureerd in Celcius en de andere in Fahrenheit. De gegevens worden naar een Blynk-app gestuurd, zoals weergegeven in het bovenstaande blokschema.
Stap 1: Stuklijst
- NodeMCU ESP 12-E (*)
- 2 X DS18B20 Temperatuursensor
- Weerstand 4,7K Ohm
- Broodplank
- Bedrading
(*) Elk type ESP-apparaat kan hier worden gebruikt. De meest voorkomende zijn de NodeMCU V2 of V3. Beide zullen altijd goed werken.
Stap 2: DS18B20 temperatuursensor
We zullen in deze tutorial een waterdichte versie van de DS18B20-sensor gebruiken. Het is erg handig voor afgelegen temperaturen in natte omstandigheden, bijvoorbeeld op een vochtige grond. De sensor is geïsoleerd en kan metingen uitvoeren tot 125oC (Adafrut raadt niet aan om hem boven 100oC te gebruiken vanwege de PVC-kabelmantel).
De DS18B20 is een digitale sensor waardoor hij ook over lange afstanden goed te gebruiken is! Deze 1-draads digitale temperatuursensoren zijn redelijk nauwkeurig (±0,5°C over een groot deel van het bereik) en kunnen tot 12 bits precisie geven van de ingebouwde digitaal-naar-analoogomzetter. Ze werken prima met de NodeMCU met behulp van een enkele digitale pin, en je kunt zelfs meerdere op dezelfde pin aansluiten, elke heeft een unieke 64-bits ID die in de fabriek is ingebrand om ze te onderscheiden.
De sensor werkt van 3,0 tot 5,0V, wat betekent dat hij rechtstreeks kan worden gevoed vanaf een van de 3,3V NodeMCU-pinnen.
De sensor heeft 3 draden:
- Zwart: GND
- Rood: VCC
- Geel: 1-draads gegevens
Hier vindt u de volledige gegevens: DS18B20 Datasheet
Stap 3: De sensoren aansluiten op NodeMCU
- Sluit de 3 draden van elke sensor aan op de mini Breadboard zoals weergegeven op de bovenstaande foto. Ik heb speciale connectoren gebruikt om de kabel van de sensor er beter op te bevestigen.
-
Merk op dat beide sensoren parallel staan. Als u meer dan 2 sensoren heeft, moet u hetzelfde doen.
- Rood ==> 3.3V
- Zwart ==> GND
- Geel ==> D4
- Gebruik een weerstand van 4,7K ohm tussen VCC (3,3V) en Data (D4)
Stap 4: De juiste bibliotheken installeren
Om de DS18B20 correct te gebruiken, zijn twee bibliotheken nodig:
- OneWire
- DallasTemperatuur
Installeer beide bibliotheken in uw Arduino IDE Library-depot.
Merk op dat de OneWire-bibliotheek de speciale MOET zijn, aangepast om te worden gebruikt met ESP8266, anders krijgt u een foutmelding tijdens het compileren. U vindt de laatste versie op bovenstaande link.
Stap 5: De sensoren testen
Download voor het testen van de sensoren het onderstaande bestand van mijn GitHub:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
* Meerdere temperatuurzendertest * * 2 x OneWire-sensor: DS18B20 * Aangesloten op NodeMCU D4 (of Arduino Pin 2) * * Ontwikkeld door Marcelo Rovai - 25 augustus 2017 **************** **********************************************/ #erbij betrekken # omvatten #define ONE_WIRE_BUS 2 // DS18B20 op NodeMCU-pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); void setup() { Serial.begin(115200); DS18B20.begin(); Serial.println ("Dual Sensor-gegevens testen"); } void loop() { float temp_0; zwevende temp_1; DS18B20.requestTemperaturen(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 zal Temp vastleggen in Celcius temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 zal Temp vastleggen in Fahrenheit Serial.print ("Temp_0: "); Serieel.print(temp_0); Serial.print(" oC. Temp_1: "); Serieel.print(temp_1); Serial.println ("oF"); vertraging (1000); }
Als we naar de bovenstaande code kijken, zouden we moeten opmerken dat de belangrijkste regels zijn:
temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 legt de temperatuur vast in Celsius
temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 legt de temperatuur vast in Fahrenheit
De eerste retourneert een waarde van Sensor [0] (kijk naar de "index(0)") in Celcius (kijk naar het gedeelte van de code: "getTempC". De tweede regel is gerelateerd aan Sensor [1] en retourneert gegevens in Fahrenheit. Je zou hier "n" sensoren kunnen hebben, omdat je voor elk van hen een andere "index" hebt.
Upload nu de code in uw NodeMCU en bewaak de temperatuur met behulp van de seriële monitor.
Bovenstaande foto toont het verwachte resultaat. Houd elk van de sensoren in je hand, je zou de temperatuur moeten zien stijgen.
Stap 6: Blynk. gebruiken
Zodra u begint met het vastleggen van temperatuurgegevens, is het tijd om deze overal te bekijken. Dit doen we met Blynk. Alle vastgelegde gegevens worden dus in realtime weergegeven op uw mobiele apparaat en we zullen daar ook een historisch archief voor bouwen.
Volg de onderstaande stappen:
- Maak een nieuw project.
- Geef het een naam (in mijn geval "Dual Temperature Monitor")
- Selecteer Nieuw apparaat - ESP8266(WiFi) als "Mijn apparaten"
- Kopieer de AUTH TOKEN die in de code moet worden gebruikt (u kunt deze naar uw e-mail sturen).
-
Bevat twee "Gauge"-widgets, die het volgende definiëren:
- Virtuele pin voor gebruik met elke sensor: V10 (Sensor[0]) en V11 (Sensor[1])
- Het temperatuurbereik: -5 tot 100 oC voor Sensor [0]
- Het temperatuurbereik: 25 tot 212 oC voor Sensor [1]
- De frequentie om gegevens te lezen: 1 seconde
- Bevat een "History Graph"-widget, die V10 en V11 als virtuele pinnen definieert
- Druk op "Play" (het driehoekje in de rechter bovenhoek)
Natuurlijk zal de Blynk-app je vertellen dat de NodeMCU offline is. Het is tijd om de volledige code te uploaden naar je Arduino IDE. Je kunt het hier krijgen:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Wijzig de "dummy data" met uw eigen inloggegevens.
/* Blynk-referenties */
char auth = "UW BLYNK AUTH CODE HIER"; /* WiFi-inloggegevens */ char ssid = "UW SSID"; char pass = "UW WACHTWOORD";
En dat is het!
Bel de volledige code. Het is eigenlijk de vorige code, waar we zijn ingevoerd met Blynk-parameters en specifieke functies. Let op de 2 laatste regels van de code. Die zijn hier het belangrijkst. Als u meer sensoren heeft die gegevens verzamelen, zou u ook gelijkwaardige nieuwe lijnen moeten hebben als die (met relevante nieuwe virtuele pinnen gedefinieerd).
/**************************************************************
* IoT Multiple Temperature Monitor met Blynk * Blynk-bibliotheek is gelicentieerd onder MIT-licentie * Deze voorbeeldcode bevindt zich in het publieke domein. * * Meerdere OneWire-sensor: DS18B20 * Ontwikkeld door Marcelo Rovai - 25 augustus 2017 ********************************** **************************/ /* ESP & Blynk */ #include #include #define BLYNK_PRINT Serial // Reageer op schakel afdrukken uit en bespaar ruimte /* Blynk-inloggegevens */ char auth = "UW BLYNK-AUTH-CODE HIER"; /* WiFi-inloggegevens */ char ssid = "UW SSID"; char pass = "UW WACHTWOORD"; /* TIMER */ #inclusief SimpleTimer-timer; /* DS18B20 temperatuursensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 op arduino pin2 komt overeen met D4 op fysiek bord 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); Serieel.println(" "); Serial.println ("Dual Sensor-gegevens testen"); } void loop() { timer.run(); // Start SimpleTimer Blynk.run(); } /************************************************** *** * Sensorgegevens naar Blynk sturen **************************************** **********/ void getSendData() { DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 zal Temp vastleggen in Celcius temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 zal Temp vastleggen in Fahrenheit Serial.print ("Temp_0: "); Serieel.print(temp_0); Serial.print(" oC. Temp_1: "); Serieel.print(temp_1); Serial.println ("oF"); Blynk.virtualWrite(10, temp_0); //virtuele pin V10 Blynk.virtualWrite (11, temp_1); //virtuele pin V11}
Zodra de code is geüpload en actief is, controleert u de Blynk-app. Het zou nu ook moeten werken zoals weergegeven op bovenstaande printscreen vanaf mijn iPhone.
Stap 7: Conclusie
Zoals altijd hoop ik dat dit project anderen kan helpen hun weg te vinden in de spannende wereld van elektronica, robotica en IoT!
Bezoek mijn GitHub voor bijgewerkte bestanden: NodeMCU Dual Temp Monitor
Ga voor meer projecten naar mijn blog: MJRoBot.org
Saludos uit het zuiden van de wereld!
Tot ziens bij mijn volgende instructable!
Bedankt, Marcelo
Aanbevolen:
Systeem voor het bewaken van de luchtkwaliteit voor fijnstofverontreiniging: 4 stappen
Systeem voor monitoring van luchtkwaliteit voor fijnstofverontreiniging: INTRO: 1 In dit project laat ik zien hoe ik een deeltjesdetector bouw met dataweergave, databack-up op SD-kaart en IOT. Visueel geeft een neopixels ringdisplay de luchtkwaliteit aan. 2 Luchtkwaliteit is een steeds belangrijker zorg t
MEERDERE SENSOREN AANSLUITEN OP ÉÉN ARDUINO UNO SERILE POORT: 4 stappen
MEERDERE SENSOREN AANSLUITEN OP ÉÉN ARDUINO UNO SERILE POORT: In deze tutorial breiden we een enkele Arduino UNO UART (Rx/Tx) seriële poort uit, zodat meerdere Atlas-sensoren kunnen worden aangesloten. De uitbreiding wordt gedaan met behulp van een 8:1 Serial Port Expander-kaart. De poort van de Arduino wordt na wi
Temperatuur bewaken en opnemen met Bluetooth LE en RaspberryPi 9 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Monitor en registreer temperatuur met Bluetooth LE en RaspberryPi: deze instructie gaat over het samenstellen van een multi-node temperatuurbewakingssysteem met Bluetooth LE-sensorbug van Blue Radios (BLEHome) en RaspberryPi 3B Dankzij de ontwikkeling van de Bluetooth LE-standaard is er nu direct beschikbaar
Hoe maak je een IoT-apparaat om apparaten te bedienen en het weer te bewaken met behulp van Esp8266: 5 stappen
Hoe maak je een IoT-apparaat om apparaten te bedienen en het weer te bewaken met behulp van Esp8266: Het internet der dingen (IoT) is de inter-netwerking van fysieke apparaten (ook wel "verbonden apparaten" en "slimme apparaten" genoemd), gebouwen, en andere items ingebed met elektronica, software, sensoren, actuatoren en
Stop Motion-animatie eenvoudig gemaakt: 5 stappen
Stop Motion Animation Made Easy: Deze instructable zal hopelijk de gemiddelde persoon helpen om de basisprincipes van stop motion-animatie te leren kennen en hen in staat te stellen hun eigen gratis animaties te maken. Aangezien dit mijn eerste instructable is, wees alsjeblieft redelijk. opbouwende kritiek zeer welkom