Web nejen o robotice

BBC Micro:bit a programování v MicroPythonu

Reklama:

BBC Micro:bit je kompaktní počítač speciálně navržený pro výuku programování a elektroniky. Jedním z hlavních programovacích jazyků podporovaných tímto zařízením je MicroPython – odlehčená implementace Pythonu 3 optimalizovaná pro mikrokontroléry.1 2 3

Jak se BBC Micro:bit programuje v MicroPythonu

Princip nahrávání kódu

Programování Micro:bitu v MicroPythonu funguje na principu kombinace interpretu a uživatelského kódu do jediného HEX souboru. Při prvním nahrání programu se do zařízení zkopíruje MicroPython runtime (interpret) společně s vaším Python skriptem. Tento proces probíhá následovně:2 4 1

Vytvoření kódu – napíšete Python skript v editoru (online nebo offline).

Kompilace do HEX formátu – MicroPython interpret a váš kód se spojí do jednoho .hex souboru.

Nahrání přes USB – soubor se zkopíruje na Micro:bit, který se v počítači chová jako USB flash disk s názvem MICROBIT.5 4 1

Po nahrání se zařízení automaticky restartuje a spustí váš program. Micro:bit V2 disponuje 512 KB flash pamětí a 128 KB RAM (oproti 16 KB u V1), což poskytuje výrazně více prostoru pro složitější projekty.3

REPL – interaktivní programování

MicroPython na Micro:bitu podporuje REPL (Read-Eval-Print-Loop), což umožňuje spouštět kód řádek po řádku v reálném čase přes sériovou konzoli. REPL je dostupné v editoru Mu, v online Python editoru přes WebUSB nebo pomocí nástrojů jako microREPL.6 7 1

Běžně dostupné editory a vývojová prostředí

Online editory

Python Editor (python.microbit.org) – oficiální webový editor od Micro:bit Educational Foundation, který umožňuje psát kód, simulovat chování a nahrávat programy přes WebUSB nebo stahováním HEX souborů.8 9 2

MakeCode Python – Microsoft MakeCode nabízí hybridní režim s bloky, JavaScriptem a Pythonem, vhodný pro začátečníky přecházející z blokového programování.9 10

Offline editory

Mu Editor – jednoduchý offline editor speciálně navržený pro výuku, který obsahuje integrovanou podporu REPL, real-time data plotter a jednoduchý flash mechanismus.11 12 2

Thonny – univerzální Python IDE s podporou Micro:bitu po změně interpreteru v nastavení.13 12 14

Visual Studio Code s rozšířeními – pro pokročilé uživatele existují rozšíření jako micro:bit Python nebo Microbit Explorer, které poskytují přístup k souborovému systému a možnost flashování.15 12

PyCharm s MicroPython pluginem – profesionální IDE s podporou MicroPythonu a možností přímého flashování na Micro:bit.12 13

Nejběžnější knihovny a moduly

Vestavěné moduly

MicroPython na Micro:bitu obsahuje základní sadu modulů přístupných bez dalších instalací:16 17 2

microbit – hlavní modul poskytující přístup ke všemu hardware (LED matice, tlačítka, akcelerometr, kompas, piny, teplota, reproduktor u V2).17 2 16

radio – modul pro bezdrátovou komunikaci mezi více Micro:bity na frekvenci 2.4 GHz, podporuje 84 kanálů a nastavitelné skupiny.18 19 20

neopixel – ovládání adresovatelných RGB LED pásků (WS2812), podporuje až přibližně 256 pixelů.21 22 23

music – generování tónů a hudby na piezo bzučáku nebo reproduktoru, obsahuje vestavěné melodie.24 25

speech – syntéza řeči s možností nastavení výšky tónu a rychlosti mluvení.26 27

audio – přehrávání zvukových souborů (pouze Micro:bit V2).26

random – generování náhodných čísel.16

os – základní práce se souborovým systémem (přibližně 30 kB dostupného místa).28 29

Repositáře knihoven třetích stran

Pro Micro:bit existuje řada komunitních knihoven dostupných zejména na GitHubu:30 31 12

Kitronik knihovny – oficiální knihovny pro robotické desky (All-in-one Robotics Board, STOP:bit, :GAME ZIP 64). Příklad: micropython-microbit-kitronik-robotics.31 32 30

DFRobot Maqueen knihovny – knihovny pro populární robotický kit Maqueen (podpora motorů, servo, LED, ultrazvukového senzoru, line senzorů). Repozitáře: kholm777/maqueen, maqueenplusv2 knihovny.14 33 34

Elecfreaks moduly – rozšíření pro vzdělávací sady a robotické komponenty.35 36

Awesome micro:bit – kurátorovaný seznam zdrojů obsahující knihovny, nástroje a projekty pro Micro:bit na adrese carlosperate/awesome-microbit.37 12

