News Arduino experimentiert mit MicroPython-Integration


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

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:

1
x) Nano BLE Sense
2
x) Nano RP2040 Connect
3
x) 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:

1
import time
2
from lsm6dsox import LSM6DSOX
3
4
from machine import Pin, I2C
5
lsm = LSM6DSOX(I2C(0, scl=Pin(13), sda=Pin(12)))
6
7
while (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:

1
import time
2
from lsm6dsox import LSM6DSOX
3
4
from machine import Pin, I2C
5
p0 = Pin(25, Pin.OUT)
6
7
while 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:

1
tamhan@TAMHAN18:~/Downloads/arduinopythontest$ ./arduino-lab-micropython-ide 
2
mesa: for the --simplifycfg-sink-common 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...


: Bearbeitet durch NewsPoster
von Stefan F. (stefanus)


Lesenswert?

Es kommt nicht immer darauf an, dass ein Board möglichst einfach zu 
programmieren ist. Python hat auch Nachteile.

Wenn jemand C/C++ lernen muss, dann ist ein Einstieg mit einem 
klassischen Arduino Board 100x sinnvoller, als mit Python. Und C/C++ ist 
nun mal immer noch Standard in der Industrie.

: Bearbeitet durch User
von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Stefanus, danke dir. Ich bin ein großer Kritiker der Büedonisdas.

Aber: leider sind die am Vormarsch. AI zum Beispiel.

von Stefan F. (stefanus)


Lesenswert?

Tam H. schrieb:
> Büedonisdas

Ich dachte das sei ein Tippfehler, aber nun hast du es zum 2. mal 
geschrieben. Ich kenne das Wort nicht, Google auch nicht. Ist das ein 
Übersetzungsfehler?

von Uwe L. (ul5255)


Lesenswert?

wohl eher ein Verballhornung von Pythonistas …

von Stefan (sstaub)


Lesenswert?

Als IDE ist VSCode mit der Pico-W-Go Extension die beste Wahl. 
https://marketplace.visualstudio.com/items?itemName=paulober.pico-w-go
Daneben gibt es auch noch den MU-Editor. https://codewith.mu
Warum Arduino nicht die IDE 2.0 benutzt erschließt sich mir nicht.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Uwe L. schrieb:
> wohl eher ein Verballhornung von Pythonistas …

aha, mir war das nicht klar.
Wenn Sprache nicht mehr verständlich ist sollte man Wortspiele besser 
weglassen. Oder erklären, zumal in "Pyhtonista", auch ausgesprochen, ein 
"ü" nicht mal vorkommt. Und weil's dann nicht mehr lustig ist vielleicht 
doch lieber bleiben lassen. Oder zumindest googeln, ob das noch 
irgendjemand anders auf der Welt benutzt.

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Stefan F. schrieb:
> Tam H. schrieb:
>> Büedonisdas
>
> Ich dachte das sei ein Tippfehler, aber nun hast du es zum 2. mal
> geschrieben. Ich kenne das Wort nicht, Google auch nicht. Ist das ein
> Übersetzungsfehler?

Hallo,
sorry, war etwas langsam mit dem Reagieren...bin im Moment wegen einer 
Kundin nachtaktiv. Es ist eine Verballhornung von Pythonista...was ein - 
me nach idiotischer - Ausdruck für einen Pythoncodierer ist.

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Uwe L. schrieb:
> wohl eher ein Verballhornung von Pythonistas …

Genau das ;)

Tam

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Stefan schrieb:
> Als IDE ist VSCode mit der Pico-W-Go Extension die beste Wahl.
> https://marketplace.visualstudio.com/items?itemName=paulober.pico-w-go
> Daneben gibt es auch noch den MU-Editor. https://codewith.mu
> Warum Arduino nicht die IDE 2.0 benutzt erschließt sich mir nicht.

Hallo,
mir wirkt das Ganze wie ein Schnellschuss, um von MicroPython / 
CircuitPython zu profitieren.

Entre Nous werden sie wahrscheinlich auch Angst haben, dass ihnen ihr 
alter Weggefaehrte AdaFruit mit CircuitPython zu viel vom Keks 
wegfrisst.

lg
th

von Jack V. (jackv)


Lesenswert?

Tam H. schrieb:
> was ein -
> me nach idiotischer - Ausdruck für einen Pythoncodierer ist.

… nix für ungut, aber bei idiotischen Ausdrücken für irgendwas spielst 
du selbst ja auch ganz vorne mit („uptonscher Prozessrechner“, etc.) …

;)

