4  Mehr Projekte

Das Heltec LoRa V3 Board vom vorherigen Projekt ist mit gut 20 € relativ teuer. Wenn man auf LoRa verzichtet und nur auf WiFi setzt wird es wesentlich günstiger. Von unüberschaubar vielen Boards möchte ich zwei vorschlagen, das Xiao ESP32-C3 und das Raspberry Pico W, die um die 5 € kosten.

Beide Mikrocontroller haben WiFi (und auch Bluetooth) eingebaut. Sie können also damit drahtlos vernetzte Anwendungen bauen. Ich empfehle die Contoller mit Micropython zu programmieren.

4.1 ESP32-C3

Das Xiao ESP32-C3 Board. Es enthält den gleichnamigen Microcontroller ESP32-C3 von der chinesischen Firma Espressif. Eine Besonderheit ist, daß er mit einer RISC-V CPU ausgestattet ist. Der Befehlssatz von RISC-V ist ein offener Standard, siehe https://de.wikipedia.org/wiki/RISC-V.

Die beiden Bilder sind von hier

Auf dem Bild sieht man den Xiao ESP32-C3 der an die zwei folgenden Sensoren angeschlossen ist:

  • AHT20 (Temperatur und Feuchte)
  • BME280 (Temperatur, Feuchte und Luftdruck)

Der dritte Sensor auf der Oberseite ist nur dort geparkt.

Einige Micropython Dateien sind in $WORKSHOP_REPO/xiao-esp32c3/:

  • xiao-esp32c3/ahtx0_demo.py

    Demonstriert, wie man WiFi einschaltet, sich mit einem AP verbindet und wie man den umqtt.simple MQTT Client in Micropython verwendet. Den AHTx0 Sensor (AHT10, AHT20) haben wir nicht an der Akademie, da müssen Sie was anderes verwenden.

  • xiao-esp32c3/urequests_demo.py

    Demonstriert wie man das urequests Modul in Python verwendet.

  • xiao-esp32c3/files.py

    Datei öffnen, schreiben, schliessen in Micropython.

Tasmota

Frisch vom Händler ist das Xiao Board mit der Tasmota Firmware von Theo Arends ausgestattet. Es ist Open-Source Software, siehe https://github.com/arendst/Tasmota. Mit Tasmota kann man IoT Geräte bauen ohne diese programmieren zu müssen. Optional kann man auch die eingebaute einfache Skriptsprache Berry verwenden, sie erinnert stark an Python. Die Firmware bietet bereits eine Fülle an Möglichkeiten, die man einfach Konfigurieren kann. Tasmota wird nach aussen hin über MQTT, Web Requests (also HTTP/REST), über die Web-UI (es ist ein Webserver eingebaut) und über die serielle Schnittstelle angesprochen. Viele kommerzielle Geräte werden mittlerweile mit dieser Firmware ausgestattet, z.B. die Delock 11827 Steckdose mit Leistungsmesser (https://www.delock.de/produkt/11827/merkmale.html).

Die Homepage ist unter https://www.tasmota.info, zur Doku geht es hier: https://tasmota.github.io/docs/.

Tasmota Web UI

Nach dem Anstecken an USB macht es einen eigenen WiFi AP auf, der tasmota-xxx-yyy heisst, die Platzhalter xxx und zzz sind dann mit individuellen Zahlen gefüllt, die z.B. von der MAC Adresse stammen.

Nun geht man im Browser auf http://192.168.4.1 und kommt auf die Web UI.

Wer Tasmota nicht mehr auf dem Board hat und es flashen möchte geht so vor:

  1. Firmware binary tasmota32c3cdc.factory.bin von https://ota.tasmota.com/tasmota32/release-12.0.2 holen

  2. Flashen mit

    $ esptool.py write_flash 0x0 tasmota32c3cdc.factory.bin
  3. Nach dem Neustart nach dem Flashen sieht man den Tasmota WiFi AP und kann sich über den Browser verbinden.

