Arduino experimentiert mit MicroPython-Integration

Im Hause Arduino stand man den Neuerungen im Prozessrechnerwesen eher chancenlos gegenüber – um 2017 herum erzaehlte ein slowakischer Universaldistributor im Vertrauen, dass sich Arduino-Boards teilweise um den Faktor 10 schlechter verkaufen als die “einfacher programmierbaren” Raspberry Pis. Nun gibt es erste Experimente mit MicroPython.

Worum geht es hier?

Python ist eine interpretierte Sprache. Das von Damien George vorangetriebene Projekt bietet eine extrem kompakte Version des Interpreters an, die auf aller Herren Microcontroller lauffähig ist. Als IDE kommen meist Systeme wie Thonny zum Einsatz, die eher wenig komfortabel sind.
In einem der als Arduino Labs bezeichneten Experimente bieten die Italiener nun einen hauseigenen Editor an, der sich optisch an Arduino IDE 2.0 orientiert. Ausserdem gibt es für die folgenden drei Boards offizielle Firmwares:

1x) Nano BLE Sense
2x) Nano RP2040 Connect
3x) Portenta H7

Firmware am Arduino RP2040 Connect installieren

Die Auslieferung der unter https://docs.arduino.cc/micropython/ bereitstehenden Firmware erfolgt in Form einer .uf2-Datei, zu deren Installation der Controller in den Downloadmodus versetzt werden muss. Hierzu ist eine Brücke zwischen den Pins REC und GND erforderlich, danach noch ein Druck auf Reset. Sodann erscheint ein Laufwerk namens RPI-RP2, auf dem die Firmwaredatei unterkommt.

(Bildquelle: https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-python-api)

Nach dem erfolgreichen Kopieren sollte der Nano wie ein normaler RP2040 neu starten – in Tests des Autors erkannte der RP2040 die auf der Arduino-Website hochgeladenen uf2-Dateien reproduzierbar nicht, und startete stattdessen abermals das von der Arduino IDE zuletzt einprogrammierte Programm. Passende Firmware findet sich unter https://micropython.org/download/ARDUINO_NANO_RP2040_CONNECT/ -das rund 800KB große File https://micropython.org/resources/firmware/ARDUINO_NANO_RP2040_CONNECT-20220618-v1.19.1.uf2 funktionierte problemlos.

Kurzes Codieren

Als Nächstes starten wir probeweise Thonny 4.0, wo sich der Arduino RP2040 wie in der Abbildung gezeigt konfigurieren lässt.

(Bildquelle: Autor)

Für einen ersten Test bietet sich dann folgendes von Arduino bereitgestelltes Snippet an, das mit dem Accelerometer der Platine interagiert:

1import time
2from lsm6dsox import LSM6DSOX
3
4from machine import Pin, I2C
5lsm = LSM6DSOX(I2C(0, scl=Pin(13), sda=Pin(12)))
6
7while (True):
8 print(Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}.format(*lsm.read_accel()))
9 print(Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}.format(*lsm.read_gyro()))
10 print(“”)
11 time.sleep_ms(100)

Seine Ausführung in Thonny liefert das in der Abbildung gezeigte Ergebnis.

(Bildquelle: Autor)

Für die eigentliche Kommunikation nach Außen stehen die in der Abbildung gezeigten GPIO-Mappings zur Vefügung.

(Bildquelle: Arduino)

Als Nächstes bietet sich die Ausgabe einer charakteristischen Wellenform an:

1import time
2from lsm6dsox import LSM6DSOX
3
4from machine import Pin, I2C
5p0 = Pin(25, Pin.OUT)
6
7while True:
8 p0.value(1)
9 p0.value(0)
10 p0.value(1)
11 p0.value(0)

Die Abbildung zeigt die am Oszilloskop (LeCroy 9354AM) sichtbare Wellenform.

(Bildquelle: Autor)

Experimente mit dem hauseigenen Editor

Als Nächstes bietet sich der Besuch der URL https://labs.arduino.cc/en/labs/micropython an, wo die hauseigene IDE zum Download bereitsteht. Nach Download und Extraktion erfolgt der Start folgendermaßen:

1tamhan@TAMHAN18:~/Downloads/arduinopythontest$ ./arduinolabmicropythonide
2mesa: for the simplifycfgsinkcommon option: may only occur zero or one times!

Schließen Sie an dieser Stelle Thonny, und klicken Sie danach auf Connect. Nach erfolgreichem Verbindungsaufbau präsentiert sich die IDE wie in der Abbildung gezeigt.

(Bildquelle: Autor)

Bis auf arduinotypischeres Aussehen bietet diese IDE nichts, was über Thonny hinausgeht – Funktionen wie IntelliSense sucht man vergeblich.

Wie geht es weiter?

Arduino wird nicht müde, die Experimentalität dieses Produkts zu betonen – in der Theorie könnten die Italiener schon morgen aufhören, Python zu unterstuetzen. Nach Ansicht des Autors ist dies aber eher unwahrscheinlich – MicroPython ist portabel, die User könnten zu anderen Boardherstellern fliehen. Außerdem ist die hauseigene IDE alles andere als komfortabel.
Fraglich ist eher, ob sich die – doch teureren – Arduinos im Pythonbereich durchsetzen. Büedhonisdas mögen (abseits des ML-Bereichs) nicht zur Elite der Elektroniker gehören, die Community ist aber eng vernetzt…und so schwierig ist die Nutzung von ESP32-Boards am Ende dann auch wieder nicht…

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More