von Stefan F. (stefanus)


Lesenswert?

Tam H. schrieb:
> Pythonista...

Habe ich noch nie gelesen. Wie kommt man auf so was?

> was ein ... idiotischer Ausdruck für einen Pythoncodierer ist.

Allerdings

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Jack V. schrieb:
> Tam H. schrieb:
>> was ein -
>> me nach idiotischer - Ausdruck für einen Pythoncodierer ist.
>
> … nix für ungut, aber bei idiotischen Ausdrücken für irgendwas spielst
> du selbst ja auch ganz vorne mit („uptonscher Prozessrechner“, etc.) …
>
> ;)

Hallo,
das kann ich mir nicht verkneifen. :)

Uptoniten...Sunniten, Schiiten, etc. Betont die religiöse 
Komponente...lustig war es als ich vor ein paar Jahren auf deren Stand 
mal Shenzhen Xunlong erwähnte, die beleidigten und pissigen Reaktionen.

(Ich war von Anfang an Beobachter der RPi-Sache, und mag die Uptoniten 
nicht...)

von Jemin K. (jkam)


Lesenswert?

Oh man, was für ein Quatsch. Warum tut man das? Glauben die wirklich, es 
gibt irgendeinen Käufer ihrer Produkte, der sagt: normale 
Arduino-Programmierung kann ich nicht, ich brauche Python? Das ist doch 
völlig absurd, jetzt eine noch langsamere Sache auf den Arduino zu 
bringen, als der Mist eh schon ist! Die sollten lieber mal zusehen, dass 
sie einen Arduino auf Basis des ESP32 auf den Markt bringen! Aber nein, 
stattdessen lieber völlig wilde Varianten von irgendwelchen Atmels mit 
zusätzlichen Chips als Peripherie. Schizophren! Wer bitte kauft diese 
Teile? Adafruit ist da deutlich näher am Puls des Marktes und versucht 
sich halt eine Nische mit Python aufzubauen.
Trotzdem weiß jeder, der mit den Dingern gearbeitet hat, das 
insbesondere CircuitPython so schnell an Ressourcengrenzen stößt, dass 
man immer darauf angewiesen ist, dass entweder das Projekt echt simpel 
ist oder einer ne perfekte Library anbietet...

von J. S. (jojos)


Lesenswert?

Jemin K. schrieb:
> Aber nein,
> stattdessen lieber völlig wilde Varianten von irgendwelchen Atmels mit
> zusätzlichen Chips als Peripherie.

welche denn?
Arduino Nano33BLE: nRF52840 64 MHz, 1 MB Flash, 256 kB SRAM
Arduino Portenta: STM32H747 Dualcore, 480/240 MHz, 2 MB Flash, 1 MB RAM 
+ext. Specher
Arduino Nano RP2040Connect: RP2040 Dualcore, 133 MHz, 16 MB Flash, 264 
kB RAM

was ist da zu schwach? Und ESP32 Boards gibts reichlich, die wird kaum 
einer teuer von ArduinoCC kaufen wollen.

von Jemin K. (jkam)


Lesenswert?

Ich habe nicht von schwach geschrieben! Python ist überall langsam. Wenn 
der ESP32 billig ist, umso besser! Originale Arduinos leiden eh an zu 
hohen Preisen.

>Und ESP32 Boards gibts reichlich

Gilt für die Sachen die Arduino verbaut ebenfalls. Stichwort Adafruit. 
Arduino original kaufen die Leute nur weil zuverlässig und Ökosystem. Da 
können die den billigsten Chip verbauen und so noch Leute mitnehmen, 
weil sie etwas günstiger werden können.

: Bearbeitet durch User
von Stefan F. (stefanus)


Lesenswert?

Jemin K. schrieb:
> Glauben die wirklich, es
> gibt irgendeinen Käufer ihrer Produkte, der sagt: normale
> Arduino-Programmierung kann ich nicht, ich brauche Python?

Ich denke zwar nicht so, aber kenne ein paar Leute die so denken. Sie 
lesen "C war ursprüngliche eine Verarschung um Programmierer zu 
verwirren" und "Python ist geil". Also wollen sie Python. Python ist 
unter jungen Leuten der Heiße Scheiß, C ist der alte Kram von Opa.

Schau dir mal die BMW Werbung an (Freude am Fahren). Die setzen 
erfolgreich  auf Gefühle, statt Fakten.

Insofern denke ich schon, dass sich Boards mit/für Python gut verkaufen 
lassen. Nicht an jeden, aber an viele.