BBCmicrobit GitHub organizace – oficiální repositáře včetně micropython, PythonEditor a hardwarových návrhů.38 39

microbit-foundation – repositáře nadace obsahující Python editor V3, filesystem manipulaci (microbit-fs) a další nástroje.40

Nejznámější robotické projekty v MicroPythonu

Vzdělávací robotické platformy

DIY Educational Micro:bit Robot – open-source robotický projekt používající krokové motory, TOF senzor na servu, motor drivery a MicroPython pro autonomní navigaci. Obsahuje příklady jako radiové ovládání akcelerometrem a autonomní průzkum prostředí.41

Maqueen/Maqueen Plus roboty – komerční vzdělávací roboti s podporou MicroPythonu, vybavení dvěma motory, line tracking senzory, RGB LED, ultrazvukovým senzorem. Python knihovny umožňují jednoduché ovládání motorů, serv a senzorů.42 33 34 14

Rero:micro robot – dětský robotický kit s vestavěnými 7 programovatelnými RGB LED (Neopixely), podporou reprodukce hudby a ovládáním pohybu. Python modul reromicro.py poskytuje vysokoúrovňové API.43

Kitronik All-in-one Robotics Board projekty – využívají knihovnu pro ovládání 4 motorů (nebo 2 krokových), 8 serv a další periferie pro složitější robotické aplikace.30 31

Komunitní projekty

Treasure hunt / Heartbeat beacon – multi-Micro:bit hry používající radio komunikaci k vytvoření fyzické hry na hledání pokladu založené na síle signálu.19 18

Fireflies swarm – simulace bioluminiscence světlušek pomocí radio komunikace mezi více Micro:bity, demonstrující emergentní chování v roji.44

Simple Micro:bit RC Car – projekty dálkově ovládaných aut pomocí radio modulu mezi dvěma Micro:bity (jeden jako ovladač, druhý v autě).3

Simon Says / Shake It games – herní projekty využívající vestavěných senzorů a jednoduché algoritmy v MicroPythonu.3

Alternativní způsoby nahrávání programů bez přehrávání celé FLASH

Standardní postup nahrávání na Micro:bit vždy přepisuje celou flash paměť, včetně MicroPython runtime. Existují však metody, jak nahrát pouze Python skripty bez přeflashování celého firmware:29 45

Použití souborového systému přes REPL

Micro:bit disponuje jednoduchým souborovým systémem (cca 30 kB), který přežívá restart, ale ne reflashování. Soubory lze nahrávat pomocí nástrojů:28 29

microFS (ufs) – nástroj pro interakci se souborovým systémem přes sériovou linku. Umožňuje příkazy ufs put, ufs get, ufs ls, ufs rm pro správu souborů na Micro:bitu bez reflashování.46 47 5

Příklad použití:

# Nejprve nahrajte prazdny main.py pomoci uFlash nebo Mu
uflash empty.py

# Pote nahrajte skutecny program pres ufs
ufs put main.py
ufs put mymodule.py

Výhoda: není nutné při každé změně přepisovat celý runtime, skripty se nahrají rychleji.47 46

Nevýhoda: při každém reflashování pomocí standardních metod se souborový systém vymaže.45 29

Přímé nahrávání přes Python editory

Mu Editor – má vestavěnou funkci "Files", která umožňuje drag-and-drop souborů přímo na Micro:bit bez reflashování. Nejprve musí být na zařízení MicroPython runtime.48 49 46

Python Editor v3 – moderní webový editor využívá microbit-fs JavaScript balíček pro manipulaci se souborovým systémem přes WebUSB, což umožňuje nahrávání modulů a souborů bez kompletního flashování.50 51 40

VS Code rozšíření – některá rozšíření (např. pro Maqueen) nabízejí možnost nahrát skript jako main.py na již naflashovaný Micro:bit bez přepisování runtime.33 15

REPL a ruční kopírování kódu

Prostřednictvím REPL lze spouštět kód řádek po řádku a testovat funkčnost bez nutnosti nahrávání souborů. Pro trvalejší řešení lze přes REPL vytvořet nebo upravit soubory pomocí open() a write() operací.7 6 28

Vlastní HEX soubory s embedded skripty

Pro pokročilé uživatele existují nástroje pro vytváření custom MicroPython hex souborů s již zabudovanými moduly:52 53 48

makecombinedhex.py – kombinuje MicroPython firmware s Python skriptem do jediného HEX souboru.53 52

py2hex – převádí Python skripty na Intel HEX formát, který lze připojit k firmware.5

Tímto způsobem lze vytvořit vlastní "runtime" s předinstalovanými knihovnami, což eliminuje potřebu kopírovat moduly při každém flashování.48

Závěr

