Inhoudsopgave:

IoT eenvoudig gemaakt: meerdere sensoren bewaken - Ajarnpa
IoT eenvoudig gemaakt: meerdere sensoren bewaken - Ajarnpa

Video: IoT eenvoudig gemaakt: meerdere sensoren bewaken - Ajarnpa

Video: IoT eenvoudig gemaakt: meerdere sensoren bewaken - Ajarnpa
Video: TVVL Webinar IoT in de Praktijk 2024, November
Anonim
IoT eenvoudig gemaakt: meerdere sensoren bewaken
IoT eenvoudig gemaakt: meerdere sensoren bewaken
IoT eenvoudig gemaakt: meerdere sensoren bewaken
IoT eenvoudig gemaakt: meerdere sensoren bewaken

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

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

De sensoren verbinden met NodeMCU
De sensoren verbinden met NodeMCU
  1. 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.
  2. 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
  3. 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:

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

De sensoren testen
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

Blynk. gebruiken
Blynk. gebruiken
Blynk. gebruiken
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:

  1. Maak een nieuw project.
  2. Geef het een naam (in mijn geval "Dual Temperature Monitor")
  3. Selecteer Nieuw apparaat - ESP8266(WiFi) als "Mijn apparaten"
  4. Kopieer de AUTH TOKEN die in de code moet worden gebruikt (u kunt deze naar uw e-mail sturen).
  5. 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
  6. Bevat een "History Graph"-widget, die V10 en V11 als virtuele pinnen definieert
  7. 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

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