: Bearbeitet durch User
von Jemin K. (jkam)


Lesenswert?

Was viel visionärer wäre, eine Unterstützung für Rust auf Arduino. 
Python ist heute halt Standard, aber es ist eine Scripting-Sprache und 
irgendwann wird es von was neuem ersetzt... Rust hingegen würde echte 
Vorteile bringen.

von Kolja L. (kolja82)


Lesenswert?

Technisch nachvollziehbar, aber bedenke die Größe der Gemeinschaft. Wenn 
ein Softwareprojekt von der Gemeinschaft leben soll, oder muss, ist eine 
große besser als eine kleinere.

von Jemin K. (jkam)


Lesenswert?

Da gebe ich Dir Recht. Aber Python erfüllt diesen Zweck nicht. Das ist 
typische CEO Denke. Wenn ich ein Projekt habe, bestimmt die Aufgabe die 
Programmiersprache. Könnte ich nicht programmieren, wäre ich gezwungen 
den Arduino C-Dialekt zu verwenden. Das wäre aber kein Problem, wie 
hunderttausende Projekte von Elektroniknoobs zeigen.
Könnte man parallel und für lau ein Python-Ökosystem hochziehen, klar, 
dann greift man noch die drei Leute ab, die vom Buzzword Python 
angezogen werden. Kann man aber nicht. Man braucht Ressourcen. Und die 
Ressourcen muss man entweder zusätzlich schaffen (Produkte werden dann 
teurer) oder von vorhandenen Aufgaben abziehen. Damit leidet das 
Kernökosystem, was ja eben DAS Argument für Arduino ist! Das Geld könnte 
man stattdessen investieren, um die bestehenden Stärken auszubauen oder 
Schwächen zu beseitigen. Zum Beispiel mal die völlig missratene 
Drecks-IDE gegen etwas Vernünftiges tauschen!

Die meisten Leute, die einen Python Arduino kaufen, würden auch einen 
"normalen" kaufen. Man wildert sozusagen im eigenen Marktsegment. Sowas 
ist nicht sonderlich clever. Clever ist es, zu schauen, wo die Reise 
hingeht, wie man neue Märkte und Anwendungen erschließt etc. Wie gesagt, 
wenn das alles umsonst wäre, klar, immer her damit. Aber das ist es 
nicht. Arduino verzettelt sich. Und exakt das machen sie schon die ganze 
Zeit. Deshalb kaufe ich nur noch selten da.

von Kolja L. (kolja82)


Lesenswert?

Das es clever ist ist ja auch niemand behauptet 😁

Clever wäre es gewesen von Anfang an auf eine SkriptSprache zu setzen.

Aber da werden wir unterschiedlicher Meinung sein.
Was völlig okay ist, da wir (wahrscheinlich) einen sehr 
unterschiedlichen Hintergrund haben.

von Stefan F. (stefanus)


Lesenswert?

Kolja L. schrieb:
> Clever wäre es gewesen von Anfang an auf eine SkriptSprache zu setzen.

So wie der C-Control? Der war aber sehr lahm. Ebenso diverse Projekte 
mit Java (Bytecode) Interpreter.

von Ein T. (ein_typ)


Lesenswert?

Stefan F. schrieb:
> Es kommt nicht immer darauf an, dass ein Board möglichst einfach zu
> programmieren ist.

Aber ja doch, genau darauf kommt es an. Das ist nämlich das erklärte 
Ziel des Arduino-Projekts: genau die Leute an Elektronik und 
Mikrocontroller heranzuführen, die bisher keine Entwickler sind.

von Kolja L. (kolja82)


Lesenswert?

Stefan F. schrieb:
> Der war aber sehr lahm.

Kenne ich nur von früher aus den.Katalogen 😃

Aber ja, zu langsam für die Aufgaben der Zielgruppe darf es natürlich 
nicht sein.

Ein T. schrieb:
> Aber ja doch, genau darauf kommt es an.

Ja, Ihr seid nicht diejenigen, für die das Konzept entwickelt wurde, 
auch wenn es ein Mikrocontroller ist 😛

von Ein T. (ein_typ)


Lesenswert?

Tam H. schrieb:
> (Ich war von Anfang an Beobachter der RPi-Sache, und mag die Uptoniten
> nicht...)

Du scheinst Vieles nicht zu mögen, vor allem wenn es nicht von Microsoft 
stammt. Leider merkt man das viel zu oft in Deinen Artikeln.

Dieser Beitrag kann nur von angemeldeten Benutzern beantwortet werden. Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.