In diesem Projekt werden Daten zwischen zwei senseBox MCU-S2 verschickt. Eine senseBox nimmt Daten mit einem Sensor auf (in diesem Fall mit dem Temperatur und Luftfeuchtigkeitssensor HDC1080) und verschickt sie an eine zweite senseBox, welche die Daten dann auf einem Display anzeigt. Dafür wird die integrierte WiFi Funktionalität der senseBox MCU-S2 verwendet. Mit dem Kommunikationsprotokoll ESP-NOW können senseBoxen direkt miteinander kommunizieren ohne Verbindung mit einem WLAN-Netzwerk.

Aufbau

Schließe den Sensor per Qwiic Kabel an eine I2C Schnittstelle einer der senseBoxen an. Diese wird die sendende SenseBox sein.

/images/projects/ESP-NOW/0.png - Logo

Schließe den Display per Qwiic Kabel an eine I2C Schnittstelle der anderen senseBoxen an. Diese wird die empfangende senseBox sein.

/images/projects/ESP-NOW/1.png - Logo

Programmierung

Die Programmierung der Messstation wird in Blockly durchgeführt. Wähle dafür die senseBox MCU-S2 als Board aus.

Um das ESP-NOW Protokoll zu verwenden, muss die sendende senseBox die MAC-Addresse der erhaltenden senseBox kennen. Deshalb wird im 1. Schritt ein Skript zum Ausgeben der MAC-Addresse erstellt. Danach wird das Skript zum Daten Aufnehmen und Senden implementiert. Im letzten Schritt das Skript zum Daten Empfangen und Anzeigen programmiert.

Schritt 1: MAC-Addresse des Empfängers anzeigen

Initialisiere das Display und ESP-NOW im Setup() und füge den Block Zeige auf dem Display in die Endlosschleife ein. Mit dem Block Schreibe Text/Zahl kannst du die MAC-Addresse auf dem Display anzeigen lassen. Füge dafür bei ‘Wert’ den Block Mac-Addresse ein. s

/images/projects/ESP-NOW/2.png - Logo

Führe diesen Code auf der empfangenden senseBox mit Display aus. Die MAC-Addresse die auf dem Display ausgegeben wird benötigst du im nächsten Schritt.

Schritt 2: Messdaten aufnehmen und senden

Erstelle ein neues Skript um nun Messwerte zu verschicken. Initialisiere erneut ESP-NOW im Setup() und füge danach den Block Verbindung mit Empfänger herstellen hinzu. Im Textfeld ‘Mac-Addresse’ kannst du nun die MAC-Addresse eingeben, die dir im ersten Schritt auf dem Display ausgegeben wurde. Füge als nächstes den Block Sende Nachricht an Empfänger in der Endlosschleife() ein und gib auch hier die MAC-Addresse an. Als Nachricht kannst du nun den Block Temperatur-Luftfeuchtigkeitssensor (HDC1080) aus der Sensor Gruppe einfügen. Am Ende der Endlosschleife() wird dann noch 100 Millisekunden lang gewartet mittels eines Warte-Blocks.

/images/projects/ESP-NOW/3.png - Logo

Führe diesen Code auf der sendenden senseBox mit Sensor aus.

Schritt 3: Messdaten empfangen und anzeigen

Erstelle ein neues Skript um die verschickten Messwerte zu empfangen. Initialisiere erneut den Display und ESP-NOW im Setup(). Füge dann als nächstes den Block Wenn Nachricht ‘message’ erhalten von ‘mac_address’ zum Setup() hinzu. Dieser Block reagiert auf empfangene Nachrichten und speichert diese in der Variable ‘message’ (und die MAC-Addresse in der Variablen ‘mac_address’). Füge nun in diesen Block den Block Display löschen und dann Zeige auf dem Display ein. In Zeige auf dem Display wird erneut ein/e Text/Zahl angezeigt. Wähle aus der Gruppe der Variablen die Variable ‘message’ und füge sie beim Wert ein.

/images/projects/ESP-NOW/4.png - Logo

Führe diesen Code auf der empfangenden senseBox mit Display aus.

Verwendung

Wenn du nun beide senseBoxen gleichzeitig laufen lässt zeit die senseBox mit Display den Messwert der senseBox mit Sensor an. Du kannst nun zB die sendende senseBox draussen aufstellen und dir mit der empfangenden senseBox die Werte drinnen anzeigen lassen.