- Software
Die M5Stack Controller können auf unterschiedliche Arten programmiert werden:
Programmiersprache | Library/Framework/Runtime | Tools |
---|---|---|
C/C++ | Arduino Library | Arduino IDE, Platformio |
C/C++ | Espressif Framework | Platformio |
Python | MicroPython | Visual Studio Code / flow.m5stack |
C# | .NET nanoframework | Visual Studio |
Bei der Entwicklung mit dem .NET nanoframework oder MicroPython erfolgt die Ausführung der Applikation mithilfe einer Runtime, die zuvor auf den ESP geflasht wird. Das bringt Vorteile, wie einfacheres Debugging und die Möglichkeit Höhere Programmiersprachen wie Python oder C# einzusetzen. Zudem muss sich der Entwickler nicht um komplexes Speichermanagement kümmern. Der Nachteil zeigt sich in einer schlechteren Performance. Zudem ist es meistens notwendig, dass Sensoren, Bus-Protokolle (I2C) in der Runtime implementiert sind, da die Implementation von Geräten in den höheren Programmiersprachen meistens schlechte Performance bringt. Weiter benötigt das flashen von Bare Metal Programmen meistens viel Länger.
Um die Low -level Programmierung kommt man bei komplexeren Projekten früher oder später nicht herum.
Um die Welt von Mikroprozessoren und IoT Geräten besser kennenzulernen und den Einstieg zu erleichtern, empfiehlt es sich mit Höheren Programmiersprachen zu arbeiten, da C/C++ einige Hürden mit sich bringt.
- UIFlow - empfohlen
- .NET nanoframework - empfohlen
- Visual Studio Code mit Micropython
- Arduino IDE
Dazu ist, zuerst der richtige Hardware Driver zu installieren und anschliessend ein Firmware Update durchzuführen.
Die Videoanleitung weiter unten zeigt, wie man die UIFlow auf den M5stack flasht.
Die nötigen Schritte sind im Quick Start jedes Controllers beschrieben.
- M5Stack BASIC
- M5Stack Core2 - empfohlen.
- M5StickC Plus
- Atom Lite und Matrix
Die nachfolgenden Anleitungen gehen auf Besonderheiten ein, welche in den Quick Start Tutorials fehlen.
Der Hardware Driver stellt einen USB Seriellen Port (Windows COMx, Linux/Mac /dev/ttyUSB) zur Verfügung.
Über diesen wird der Controller programmiert, Firmwware Updates durchgeführt, die Konfigurations (z.B. WLAN) geändert.
- M5Stack Controller brauchen den cp210x driver.
- M5Stick und Atom brauchen den FTDI USB Driver. Der von Windows installierte Driver funktioniert nicht sauber.
Dient zum Updaten der Firmware und Einstellen von Konfigurationen wie z.B. WLAN SSID und Password.
- Configuration - setzt WLAN SSID, Start Mode etc.
- Download oder Burn - Downladen und Firmware auf Controller updaten.
Tip: beim Updaten der Firmware, WLAN SSID und Password frei lassen. Tests haben ergeben, dass diese Werte mittels Configuration sauberer gesetzt werden.
Dieses Tools sollte immer Installiert werden, um die Controller in den Urzustand zurück setzen zu können.
Mittels des Burning Tools, erfolgt auch die Konfiguration der Controller.
Den API Keys braucht es für die Programmierung des Controllers via Web.
Die verschiedenen Start Mode haben folgende Bedeutung:
- Internet Mode - Programmierung erfolgt mittels Web IDE - https://flow.m5stack.com
- USB Mode - Programmierung erfolgt via Offline UIFlow IDE
- APP Mode - das letzte Programm wird ausgeführt. I.d.R. gespeichert als
main.py
. Eine Programmierung ist diesem Mode nicht möglich.
Die Modi können via Burning Tool oder nach einem Reset/Power
umgestellt werden.
Eine Anleitung findet sich am Ende jeden Quick Start Tutorials.
Ansonsten sind nur WLAN SSID und Password zu setzen. Die anderen Werte sollten auf den Standardeinstellungen belassen werden.
Die UIFlow ist die bevorzugte Entwicklungsumgebung für die Controller.
Vereinfach basiert UIFlow auf Micropython und Blockly bzw. vereint diese zu einem Produkt.
Die Programmierung kann Grafisch (empfohlen) oder via Micropython erfolgen.
In der Grafischen Ansicht, können neue Sensoren oder Aktoren via +
Button unter Units
hinzugefügt werden. Pin Belegungen, werden dann automatisch, je nach Controller, automatisch gesetzt. Unter Units
werden mögliche Befehle angezeigt.
In der Python
Ansicht sind evtl. bereits gespeicherte Python Scripts auf dem Controller sichtbar. Auch können neue Scripts angelegt oder bestehende verändert werden.
main.py
ist I.d.R. das Hauptprogramm, welches im App Mode ausgeführt ist.
Tip: Web Version von UIFlow verwenden und gleichzeitig COM Monitor im Burning Tool öffnen. Im COM Monitor werden Debugging und Fehlermeldungen angezeigt.
- Modus: USB-Mode
Mit dem vscode-m5stack-mpy Plugin kann der M5Stack Core2 bequem mit dem Visual Studio Code programmiert werden.
Stand 28.02.2022: Dem Original Plugin fehlt leider ein Serial Output. Deshalb wird empfohlen, diesen Fork zu verwenden: https://github.com/alptbz/vscode-m5stack-mpy/releases
Installation:
- Ctrl + Shirt + P
Extensions: Install from VSIX...
wählen- Heruntergeladene VSIX Datei auswählen
A Python-based, open-source, platform-independent utility to communicate with the ROM bootloader in Espressif chips.
https://github.com/espressif/esptool
Teilweise spinnt der M5Stack Core2 und es ist notwendig diesen komplett zurückzusetzen.
- Im Verzeichnis von
esptool.exe
PowerShell öffnen - Befehl unten eingeben.
COM?
ersetzen mit entsprechenden serial port.
.\esptool.exe --port COM? erase_flash
- M5stack Core2 ausstecken und mit dem Ein/Aus Schalter ausschalten.
- Den M5Stack Core2 wieder einstecken und einschalten. (Der Bildschirm bleibt schwarz)
- Weitere Schritte abhängig von gewünschter Firmware.
Das Adafruit MicroPython tool - ampy ist ein nützliches Werkzeug um Python Dateien von/nach den Controllern zu kopieren.
Die so kopierten Python Dateien, können dann über das App Menu gestartet werden. Eine weitere Programmierung ist nicht erforderlich.
Für den Einsatz des Tools ist der Controller in den App Mode zu versetzen.
Beispiel kopieren des Hauptprogrammes auf den Controller:
ampy -p COM4 put main.py
Um mehrere Dateien zu kopieren und im App Menu verfügbar zu machen, ist
-
ein Verzeichnis
apps
anzulegen -
alle Python Dateien in dieses Verzeichnis zu kopieren
-
der nachfolgende Befehl aufzurufen
ampy -p COM4 put apps
Links
Siehe PlatformIO Beispiel