In diesem Recipie schauen wir uns an wie wir die ESP Microcontroller nutzen können um Daten per WiFi versenden und empfangen zu können. Was für Daten du versendest oder was die Empfangenen Daten auslösen kann natürlich von Projekt zu Projekt variieren. In diesem Beispiel verwenden wir das ESPNOW Protokoll um ein Wifi aufzubauen und einen fliegenden Wal fernzusteuern.

Prolog

Für diesen Versuch benötigen wir 2 ESP Boards, eines als Sender das andere als Empfänger. Sowohl ESP32 und ESP8266 funktionieren in fast allen Geschmacksrichtungen.

Die Bluetooth- und WiFi-Fähigkeiten dieser Geräte werden durch ein integriertes 2,4-GHz-Funk-Modul ermöglicht. Dieses Modul kann auch für andere Kommunikationsanwendungen verwendet werden, die das nicht lizenzierte 2,4-GHz-Band nutzen.

Espressif, die Hersteller des ESP8266 und ESP32, haben ein Protokoll entwickelt, das es all diesen Geräten ermöglicht, ein privates, drahtloses Netzwerk aufzubauen. Dies ist ein vom WiFi-Netzwerk getrenntes Netzwerk, das nur von Mikrocontrollern des ESP-Typs genutzt werden kann.

Airborne Adornments von Tobias Bieri

Tobias Bieri hat für sein BA Projekt in XS Schmuck «Airborne Adornments» einen fliegenden Walfisch konstruiert, der über einen eigens dafür entwickelten Controller Ferngesteuert werden kann. Der Controller Versendet Daten von Druck- und Gyroskopsensoren und steuert damit die Bewegungsmuster der Schwanz- und Brustflossen des fliegenden Wals. 

Vorbereitung

Für unser Experiment nutzten wir zwei verschiedene Boards: Als Sender Seeedstudio XIAO ESP32-C3 und als Empfänger das Adafruit QT Py ESP32-S2. Auf den Grund für diesen Mix an Boards wird im Hardware Abschnitt näher eingegangen.

Bill of Material

Sender

  • Seeedstudio XIAO ESP32-C3
  • 16340 Batterie Shield
  • 16340 Li-Ion Batterie
  • 1x kOhm Wiederstand
  • 1x analoger Drucksensor
  • 1x GY87 Gyroskop Sensor

Empfänger

Allgemein

  • Litzen 26AWG
  • Prototypenboard
  • Ein wenig Lötzinn

File Download: Code

Die .ino- Files (Arduino Code) für den Aufbau dieses Recipies findest du hier:

https://github.com/MediaDock/ESPNOW_RemoteControl

Hardware

Wieso der XIAO ESP 32- C3 Microcontroller?

Wie schon erwähnt sollte ESPNOW auf allen ESP32 und ESP8266 laufen. Die Wahl für diesen Micorcontroller war der Formfaktor. Tobias Bieri wollte in seinem Projekt einen fliegenden ferngesteuerten Fisch bauen und da das Helium in diesem Ballon nur einen begrenzten Auftrieb produzieren kann mussten wir mit der Elektronik so leicht und klein wie irgendwie Möglich werden. Aufgrund dessen entschieden wir uns zuerst für ein Setup mit 2 XIAO ESP 32-C3 Controllern. Das Messen, Versenden wie Empfangen von Sensorwerten funktionert einwandfrei mit diesen kleinen Boards.

Wieso der Adafruit QT Py ESP32-s2 Microcontroller?

Alles schien in der ersten Testphase mit 2 XIAO Mikrokontroller gut zu funktionieren: die Kommunikation  reibungslos und die Daten wurden zuverlässig versendet und empfangen. Wir wollten mit den empfangenen Daten aber Servos betreiben. Der XIAO ESP32-c3 Microcontroller war zum Zeitpunkt der Entwicklung in unserem Setting nicht fähig einen Servo sauber über PMW anzusteuern. Weshalb wir den Entscheid fällten auf ein anderes Chipset zu wechseln. Mit dem QT Py ESP32-S2 mit gleichem Footprint gefunden, dass mit einer Library Reibungslos funktionierte und mit unseren Servos kommunizieren konnte.

Achtung 3.3V Logik

Bitte beachte unbedingt, dass XIAO sowie Adafruit QT PY mit einer 3.3V Logik läuft! 5V können das Board beschädigen und den Magic Smoke provozieren!

Software

Arduino-IDE installieren

Lade die Arduino-IDE herunter und installiere sie entsprechend deinem Betriebssystem:

Falls du einen Guide für die Installation der Arduino-IDE brauchst, findest du ihn hier:

Seeedstudio XIAO und Adafruit QT Py im Boardsmanager der Arduino-IDE installieren

Bevor wir die Arduino IDE mit den Boards verwenden können, müssen wir einen weiteren Boardmanager installieren. Wir müssen folgende zwei Schritte unternehmen: die Installation des neuen Boardmanagers und die Installation der Boards selbst.

