Inhaltsverzeichnis:

IoT leicht gemacht: Überwachung mehrerer Sensoren - Gunook
IoT leicht gemacht: Überwachung mehrerer Sensoren - Gunook

Video: IoT leicht gemacht: Überwachung mehrerer Sensoren - Gunook

Video: IoT leicht gemacht: Überwachung mehrerer Sensoren - Gunook
Video: Raumüberwachung leicht gemacht - LoRaWAN Mini Sensor im Test 2024, Juli
Anonim
IoT leicht gemacht: Überwachung mehrerer Sensoren
IoT leicht gemacht: Überwachung mehrerer Sensoren
IoT leicht gemacht: Überwachung mehrerer Sensoren
IoT leicht gemacht: Überwachung mehrerer Sensoren

Vor einigen Wochen habe ich hier ein Tutorial zur Temperaturüberwachung mit einem DS18B20 veröffentlicht, einem digitalen Sensor, der über einen 1-Wire-Bus kommuniziert und Daten über das Internet mit NodeMCU und Blynk sendet:

IoT leicht gemacht: Temperatur überall überwachen

Was wir jedoch bei der Erforschung vermisst haben, war einer der großen Vorteile dieser Art von Sensor, nämlich die Möglichkeit, mehrere Daten von mehreren Sensoren zu sammeln, die an denselben 1-Wire-Bus angeschlossen sind. Und jetzt ist es an der Zeit, es auch zu erkunden.

Wir werden das, was im letzten Tutorial entwickelt wurde, erweitern und jetzt zwei DS18B20-Sensoren überwachen, einen in Celsius und den anderen in Fahrenheit konfiguriert. Die Daten werden an eine Blynk-App gesendet, wie im obigen Blockschaltbild gezeigt.

Schritt 1: Stückliste

  • KnotenMCU ESP 12-E (*)
  • 2 X DS18B20 Temperatursensor
  • Widerstand 4,7K Ohm
  • Brotbrett
  • Verdrahtung

(*) Hier kann jede Art von ESP-Gerät verwendet werden. Am gebräuchlichsten sind die NodeMCU V2 oder V3. Beides wird immer gut funktionieren.

Schritt 2: DS18B20 Temperatursensor

DS18B20 Temperatursensor
DS18B20 Temperatursensor

In diesem Tutorial verwenden wir eine wasserdichte Version des DS18B20-Sensors. Es ist sehr nützlich für abgelegene Temperaturen unter nassen Bedingungen, zum Beispiel auf einem feuchten Boden. Der Sensor ist isoliert und kann bis 125 °C messen (Adafrut empfiehlt aufgrund des PVC-Mantels des Kabels nicht, ihn über 100 °C zu verwenden).

Der DS18B20 ist ein digitaler Sensor, der auch über große Distanzen gut zu verwenden ist! Diese digitalen 1-Draht-Temperatursensoren sind ziemlich genau (±0,5 °C über einen Großteil des Bereichs) und können bis zu 12 Bit Präzision vom integrierten Digital-Analog-Wandler liefern. Sie funktionieren hervorragend mit der NodeMCU mit einem einzigen digitalen Pin, und Sie können sogar mehrere an denselben Pin anschließen. Jeder hat eine einzigartige 64-Bit-ID, die werkseitig eingebrannt ist, um sie zu unterscheiden.

Der Sensor arbeitet von 3,0 bis 5,0 V, was bedeutet, dass er direkt von einem der 3,3 V NodeMCU-Pins mit Strom versorgt werden kann.

Der Sensor hat 3 Drähte:

  • Schwarz: GND
  • Rot: VCC
  • Gelb: 1-Draht-Daten

Hier finden Sie die vollständigen Daten: DS18B20 Datenblatt

Schritt 3: Anschließen der Sensoren an NodeMCU

