====== MicroPython ====== Ich möchte mich mal kurz mit MicroPython beschäftigen. Deshalb habe ich mir vom Chinesen das unten aufgeführte PBYv1.1 Board welches einen STM32F405 beherbergt gekauft. ===== Funktionstest ===== Nach dem Anstecken an den Mikro-USB meldet sich die Platine als USB-Laufwerk an. Damit man die virtuelle serielle Schnittstellen nutzen kann, muss man im Gerätemanager den Treiber aktualisieren mit der auf dem USB-Laufwerk bereitgestellte Datei: **pybcdc.inf** Der migelieferte Treiber verursacht unter folgenden Fehler:\\ **Die INF-Datei ... enthält keine Digitalsignaturinformationnen** Da ab Windows 8 normalerweise nur Treiber mit einer digitalen Signatur installierte werden können. Abhilfe siehe folgendes Dokument:\\ [[https://micropython.org/resources/Micro-Python-Windows-setup.pdf|Micro-Python-Windows-Setup.pdf]] Nach der Installation des Treibers (mit gedrückter Shift-Taste Neustart auswählen , und dann bei Adavanced mit F7 nach dem Neustart..) meldet sich das Board im Terminal (aber erst einem Board reset): MicroPython v1.9.4-85-gdf9b7e8f on 2018-05-24; PYBv1.1 with STM32F405RG Type "help()" for more information. >>> Soweit so gut, allerdings konnte ich mit meinem übliche Terminal Programm keine Befehl senden, bzw. ich bekam keine Antworten zurück. (Handshaking RTS/CTS aktivieren dann gehts auch mit Terminal) Erst nachdem ich PuTTY ( 115200 8N1 ) verwendet hatte, konnte ich mit dem Board interagieren. Und hier noch ein kurzes Demo des Beschleunigungssensors: import pyb accel = pyb.Accel() while True: print(accel.filtered_xyz()) pyb.delay(250) ===== Firmware Update ===== Brücke zwischen +3V3 und DFU-Pin (boot0) setzen und dann mit USB verbinden. Wenn der Bootloader aktiviert ist leuchten die rote, gelb und blaue LED dunkel. Als erstes mal eine Sicherung durchführen (512kByte sollten reichen): Sicherung erstellen mit (Upload): dfu-util.exe -a 0 -s 0x08000000:524288 -U test_orig_512k.bin dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Upload [=========================] 100% 524288 bytes Upload done. und jetzt die aktuellste Firmware (Stand 02.01.2018) auf spielen: dfu-util.exe -a 0 -D pybv11-20190102-v1.9.4-771-gb33f108cd.dfu dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Match vendor ID from file: 0483 Match product ID from file: df11 Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " file contains 1 DFU images parsing DFU image 1 image for alternate setting 0, (2 elements, total size = 331280) parsing element 1, address = 0x08000000, size = 14720 Download [=========================] 100% 14720 bytes Download done. parsing element 2, address = 0x08020000, size = 316544 Download [=========================] 100% 316544 bytes Download done. done parsing DfuSe file Das Modul meldet sich dann mit:MicroPython v1.9.4-771-gb33f108cd on 2019-01-02; PYBv1.1 with STM32F405RG Type "help()" for more information. >>> Hmm meine modifizierte **main.py** blieb erhalten und wurde nicht zurückgesetzt. **Achtung:** Jetzt funktioniert auch mein standard Terminal wieder, ohne das das Handshaking aktiviert ist. (muss nun wieder entfernt werden). ===== SD-Karte ===== Kurzes Beispiel, wie man sich den Inhalt der SD-Karte anschauen kann (root Verzeichnis) import os sd = pyb.SD #sd = pyb.SDCard() os.mount(sd, '/sd') os.listdir('/sd') os.umount('/sd') ===== Tipps ===== * STR+E : aktiviert den Paste Modus (das automatische Einrücke wird abgeschaltet) ===== Links ===== * [[https://micropython.org/|Mikropython]] * [[https://store.micropython.org/product/PYBv1.1|PYBv1.1]] * [[https://learn.sparkfun.com/tutorials/how-to-load-micropython-on-a-microcontroller-board/pyboard|Update pybV1.1]] * [[https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html|DFU-Tools ST - V3.0.6]]