M5Stack

In den letzten Wochen beschäftigte ich mich mit unterschiedlichen Mikrocontrollern und Geräten auf Basis des ESP32. Dabei stieß ich auf die Produkte des chinesischen Herstellers M5Stack.

Die Stick S3 von M5Stack

Bei M5Stack handelt es sich nicht nur um einen Hersteller einzelner Entwicklungsboards, sondern um ein relativ umfangreiches Ökosystem. Angeboten werden unterschiedliche Mikrocontroller, Displays, Sensoren und Erweiterungsmodule. Interessant sind hierbei vor allem die Geräte, welche bereits mit Display, Gehäuse, Tasten und je nach Modell einem Akku ausgestattet sind.

Interessant ist das System vor allem dann, wenn nicht die Entwicklung der Hardware selbst im Vordergrund steht. Für ein klassisches Mikrocontrollerprojekt müssen neben dem Mikrocontroller meist Display, Stromversorgung und Bedienelemente ausgewählt und miteinander verbunden werden. Hier kann hingegen gleich mit fertiger Hardware gestartet werden, welche trotzdem über entsprechende Schnittstellen erweitert werden kann.

Die Stopwatch von M5Stack

Das Angebot selbst ist mittlerweile relativ unübersichtlich geworden und besteht aus einer Reihe unterschiedlicher Produktfamilien. Dazu gehören unter anderem die Core-, Stick-, Atom-, Stamp- und Paper-Geräte.

Für die Programmierung stellt M5Stack mit UIFlow eine eigene Entwicklungsumgebung zur Verfügung. Daneben können die Geräte unter anderem über das Arduino- und Espressif-Ökosystem programmiert werden. Da viele der Geräte auf Mikrocontrollern von Espressif basieren, ist daneben die Entwicklung mit Rust interessant. Für den ESP32 existiert mittlerweile eine entsprechende Rust-Unterstützung. Bei spezielleren Komponenten der M5Stack-Geräte kann es allerdings notwendig sein, entsprechende Treiber oder Abstraktionen selbst zu implementieren.

In Deutschland können die Geräte z. B. über BerryBase bezogen werden, auch wenn viele Geräte im Moment schnell ausverkauft sind.

WLED auf einen ESP8622 flashen

Seit einigen Jahren existieren LED-Strips mit einzeln adressierbaren LEDs. Diese können für unterschiedlichste Projekte genutzt werden und z.B. über einen Arduino angesteuert werden. Auch über einen ESP8622 kann eine solche Ansteuerung vorgenommen werden. Wer die nicht von Hand tun möchte und mehr eine Lösung aus einem Guss benötigt, der sollte sich WLED ansehen.

Der ESP8266 auf einem Entwicklungsboard

Bei WLED handelt es sich um ein Open-Source-Projekt, welches speziell für die Steuerung von adressierbaren LED-Streifen entwickelt wurde. Es ermöglicht LED-Streifen einfach zu konfigurieren und zu steuern, um Lichteffekte zu erzeugen. WLED kann auf hierbei auf dem ESP8266 und ESP32 installiert werden.

Um WLED auf einem ESP8266 zu installieren, muss im ersten Schritt das esptool installiert werden (in diesem Fall mittels Homebrew unter macOS):

brew install esptool

Nachdem das entsprechende WLED-Binary heruntergeladen wurde, kann mit dem Flash-Vorgang begonnen werden:

esptool.py write_flash 0x0 ./WLED_0.15.0-b4_ESP8266.bin 
esptool.py v4.7.0
Found 3 serial ports
Serial port /dev/cu.wlan-debug
Connecting......................................
/dev/cu.wlan-debug failed to connect: Failed to connect to Espressif device: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Serial port /dev/cu.usbserial-21420
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 60:01:94:2d:8b:e7
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x000d9fff...
Compressed 890480 bytes to 641849...
Wrote 890480 bytes (641849 compressed) at 0x00000000 in 62.1 seconds (effective 114.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Ist der Flashvorgang erfolgreich vonstattengegangen, so startet die Firmware und öffnet einen WLAN-AP mit dem Namen WLED-AP. Über das initiale Passwort wled1234 kann nun die Konfiguration vorgenommen werden.