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 prázdný main.py pomocí uFlash nebo Mu
uflash empty.py

# Poté nahrajte skutečný program přes 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 

  54. https://stackoverflow.com/questions/70662020/how-to-use-external-modules-in-micropython-on-microbit-from-vscode 

  55. https://docs.micropython.org/en/latest/library/index.html 

  56. https://www.seeedstudio.com/blog/2019/12/10/top-25-microbit-projects-for-beginners-2019/ 

  57. https://docs.keyestudio.com/projects/KS0426/en/latest/python/python.html 

  58. https://github.com/bbcmicrobit/micropython 

  59. https://microbit.org 

  60. https://programuj.me/pages.html?microbit%2Fstart_python_cz 

  61. https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/Python.html 

  62. https://mattoppenheim.com/2020/08/23/automating-loading-micropython-code-to-the-bbc-microbit-in-linux/ 

  63. https://support.microbit.org/support/solutions/articles/19000135210-python-editor-guide 

  64. https://community.element14.com/learn/learning-center/stem-academy/microbit/b/blog/posts/writing-software-for-bbc-micro-bit 

  65. https://www.youtube.com/watch?v=tIVrW30VLBo 

  66. https://www.reddit.com/r/learnpython/comments/14byj4m/whats_an_free_bare_bones_ide_for_python_that/ 

  67. https://community.dfrobot.com/makelog-313402.html 

  68. https://www.microbiti.cz/2019/03/v-cem-programovat-microbit.html 

  69. https://microbit.org/projects/make-it-code-it/ 

  70. https://micropython.org 

  71. https://stackoverflow.com/questions/77467502/how-to-add-a-module-transfomers-to-the-microbit-code-interface 

  72. https://learn.adafruit.com/welcome-to-circuitpython/recommended-editors 

  73. https://github.com/mcauser/awesome-micropython 

  74. https://learn.adafruit.com/micro-bit-lesson-3-neopixels-with-micro-bit/software 

  75. https://microbit.org/projects/make-it-code-it/tell-me-a-secret/ 

  76. https://www.youtube.com/watch?v=c03qGQsoNjY 

  77. https://microbit.org/projects/make-it-code-it/send-a-smile/ 

  78. https://makecode.microbit.org/pkg/microsoft/pxt-neopixel 

  79. https://forum.makecode.com/t/microbit-v2-audio-module-is-missing/10008 

  80. https://makecode.microbit.org/courses/csintro/radio/project 

  81. https://www.instructables.com/Microbit-Neopixel-Introduction/ 

  82. https://docs.freenove.com/projects/fnk0072/en/latest/fnk0072/codes/tutorial/10_Serial_Communication.html 

  83. https://micropython.org/download/ 

  84. https://botland.store/microbit-extensions/12854-dfrobot-micro-maqueen-robot-platform-for-microbit-6959420915002.html 

  85. https://support.microbit.org/support/solutions/articles/19000022103-outputing-serial-data-from-the-micro-bit-to-a-computer 

  86. https://rpishop.cz/micromaqueen/3691-dfrobot-micromaqueen-vzdelavaci-programovaci-robot-pro-microbit-od-8-let.html 

  87. https://learn.sparkfun.com/tutorials/how-to-load-micropython-on-a-microcontroller-board/all?print=1 

  88. https://www.youtube.com/watch?v=90PWQEc--6k 

  89. https://stackoverflow.com/questions/77015283/is-it-possible-to-communicate-values-to-a-microbit-through-a-serial-port-using-p 

  90. https://microbit.org/get-started/user-guide/open-source/ 

  91. https://www.microbiti.cz/2019/08/roboticke-auticko-micromaqueen.html 

  92. https://uflash.readthedocs.io/en/latest/ 

  93. https://manpages.ubuntu.com/manpages/focal/en/man1/uflash.1.html 

  94. https://kitronik.co.uk/blogs/resources/modules-micro-python-and-the-raspberry-pi-pico 

  95. https://x.com/awesomemicrobit?lang=cs 

  96. https://kitronik.co.uk/blogs/resources/beginners-guide-new-micro-bit-python-editor 

  97. https://www.highlifehighland.com/libraries/microbits/ 

  98. https://rpishop.cz/sady-pro-microbit/1857-elecfreaks-bbc-microbit-zakladni-kit-bez-microbitu.html 

  99. https://www.librariesni.org.uk/microbits/microbits-additional-information/