Wie finden Sie diesen Artikel? Helfen Sie uns, bessere Inhalte für Sie bereitzustellen.
Vielen Dank! Ihr Feedback ist eingegangen.
There was a problem submitting your feedback, please try again later.
Was denken Sie über diesen Artikel?
Ich muss zugeben, dass ich ziemlich „oldschool“ bin, wenn es um die Programmierung meiner mikrocontrollerbasierten Systeme geht: Ich mag die C-Programmiersprache und für schwierige Embedded-Programmierung konnte ich bis dato noch nicht davon überzeugt werden, dass es etwas Besseres gibt.
Abgesehen davon mag ich „Quick & Dirty“-Programmiervorgänge, um eine Machbarkeitsstudie auf die Beine zu stellen, und ich schätze es auch, dass Python plötzlich zur am meisten genutzten Programmiersprache aufgestiegen ist und für zunehmend gewichtigere Anwendungen verwendet wird, beispielsweise maschinelles Lernen mit Dingen wie dem Intel Movidius Neural Compute Stick.
Mit einer langsamen Internetverbindung könnte es natürlich etwas länger dauern. Verwendet wird dabei ein Mainstream-Entwicklungskit.
STM32F401 Nucleo
Für unser Entwicklungskit verwenden wir die ST Micro Nucleo F401RE-Platine. Hierbei handelt es sich um eine leistungsfähige Platine für integrierte Anwendungen, mit der uns Folgendes zur Verfügung steht:
MCU: STM32F401RET6 ARM®Cortex®-M4 (32 Bit), 84 MHz
SRAM: 96 KB
Flash: 512 KB
Digitale E/A: 50 Pins mit 3,3 V (im universellen Arduino-Format)
ADC-Eingang: 16 Pins
... und noch weitere Funktionen und Merkmale.
Ein Pluspunkt bei der Verwendung der Nucleo ist, dass wir hardwaretechnisch nur noch ein USB-A-auf-Mini-USB-Kabel benötigen, das für die Stromversorgung und Programmierung der Platine eingesetzt wird.
Bevor wir beginnen
Es gibt ein paar Dinge, die wir tun müssen, bevor wir unsere ST Nucleo-Platine wirklich verwenden können. Zunächst müssen wir sicherstellen, dass unser Jumper für die Stromversorgung sich an der richtigen Stelle auf der Nucleo-Platine befindet: Der Jumper sollte auf JP5 Pin 1 und Pin 2 verbinden:
Wenn Sie Windows verwenden, besteht der nächste Schritt im Herunterladen und Installieren des ST-Link-Treibers. So erhalten wir Zugriff auf den ST Nucleo-Programmierport und es wird ein virtueller COM-Port auf unserem Host-Computer erstellt. Wenn Sie mit MAC OSX oder Linux arbeiten, können Sie direkt loslegen, da das Gerät automatisch erkannt wird.
Außerdem müssen wir ein Upgrade unserer integrierten Firmware durchführen, bevor wir unsere Python-IDE verwenden können. Das Upgrade und die Anweisungen für dessen Installation finden Sie hier. Wenn Sie die ZIP-Datei heruntergeladen und entpackt haben, sehen Sie als Windows-Benutzer eine ausführbare Datei:
Führen Sie die ausführbare Datei aus und klicken Sie auf der Oberfläche auf die Schaltfläche [Device Connect]:
Klicken Sie auf die nun aktivierte Schaltfläche [Yes>>>]. Sobald Sie dies getan haben, sollte Ihnen eine Meldung angezeigt werden, die Sie über den Erfolg des Upgrades informiert.
Zerynth Studio
Wir werden Zerynth Studio als IDE für das Programmieren der ST Nucleo-Platine in Python herunterladen und installieren. Es gibt zwar eine Pro-Version, doch die kostenlose Version bietet uns alles, was für die Erstellung ziemlich ausgeklügelter Anwendungen mit verschiedensten Platinen benötigt wird – von Arduino, Hexiware, NodeMCU, Particle, RedBear, ST Micro, Sparkfun und noch weiteren Herstellern.
Die Installation ist unabhängig vom verwendeten Betriebssystem einfach, da Sie ein ausführbares Windows-Installationsprogramm, eine MacOS Disk image-Datei (.dmg) oder ein ‘./zerynth’-Skript (innerhalb des „tar.xz“-Archivs) für Linux herunterladen können.
Nach der Installation wird Ihnen beim Ausführen eine Schnittstelle angezeigt, die Folgendem ähneln sollte:
Wenn Sie jetzt Ihre ST Nucleo an einen USB-Port an Ihrem Computer anschließen (oder sie bereits angeschlossen ist), erkennt Zerynth die ST Nucleo und Sie können sie im Feld „Target“ in der Symbolleiste für die Geräteverwaltung auswählen:
Als Nächstes registrieren wir das Gerät über die Schaltfläche [Z] in der Leiste:
Klicken Sie auf die Schaltfläche [Register]:
Uns wird dann angezeigt, dass das Gerät registriert wird:
Sobald Ihre Platine erfolgreich registriert ist, sollten Sie etwas in dieser Art sehen:
Jetzt klicken wir erneut auf [Z], um eine virtuelle Maschine auf dem Ziel zu erstellen und unseren Code auszuführen. Ihnen wird ein Aktionsfeld angezeigt, in dem Sie auf die Schaltfläche [Create] klicken müssen:
Stellen Sie sicher, dass der Optionsschalter „Standard VM“ aktiviert ist, und klicken Sie auf [Create]:
Klicken Sie dann auf die Schaltfläche [Virtualize]:
Und dann erneut auf [Virtualize]:
Nach einer kurzen Wartezeit (je nach der Geschwindigkeit des Host-PC) sollte uns mitgeteilt werden, dass unser Gerät virtualisiert wurde:
Damit sind wir jetzt soweit und können mit der Programmierung unserer Platine in Python beginnen.
Programmierung in Python
Wenn Sie noch keine Erfahrung im Bereich Embedded-Python-Programmierung haben, wird Ihnen der nächste Teil besonders gefallen, weil Zerynth Ihnen die Anfänge enorm erleichtert. Zunächst gibt es die eher ansprechende E/A-Pin-Map, die immer nützlich ist, wenn wir die benötigten Pin-Namen für unser Programm herausfinden müssen:
Wichtiger ist jedoch die Beispielschaltfläche unter den Symbolen links im IDE-Fenster. Sie sieht aus wie eine Glühbirne und zeigt eine Liste mit Python-Beispielcode, wenn Sie sie anklicken. Dieser Code kann für erste Schritte bis hin zu komplexeren Hardwareinteraktionen mit den Zerynth-Bibliotheken verwendet werden. Für die Vorbereitung unserer grundlegenden Hallo-Welt-Blinkanwendung klicken wir auf den Pfeil neben „Basics“, um die Einführungsbeispiele anzuzeigen:
Klicken Sie dann auf „Blink“, damit Ihnen das Beispielcode-Feld angezeigt wird. Wir können diesen Code per Klick auf [Clone] in unser aktives Programmierfenster einfügen:
Gehen wir für unser Beispiel noch einen Schritt weiter und richten wir für unsere blinkende LED eine kurze Einschaltdauer ein:
Um diesen Code auf unser Gerät zu übertragen, verwenden wir einfach die Schaltfläche „Uplink“:
Wenn Sie Ihren Code einfach nur überprüfen möchten, ohne ihn hochzuladen, können Sie die Schaltfläche links neben der Uplink-Schaltfläche verwenden.
Hier ein gut gemeinter Rat: Halten Sie Ihren Finger über die Reset-Taste auf der Nucleo …
… Sie werden nämlich aufgefordert, Ihre Platine während des Uplink-Prozesses zurückzusetzen, und haben nicht viel Zeit, bevor eine Zeitüberschreitung auftritt:
Wenn alles erfolgreich war, wird uns die Meldung „Uplink done“ im Mitteilungsfenster angezeigt:
Außerdem sollte es auf unserer Nucleo-Platine eine blinkende LED geben
Abschließende Worte
Die ST Micro Nucleo-Platine ist ein robustes Mikrocontroller-Entwicklungskit, das von vielen klassischen Entwicklern von Embedded-Tools unterstützt wird, darunter IAR EWARM, Keil MDK-ARM, mbed und GCC/LLVM.
Mit gefällt auf jeden Fall, was Zerynth hier geleistet hat. Der Zeitaufwand, um aus dem Stand Code auf die Platine zu übertragen, ist minimal. Dadurch ist das Ausprobieren sehr einfach und Sie können mit neuen Ideen auf Ihrem Entwicklungskit experimentieren.
Zerynth hat auch viel Mühe in die Dokumentation, Beispiele und den Programmierleitfaden gesteckt, sodass Sie Python lernen können, indem Sie die Sprache für echte Anwendungen nutzen, nicht nur für Web-Skripts. Eins können Sie mir glauben: Es gibt neue Tricks, die Sie lernen können und die den Zeitaufwand wert sind. Viel Spaß beim Programmieren!