Anschließen der Sensoren an NodeMCU
Anschließen der Sensoren an NodeMCU
  1. Schließen Sie die 3 Drähte von jedem Sensor am Mini-Breadboard an, wie auf dem obigen Foto gezeigt. Ich habe spezielle Stecker verwendet, um das Kabel des Sensors besser daran zu befestigen.
  2. Beachten Sie, dass beide Sensoren parallel sind. Wenn Sie mehr als 2 Sensoren haben, sollten Sie dasselbe tun.

    • Rot ==> 3.3V
    • Schwarz ==> GND
    • Gelb ==> D4
  3. Verwenden Sie einen 4,7K Ohm Widerstand zwischen VCC (3,3V) und Daten (D4)

Schritt 4: Installieren der entsprechenden Bibliotheken

Um das DS18B20 richtig zu verwenden, werden zwei Bibliotheken benötigt:

  1. OneWire
  2. DallasTemperatur

Installieren Sie beide Bibliotheken in Ihrem Arduino IDE-Bibliotheksdepot.

Beachten Sie, dass die OneWire-Bibliothek die spezielle sein MUSS, die für die Verwendung mit ESP8266 modifiziert wurde, andernfalls erhalten Sie während der Kompilierung einen Fehler. Die letzte Version finden Sie unter obigem Link.

Schritt 5: Testen der Sensoren

Testen der Sensoren
Testen der Sensoren

Laden Sie zum Testen der Sensoren die folgende Datei von meinem GitHub herunter:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

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

* Mehrfachtemperatur-Sendertest * * 2 x OneWire Sensor: DS18B20 * Verbunden mit NodeMCU D4 (oder Arduino Pin 2) * * Entwickelt von Marcelo Rovai - 25. August 2017 **************** **********************************************/ #enthalten # enthalten #define ONE_WIRE_BUS 2 // DS18B20 auf NodeMCU-Pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); Void setup () { Serial.begin (115200); DS18B20.begin(); Serial.println ("Testen von Dual-Sensor-Daten"); aufrechtzuerhalten. Void Schleife () { Float temp_0; Schwimmertemp_1; DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 erfasst Temp in Celsius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 erfasst Temp in Fahrenheit Serial.print ("Temp_0: "); Serial.print (temp_0); Serial.print (" oC. Temp_1: "); Serial.print (temp_1); Serial.println("oF"); Verzögerung (1000); }

Wenn wir uns den obigen Code ansehen, sollten wir feststellen, dass die wichtigsten Zeilen sind:

temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 erfasst die Temperatur in Celsius

temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 erfasst die Temperatur in Fahrenheit