1. Installiere den Seeeduino ESP und Adafruit QT Py im Boards Manager

Seeedstudio verfügt über einen Boardmanager, der mit dem XIAO und vielen anderen Seeeduino-Produkten funktioniert. Er kann wie folgt installiert werden:

  • Öffne die Arduino-IDE
  • Klicken auf das Menü
    • Mac: ‹Arduino›  und dann auf ‹Preferences›
    • Windows: ‹File› und dann auf ‹Preferences›
  • Das Fenster ‹Einstellungen› wird geöffnet.
  • Suche das Textfeld ‹Additional Boards Manager URLs› am unteren Rand des Einstellungsfensters.

Öffne dieses Feld mit einem klick auf das Symbol rechts:

Kopiere folgende URLs und füge sie der Liste hinzu:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

2. Installiere die ESP32 Boards

Nun, da der neue Boardsmanager in deiner Arduino-IDE installiert wurde, kannst du den letzten Schritt durchführen – die Installation der ESP32 Boards selbst.

Zum Öffnen des Boardsmanagers gehe zum Menüpunkt ‹Tools› im oberen Menü und wähle ‹Boards Manager› oder klicke bei der neuen Arduino-IDE auf das Boardsmanager-Icon links im Fenster. Danach kannst du über ‹Filter your search› das esp32 suchen und installieren.

Danach solltest du beide Boards im Boardsmanager unter ESP32 Arduino finden.

Libraries in der Arduino IDE installieren

Wir brauchen nur eine spezielle Library um die Servos auf Seiten des Empfängerszu betreiben:

Alles installiert? Dann geht es los mit dem Aufbau! Löte die Komponenten wie im Diagramm aufgezeigt zusammen.

Aufbau

Das Wiring unseres Versuchs kannst du wie folgt vornehmen: Beim Sender haben wir einen Druck- und einen Gyrosensor angehängt selbst verständlich kannst du auch andere Sensoren anhängen und die damit gemessenen Daten versenden.

Sender mit Gyro- und Drucksensor

Empfänger mit Servos

Der Empfänger verarbeitet die Daten vom Gyrosensor und löst je nach Signal ein bestimmtes Bewegungsmuster im Sensor aus. Du kannst bis zu 4 Servos am Adafruit QT Py ESP32-S2 anhängen. Bitte beachte aber, dass für die Servos unter umständen eine Externe Stromversorgung nötig ist! Die Stromversorgung des Boards alleine kann problemlos ein bis zwei MicroServos mit Strom versorgen. Willst du mehr oder grössere Servos betreiben solltest du unbedingt eine externe Stromversorgung nutzen.

Code Upload

Das ESPNOW Protokoll lässt sich in verschiedenen Szenarien nutzen: wir können die Daten an verschiedene Geräte versenden und ein Mesh Netzwerk aubauen in dem jedes Board sowohl Empfänger als auch Sender ist. Oder wir versenden unsere Daten an ein spezifisches Gerät. In diesem Beispiel nutzen wir die MAC- Adresse um unsere Daten nur an unseren Empfänger zu senden.

Wenn du mehr über dieses Protokoll wissen willst empfehle ich dir diesen Beitrag von DroneBotWorkshop der eine sehr gute Zusammenfassung der Möglichkeiten von diesem Protokoll aufzeigt.

1.) Mac Adresse des Empfängers abrufen

Um die MAC-Adresse unseres Empfängers abzurufen laden wir das File 1st_Print_MacAdress.ino auf unseren Empfänger hoch und schauen im Serial Monitor der Arduino IDE welche MAC- Adresse ausgegeben wird.

2.) Mac Adresse einfügen und Datenübertragung testen

Nachdem du nun die MAC Adresse notiert hast können wir mit dem Programmieren des Empfängers fortfahren. Auf der Zeile 43 des Files 2nd_ESPNOW_Transmitter_ForceSensor.ino musst du nun die MAC Adresse des Empfängers eintragen:

Sobald du den Sender wie Empfänger mit den 2nd Files bespielt hast, sollten deine Sensorwerte im Serial Port des Empfängers lesbar sein und bei genügend Druck auf den Drucksensor den Servo in Bewegung versetzen.

3.) Applikationen mit zusätzlichen Sensoren und Servos erweitern

Funktioniert die Übertragung, so kannst du sowohl die Sender wie Empfänger Sketches erweitern. In unserem Beispiel habe ich die Sender Seite mit 3 Drucksensoren und einem Gyrosensor erweitert.

Auf der Empfänger Seite habe ich 3 Servos angebracht. Die Werte der Druck und Gyrosensoren werden ausgewertet und der grösste Wert wird bestimmt um ein spezifisches Bewegungsmuster bei den Servos auszulösen.

Autor: teammediadock