Tipp: Neben Tasmota gibt es noch zwei andere grosse ähnliche Projekte: ESPEasy (https://www.letscontrolit.com/wiki/index.php/ESPEasy) und ESPHome (https://esphome.io/index.html). Mit allen lassen sich sehr schnell Geräte realisieren, die man in gängige Hausautomatisierungen wie Home Assistant (https://www.home-assistant.io) integrieren kann.

4.2 Raspberry Pico W

Die Abbildung zeigt die Pin-Belegung des Pico W. Der schwarze Baustein auf dem Board mit der Himbeere ist der RP2040 Microcontroller. Er enthält zwei Cortex-M0+ CPUs der Firma ARM.

Das Bild ist von hier

Der Pico W auf einem Steckbrett. Vorher muss man die Pinleisten einlöten. Das Modul im Metallgehäuse ist eine kombinierte WiFi/Bluetooth Einheit, die einen CYW43439 Chip von Infineon eingebaut hat.

Pico W auf einem Steckbrett

Hier ist eine Anleitung wie man mit der Thonny IDE den Raspberry Pico W mit Micropython ausstatten kann:

https://randomnerdtutorials.com/getting-started-raspberry-pi-pico-w

Unter Linux installiert man Thonny mit sudo apt install thonny.

Literatur

4.3 Aufgabenideen

Hier sind mögliche Anregungen für Aufgaben. Gerne eigene Ideen realisieren!

Schauen Sie sich die Liste der Anleitungen von Randomnerdstutorials an, da bekommen Sie sicher Anregungen was man machen könnte.

Aufgabenidee 1

Statten sie den Controller mit einem kleinen Webserver in Micropython aus, der Sensordaten ausliefert. Sie können dann entweder von aussen mit ihrem Notebook im Browser zugreifen oder auch den Zugriff über curl oder Python (requests Modul) automatisieren. Mit den gelesenen Daten können Sie machen was sie wollen, lassen sie ihrer Phantasie freien Lauf. Ein paar Anregungen:

  • Abspeichern in eine Datei, z.B. im CSV Format
  • Plotten mit Matplotlib, Bokeh, Plotly/Dash, …
  • Daten in eine Zeitseriendatenbank schreiben (QuestDB)

RNT Anregung: https://randomnerdtutorials.com/micropython-esp32-esp8266-bme280-web-server

Aufgabenidee 2

Anstatt die Daten vom Mikrocontroller zu holen (pull Modell), könnte der Controller sie auch aktiv auf ihren Rechner schieben (push Modell). Sie brauchen also nun keinen Webserver auf dem Controller, sondern nehmen das Micropython requests Modul und lösen regelmässig PUT oder POST HTTP Requests aus. Nun muss auf dem Notebook ein Webserver laufen, mit dem Sie die Requests entgegen nehmen. Sie können mit dem Python http.server Modul einen ganz simplen Webserver bauen, der dann die Daten weiter verarbeitet.

RNT Anregung: https://randomnerdtutorials.com/raspberry-pi-pico-w-http-requests-micropython

Aufgabenidee 3

Sie können vom Mikrocontroller über das UDP Protokoll (UDP socket) direkt in die QuestDB Zeitseriendatenbank schreiben, die auf dem Notebook in einem Container läuft. Das geht mit dem InfluxDB Line Protocol das die QuestDB bereitstellt, siehe https://questdb.com/docs/reference/api/ilp/overview/.

Aufgabenidee 4

Einen “IoT Knopf” bauen, der Nachrichten auf https://ntfy.sh schickt (mit ESP32-C3 und Micropython).

Anregung: IoT-WLAN-Button c’t Artikel

Aufgabenidee 5

Die Firma Espressif hat ein freies Buch zum ESP32-C3 geschrieben, Wireless Adventure: A Comprehensive Guide to IoT, 2023, 423 Seiten:

https://www.espressif.com/sites/default/files/documentation/ESP32-C3%20Wireless%20Adventure.pdf

Lassen Sie sich davon inspirieren!

Aufgabenidee 6

Flashen Sie das Xiao ESP32-C3 Board mit der Tasmota Firmware, falls diese nicht schon drauf ist (im neuen Zustand sollte diese bereits vorhanden sein). Schliessen Sie ein paar einfache Peripheriebauelemente an, Taster und LED reichen. Konfigurieren sie in Tasmota einen MQTT Client, der den Taster (publish) und die LED (subscribe) mit einem externen MQTT Broker verbindet. Nutzen Sie als Broker zum Beispiel den mosquitto Container oder gehen Sie auf einen öffentlichen Server wie https://test.mosquitto.org oder https://broker.hivemq.com.