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
-
https://github.com/alankrantas/microbit-micropython-cookbook ↩↩↩↩
-
https://learn.sparkfun.com/tutorials/how-to-load-micropython-on-a-microcontroller-board/microbit ↩↩
-
https://microbit-micropython.readthedocs.io/en/v1.0.1/devguide/repl.html ↩↩
-
https://microbit-micropython.readthedocs.io/en/v2-docs/devguide/repl.html ↩↩
-
https://support.microbit.org/support/solutions/articles/19000106819-which-editors-can-i-use-with-the-micro-bit- ↩↩
-
https://github.com/makinteract/vscode-microbit-micropython ↩↩
-
https://www.elecfreaks.com/blog/post/microbit-basics-for-teachers-part-3-micropython.html ↩↩↩
-
https://microbit-micropython.readthedocs.io/en/latest/microbit.html ↩↩
-
https://microbit.org/projects/make-it-code-it/treasure-hunt/ ↩↩
-
https://microbit-micropython.readthedocs.io/en/latest/tutorials/radio.html ↩
-
https://microbit-micropython.readthedocs.io/en/latest/neopixel.html ↩
-
https://microbit-micropython.readthedocs.io/en/v1.0.1/neopixel.html ↩
-
https://support.microbit.org/support/solutions/articles/19000130206-using-neopixels-with-the-micro-bit ↩
-
https://microbit-micropython.readthedocs.io/en/latest/music.html ↩
-
https://support.microbit.org/support/solutions/articles/19000125318-playing-audio-on-the-micro-bit ↩↩
-
https://microbit-micropython.readthedocs.io/en/latest/tutorials/speech.html ↩
-
https://microbit-micropython.readthedocs.io/en/latest/filesystem.html ↩↩↩↩
-
https://github.com/KitronikLtd/micropython-microbit-kitronik-robotics ↩↩↩
-
https://kitronik.co.uk/blogs/resources/micropython-kitronik-bbc-microbit ↩↩↩
-
https://botland.store/microbit-extensions/18887-inventor-s-kit-for-the-bbc-microbit-python-version-kitronik-5669-6609025152950.html ↩
-
https://marketplace.visualstudio.com/items?itemName=DavidEichenberger.maqueen ↩↩↩
-
https://www.elecfreaks.com/blog/post/getting-started-with-the-microbit-and-micropython.html ↩
-
https://shop.elecfreaks.com/collections/modules-for-micro-bit ↩
-
https://support.microbit.org/support/solutions/articles/19000016191-github ↩
-
https://www.instructables.com/DIY-Educational-Microbit-Robot/ ↩
-
https://www.mouser.com/new/dfrobot/dfrobot-micro-maqueen-robot/ ↩
-
https://www.hackster.io/bhavithiran97/program-micro-bit-mobile-robot-with-python-1-colour-splash-d8c823 ↩
-
https://microbit-micropython.readthedocs.io/en/latest/tutorials/storage.html ↩↩
-
https://stackoverflow.com/questions/43368085/how-to-get-files-written-by-the-microbit-to-the-pc ↩↩↩↩
-
https://stackoverflow.com/questions/52782520/flash-microbit-embedding-a-class-py-file ↩↩
-
https://www.apress.com/kr/blog/all-blog-posts/programming-the-bbc-micro-bit/15440118 ↩
-
https://support.microbit.org/support/solutions/articles/19000106811-adding-a-module-to-the-python-editor ↩
-
https://support.microbit.org/support/solutions/articles/19000098018-files-and-modules-in-the-python-editor ↩
-
https://microbit-micropython.readthedocs.io/en/v2-docs/devguide/flashfirmware.html ↩↩
-
https://microbit-micropython.readthedocs.io/en/latest/devguide/flashfirmware.html ↩↩
-
https://stackoverflow.com/questions/70662020/how-to-use-external-modules-in-micropython-on-microbit-from-vscode ↩
-
https://www.seeedstudio.com/blog/2019/12/10/top-25-microbit-projects-for-beginners-2019/ ↩
-
https://docs.keyestudio.com/projects/KS0426/en/latest/python/python.html ↩
-
https://programuj.me/pages.html?microbit%2Fstart_python_cz ↩
-
https://docs.keyestudio.com/projects/KS4027-KS4028/en/latest/Python.html ↩
-
https://mattoppenheim.com/2020/08/23/automating-loading-micropython-code-to-the-bbc-microbit-in-linux/ ↩
-
https://support.microbit.org/support/solutions/articles/19000135210-python-editor-guide ↩
-
https://community.element14.com/learn/learning-center/stem-academy/microbit/b/blog/posts/writing-software-for-bbc-micro-bit ↩
-
https://www.reddit.com/r/learnpython/comments/14byj4m/whats_an_free_bare_bones_ide_for_python_that/ ↩
-
https://www.microbiti.cz/2019/03/v-cem-programovat-microbit.html ↩
-
https://stackoverflow.com/questions/77467502/how-to-add-a-module-transfomers-to-the-microbit-code-interface ↩
-
https://learn.adafruit.com/welcome-to-circuitpython/recommended-editors ↩
-
https://learn.adafruit.com/micro-bit-lesson-3-neopixels-with-micro-bit/software ↩
-
https://microbit.org/projects/make-it-code-it/tell-me-a-secret/ ↩
-
https://microbit.org/projects/make-it-code-it/send-a-smile/ ↩
-
https://forum.makecode.com/t/microbit-v2-audio-module-is-missing/10008 ↩
-
https://makecode.microbit.org/courses/csintro/radio/project ↩
-
https://www.instructables.com/Microbit-Neopixel-Introduction/ ↩
-
https://docs.freenove.com/projects/fnk0072/en/latest/fnk0072/codes/tutorial/10_Serial_Communication.html ↩
-
https://botland.store/microbit-extensions/12854-dfrobot-micro-maqueen-robot-platform-for-microbit-6959420915002.html ↩
-
https://support.microbit.org/support/solutions/articles/19000022103-outputing-serial-data-from-the-micro-bit-to-a-computer ↩
-
https://rpishop.cz/micromaqueen/3691-dfrobot-micromaqueen-vzdelavaci-programovaci-robot-pro-microbit-od-8-let.html ↩
-
https://learn.sparkfun.com/tutorials/how-to-load-micropython-on-a-microcontroller-board/all?print=1 ↩
-
https://stackoverflow.com/questions/77015283/is-it-possible-to-communicate-values-to-a-microbit-through-a-serial-port-using-p ↩
-
https://www.microbiti.cz/2019/08/roboticke-auticko-micromaqueen.html ↩
-
https://manpages.ubuntu.com/manpages/focal/en/man1/uflash.1.html ↩
-
https://kitronik.co.uk/blogs/resources/modules-micro-python-and-the-raspberry-pi-pico ↩
-
https://kitronik.co.uk/blogs/resources/beginners-guide-new-micro-bit-python-editor ↩
-
https://rpishop.cz/sady-pro-microbit/1857-elecfreaks-bbc-microbit-zakladni-kit-bez-microbitu.html ↩
-
https://www.librariesni.org.uk/microbits/microbits-additional-information/ ↩