Die erste gibt einen Wert von Sensor [0] zurück (siehe "index(0)") in Celcius (siehe den Teil des Codes: "getTempC". Die zweite Zeile bezieht sich auf Sensor[1] und gibt Daten zurück in Fahrenheit Sie könnten hier "n" Sensoren haben, da Sie für jeden einen anderen "Index" haben.

Laden Sie jetzt den Code in Ihre NodeMCU hoch und überwachen Sie die Temperatur mit dem Serial Monitor.

Das obige Foto zeigt das erwartete Ergebnis. Halten Sie jeden der Sensoren in der Hand, Sie sollten sehen, wie die Temperatur steigt.

Schritt 6: Verwenden von Blynk

Verwenden von Blynk
Verwenden von Blynk
Verwenden von Blynk
Verwenden von Blynk

Sobald Sie mit der Erfassung von Temperaturdaten beginnen, ist es an der Zeit, sie von überall aus anzuzeigen. Wir werden dies mit Blynk tun. So werden alle erfassten Daten in Echtzeit auf Ihrem mobilen Gerät angezeigt und wir bauen dafür auch ein historisches Depot.

Befolgen Sie die folgenden Schritte:

  1. Erstellen Sie ein neues Projekt.
  2. Geben Sie ihm einen Namen (in meinem Fall "Dual Temperature Monitor")
  3. Wählen Sie Neues Gerät - ESP8266 (WiFi) als "Meine Geräte"
  4. Kopieren Sie das im Code zu verwendende AUTH-TOKEN (Sie können es an Ihre E-Mail-Adresse senden).
  5. Enthält zwei "Gauge"-Widgets, die Folgendes definieren:

    • Mit jedem Sensor zu verwendender virtueller Pin: V10 (Sensor[0]) und V11 (Sensor[1])
    • Der Temperaturbereich: -5 bis 100 oC für Sensor [0]
    • Der Temperaturbereich: 25 bis 212 oC für Sensor [1]
    • Die Häufigkeit zum Lesen von Daten: 1 Sekunde
  6. Enthält ein Widget "History Graph", das V10 und V11 als virtuelle Pins definiert
  7. Drücken Sie "Play" (Das Dreieck in der rechten oberen Ecke)

Natürlich teilt Ihnen die Blynk App mit, dass die NodeMCU offline ist. Es ist Zeit, den vollständigen Code in Ihre Arduino-IDE hochzuladen. Sie können es hier bekommen:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Ändern Sie die "Dummy-Daten" mit Ihren eigenen Zugangsdaten.

/* Blyn-Anmeldeinformationen */

char auth = "IHR BLYNK-AUTH-CODE HIER"; /* WLAN-Zugangsdaten */ char ssid = "IHRE SSID"; char pass = "IHR PASSWORT";

Und das ist es!

Unten den vollständigen Code. Es ist im Grunde der vorherige Code, den wir mit Blynk-Parametern und spezifischen Funktionen eingegeben haben. Beachten Sie die 2 letzten Zeilen des Codes. Das sind die wichtigsten hier. Wenn Sie mehr Sensoren haben, die Daten sammeln, sollten Sie auch äquivalente neue Leitungen wie diese haben (mit entsprechenden neuen virtuellen Pins definiert).

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

* IoT Multiple Temperature Monitor mit Blynk * Die Blynk-Bibliothek ist unter der MIT-Lizenz lizenziert * Dieser Beispielcode ist gemeinfrei. * * Mehrere OneWire-Sensoren: DS18B20 * Entwickelt von Marcelo Rovai - 25. August 2017 ********************************* **************************/ /* ESP & Blynk */ #include #include #define BLYNK_PRINT Serial // Auskommentieren an Drucke deaktivieren und Speicherplatz sparen /* Blynk-Anmeldeinformationen */ char auth = "IHR BLYNK-AUTH-CODE HIER"; /* WLAN-Zugangsdaten */ char ssid = "IHRE SSID"; char pass = "IHR PASSWORT"; /* TIMER */ #include SimpleTimer-Timer; /* DS18B20 Temperatursensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 auf Arduino Pin2 entspricht D4 auf der physischen Platine 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 ("Testen von Dual-Sensor-Daten"); aufrechtzuerhalten. Void Schleife () {timer.run (); // Initiiert SimpleTimer Blynk.run(); } /**************************************************** *** * Sensordaten an Blynk senden ********************************************* *********/void getSendData() { DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 erfasst Temp in Celsius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 erfasst Temp in 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); // virtueller Pin V10 Blynk.virtualWrite (11, temp_1); // virtueller Pin V11}

Sobald der Code hochgeladen wurde und ausgeführt wird, überprüfen Sie die Blynk-App. Es sollte jetzt auch auf meinem iPhone laufen, wie auf dem obigen Druckbildschirm gezeigt.

Schritt 7: Fazit

Abschluss
Abschluss

Wie immer hoffe ich, dass dieses Projekt anderen helfen kann, sich in der aufregenden Welt der Elektronik, Robotik und des IoT zurechtzufinden!

Bitte besuchen Sie meinen GitHub für aktualisierte Dateien: NodeMCU Dual Temp Monitor

Für weitere Projekte besuchen Sie bitte meinen Blog: MJRoBot.org

Saludos aus dem Süden der Welt!

Wir sehen uns bei meinem nächsten instructable!

Dankeschön, Marcelo

Empfohlen: