Low-Power Sensornetzwerk

In der Vergangenheit habe ich mich mit Low-Power Sensornetzwerken befasst und hier im Blog darüber berichtet:

Grundsätzlich stehen für die Kommunikation WiFi, BLE und LoRa zur Verfügung. Jede Kommunikation hat dabei spezielle Eigenschaften bezüglich Reichweite, Payload und Strombedarf.

Angeregt durch den Beitrag ESP32 – Ultra-Long Battery Life With ESP-NOW habe ich ESP-NOW in meine Betrachtungen mit einbezogen.

ESP-NOW ist ein proprietäres, von Espressif entwickeltes Protokoll, das es mehreren Geräten ermöglicht, ohne WiFi miteinander zu kommunizieren. Vor der Kommunikation ist ein Pairing zwischen den kommunizierenden Geräten erforderlich. Nach dem Pairing ist die Verbindung sicher und Peer-to-Peer, ohne dass ein Handshake erforderlich ist. Nach dem Pairing ist die Verbindung persistent, d.h. nach einem Reset oder Spannungsausfall eines Teilnehmers erfolgt eine erneute Verbindungsaufnehme automatisch.

Zur Einarbeitung empfehle ich den Beitrag Getting Started with ESP-NOW (ESP32 with Arduino IDE) von Rui Santos, da ich hier nicht auf alle Details eingehen möchte.

Die folgenden Kommunikationsmöglichkeiten bietet ESP-NOW. Zwei Controller können entweder unidirektional (One-Way) oder bidirektional (Two-Way) miteinander kommunizieren.

One-to-One-Connection

Die Kommunikation kann aber auch in der Form One-to-Many bzw. Many-to-One erfolgen. Die folgenden Abbildungen zeigen das jeweilige Layout des Netzwerks.

One-to-Many-Connection
Many-to-One-Connection

Damit eine zielgerichtete Kommunikation aufgebaut werden kann, muss der Sender die Adresse des jeweiligen Empfängers kennen. Verwendet wird hier die MAC-Adresse (Media Access Control Address) des berteffenden Controllers – eine eindeutige Hardware-Kennung, die jedes Gerät in einem Netzwerk identifiziert.

Mit dem Programm get_ESP_MAC_Address.ino kann die MAC-Adresse eines ESP32 oder ESP8266 abgefragt werden.

Abfrage MAC Adresse

Ich möchte im folgenden ein Sensornetzwerk aufbauen, dessen Sensorknoten aus batterie- bzw. solarbetriebene DFRobot FireBeetle ESP32-E oder ThingPulse ePulse Low Power ESP32 Boards besteht, die die erhobenen Messwerte über ESP-NOW an ein ThingPulse ESP-Gateway senden. Der zweite ESP32 im Gateway übernimmt dann diese Daten und bereitet sie zum Versenden über MQTT auf.

Sensornetzwerk

Als Sensor verwende ich jeweils eine M5Stack ENV.II Unit, die einen Sensirion SHT31 und einem Bosch BMP280 Sensor beinhaltet. Es lassen sich also Temperatur, relative Luftfeuchtigkeit und barometrischer Druck erfassen. Der Sensor wird über den I2C-Bus an den ESP32 angeschlossen.

Jeder Sensorknoten erfasst über seine M5Stack ENV.II Unit die Messdaten und sendet diese über ESP-NOW an einen ESP32 (ESP1) des ESP-NOW Gateways (ESP_SensorNode.ino).

Die seriellen Ausgaben der Sensorknoten und des ESP-NOW Gateways (ESP1) sind in den folgenden Abbildungen gezeigt. Die Anzeige im ESP-NOW Gateway ist auf Werte gerundet, die der Messgenauigkeit der Sensoren entsprechen.

Erfassung von ENV.II Messdaten mit zwei Sensorknoten und Anzeige der erfassten Daten im ESP-NOW Gateway (ESP1)

Die erfassten Messdaten werden dann vom ESP1 mit Hilfe des Programms ESP-NOW_Gateway.ino seriell an den ESP2 des ESP-NOW Gateways übertragen und dort in MQTT-Messages übersetzt.

Serielle Ausgaben ESP2 des ESP-NOW Gateways

Ich sende mit dem Programm ESP-NOW_Gateway_WiFi.ino die Messages an den Public MQTT Broker von HiveMQ. Die folgende Abbildung zeigt die erhobenen Temperaturmesswerte (sht31Temperature & bmp280Temperature) von zwei angeschlossenen Sensorknoten.

Public Broker HiveMQ

Die auf dem MQTT Broker abgelegten Daten können nun von einem weiteren MQTT Client abonniert (subscribed) und zur Anzeige gebracht werden.


2021-10-12/ck

Veröffentlicht von ckuehnel

Mein aktuelles Profil ist unter https://www.linkedin.com/in/ckuehnel zu finden.

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: