Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

Schnelleinstieg Mikrocontroller

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:

 JP5_marked1_04f81fb6099b19e071e0ee49f9fc7eaa91615444.jpg

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.

 01_-_link_driver11_a1d21efc1ee2f1edc927fc1987ca2afdc9997ff2.jpg

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:

 02-_executable1_730e93f93b1b606e9bacdbdf6fbe40aad5444086.jpg

Führen Sie die ausführbare Datei aus und klicken Sie auf der Oberfläche auf die Schaltfläche [Device Connect]:

 03a_-_update_yes_button21_5cd861c2cf574a7e89016aed090945e514cd05d3.jpg

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:

 04a_-_updated11_3d8448e86dde0e47a052506dfe2d1a69a07baee2.jpg

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:

 05a---target11_c89f6b8af3303f925d65ddbb6be1b5795cc78fbc.jpg

Als Nächstes registrieren wir das Gerät über die Schaltfläche [Z] in der Leiste:

 06---z-button_arrow1_f465e586520c543bb855bc3785250a87387a548a.jpg

Klicken Sie auf die Schaltfläche [Register]:

 07_-_register11_907e7caa031aeff34557cf1a6a7e244ccb5176ee.jpg

Uns wird dann angezeigt, dass das Gerät registriert wird:

 07b_-_registering12_c0b93fe10e1a9a0383409c4fb7090aa295d208fe.jpg

Sobald Ihre Platine erfolgreich registriert ist, sollten Sie etwas in dieser Art sehen:

 08---succesful-arrow2_e87dc415fc16f4b8db810a02f6848793e55d3424.jpg

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:

 09_-_create_VM2_29631c1af6eea6b6fe1594e7fa2c520fae4dd9f1.jpg

Stellen Sie sicher, dass der Optionsschalter „Standard VM“ aktiviert ist, und klicken Sie auf [Create]:

 10b22_46f4541f0262526b8df70627f4d3f77ae858ddcb.jpg

Klicken Sie dann auf die Schaltfläche [Virtualize]:

11_-_virtualise22_90c02d299bfbd54d11876d150cd32634cd82dbc8.jpg 

Und dann erneut auf [Virtualize]:

 11b_-_virtualise_pt22_5d5663273e0b7bebe49b7c51c7e228001477dfa1.jpg

Nach einer kurzen Wartezeit (je nach der Geschwindigkeit des Host-PC) sollte uns mitgeteilt werden, dass unser Gerät virtualisiert wurde:

 12b---VM-ok2_12d54951fd1b232f2e1b02f0eecf1d81137c9d4c.jpg

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:

ST_nucleof401re_pin_io32_7923bb42326ec625f46e80db8fa9f82755bdeafa.jpg 

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:

 13_-_examples2_b62afa2fef8ee363a195999eb749996c3178930f.jpg

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:

 14_-_clone_blink2_895ea5932ff48a3f1b5e8daec46d5425f1c023c8.jpg

Gehen wir für unser Beispiel noch einen Schritt weiter und richten wir für unsere blinkende LED eine kurze Einschaltdauer ein:

 15_-_make_it_our_own1_c67e1386cb3d69d9f416d1a878374b9ac5e83865.jpg

Um diesen Code auf unser Gerät zu übertragen, verwenden wir einfach die Schaltfläche „Uplink“:

 16---uplink-arrow1_3eae2dea16935ab8810c26d7d46400b338e9081c.jpg

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 …

 reset_buttonsm1_bee3b52bcd22f53030a52a0e71c8e54e180e7a4a.jpg

… 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!

 

Mark completed his Electronic Engineering degree in 1991 and worked in real-time digital signal processing applications engineering for a number of years, before moving into technical marketing.
DesignSpark Electrical Logolinkedin