BBC Micro:bit v kombinaci s MicroPythonem představuje výkonnou a zároveň přístupnou platformu pro výuku programování a robotiky. Díky široké paletě editorů, bohaté ekosystému knihoven a aktivní komunitě lze rychle realizovat projekty od jednoduchých LED animací až po komplexní autonomní roboty. Alternativní metody nahrávání kódu přes microFS a souborový systém pak zvyšují efektivitu vývoje tím, že umožňují iterativní úpravy bez neustálého reflashování celého firmware.1 2 46 12 5


  1. https://tech.microbit.org/software/micropython/ 

  2. https://microbit-micropython.readthedocs.io 

  3. https://github.com/alankrantas/microbit-micropython-cookbook 

  4. https://learn.sparkfun.com/tutorials/how-to-load-micropython-on-a-microcontroller-board/microbit 

  5. https://github.com/ntoll/uflash 

  6. https://microbit-micropython.readthedocs.io/en/v1.0.1/devguide/repl.html 

  7. https://microbit-micropython.readthedocs.io/en/v2-docs/devguide/repl.html 

  8. https://python.microbit.org 

  9. https://support.microbit.org/support/solutions/articles/19000106819-which-editors-can-i-use-with-the-micro-bit- 

  10. https://www.youtube.com/watch?v=xgo0Bp7cWkE 

  11. https://www.python.org/community/microbit/ 

  12. https://github.com/carlosperate/awesome-microbit 

  13. https://tech.microbit.org/software/ 

  14. https://github.com/kholm777/maqueen 

  15. https://github.com/makinteract/vscode-microbit-micropython 

  16. https://www.elecfreaks.com/blog/post/microbit-basics-for-teachers-part-3-micropython.html 

  17. https://microbit-micropython.readthedocs.io/en/latest/microbit.html 

  18. https://www.instructables.com/Radio-Project-1/ 

  19. https://microbit.org/projects/make-it-code-it/treasure-hunt/ 

  20. https://microbit-micropython.readthedocs.io/en/latest/tutorials/radio.html 

  21. https://microbit-micropython.readthedocs.io/en/latest/neopixel.html 

  22. https://microbit-micropython.readthedocs.io/en/v1.0.1/neopixel.html 

  23. https://support.microbit.org/support/solutions/articles/19000130206-using-neopixels-with-the-micro-bit 

  24. http://multiwingspan.co.uk/micro.php?page=pybuzz 

  25. https://microbit-micropython.readthedocs.io/en/latest/music.html 

  26. https://support.microbit.org/support/solutions/articles/19000125318-playing-audio-on-the-micro-bit 

  27. https://microbit-micropython.readthedocs.io/en/latest/tutorials/speech.html 

  28. http://multiwingspan.co.uk/micro.php?page=files 

  29. https://microbit-micropython.readthedocs.io/en/latest/filesystem.html 

  30. https://github.com/KitronikLtd/micropython-microbit-kitronik-robotics 

  31. https://kitronik.co.uk/blogs/resources/micropython-kitronik-bbc-microbit 

  32. https://botland.store/microbit-extensions/18887-inventor-s-kit-for-the-bbc-microbit-python-version-kitronik-5669-6609025152950.html 

  33. https://marketplace.visualstudio.com/items?itemName=DavidEichenberger.maqueen 

  34. https://www.dfrobot.com/forum/topic/327868 

  35. https://www.elecfreaks.com/blog/post/getting-started-with-the-microbit-and-micropython.html 

  36. https://shop.elecfreaks.com/collections/modules-for-micro-bit 

  37. https://github.com/distintiva/awesome-microbit-1 

  38. https://github.com/bbcmicrobit 

  39. https://support.microbit.org/support/solutions/articles/19000016191-github 

  40. https://github.com/orgs/microbit-foundation/repositories 

  41. https://www.instructables.com/DIY-Educational-Microbit-Robot/ 

  42. https://www.mouser.com/new/dfrobot/dfrobot-micro-maqueen-robot/ 

  43. https://www.hackster.io/bhavithiran97/program-micro-bit-mobile-robot-with-python-1-colour-splash-d8c823 

  44. https://microbit.org/projects/make-it-code-it/fireflies/ 

  45. https://microbit-micropython.readthedocs.io/en/latest/tutorials/storage.html 

  46. https://stackoverflow.com/questions/43368085/how-to-get-files-written-by-the-microbit-to-the-pc 

  47. https://stackoverflow.com/questions/52782520/flash-microbit-embedding-a-class-py-file 

  48. https://github.com/mu-editor/mu/discussions/2496 

  49. https://www.apress.com/kr/blog/all-blog-posts/programming-the-bbc-micro-bit/15440118 

  50. https://support.microbit.org/support/solutions/articles/19000106811-adding-a-module-to-the-python-editor 

  51. https://support.microbit.org/support/solutions/articles/19000098018-files-and-modules-in-the-python-editor 

  52. https://microbit-micropython.readthedocs.io/en/v2-docs/devguide/flashfirmware.html 

  53. https://microbit-micropython.readthedocs.io/en/latest/devguide/flashfirmware.html