Les 2
MicroPython op je bordje zetten
De MicroPython-firmware flashen op een Raspberry Pi Pico of ESP32, verbinden met de REPL en bestanden op het bordje zetten met mpremote of Thonny.
🎯 Na deze les kun je
- uitleggen wat MicroPython-firmware is en waarom je die eerst moet flashen
- MicroPython-firmware flashen op een Pico (UF2) of ESP32 (esptool)
- verbinden met de REPL
- bestanden op het bordje zetten met mpremote of Thonny
Een microcontroller is een kleine computer op één chip, zonder besturingssysteem, toetsenbord of scherm. Om er Python op te draaien, zet je eerst MicroPython erop: een compacte Python-interpreter die zelf het enige programma op de chip is. Daarna praat je met het bordje via een USB-kabel, en draait het jouw .py-bestanden.
Welk bordje?
In deze cursus gebruiken we twee populaire bordjes. Alle voorbeelden werken op beide, tenzij anders vermeld.
| Raspberry Pi Pico W / Pico 2 W | ESP32 (bijv. ESP32-DevKitC) | |
|---|---|---|
| Chip | RP2040 / RP2350 | ESP32 |
| Wifi | ja (de W-versie) | ja |
| Bluetooth | ja (W-versie) | ja |
| Flashen | bestand slepen (UF2) | esptool |
| Ingebouwde LED | Pin("LED") |
vaak pin 2 |
Heb je nog niets gekocht? Neem een Pico W of Pico 2 W: goedkoop, goed gedocumenteerd en het flashen kan niet misgaan.
Flashen op een Pico
- Download het nieuwste
.uf2-bestand voor jouw bordje van micropython.org/download (zoek opRPI_PICO_WofRPI_PICO2_W). - Houd de witte BOOTSEL-knop ingedrukt en steek de USB-kabel in.
- Het bordje verschijnt als USB-stick
RPI-RP2. Sleep het.uf2-bestand erop. - Het bordje herstart vanzelf; de "stick" verdwijnt. Klaar.
Flashen op een ESP32
Installeer esptool met pip en download de .bin voor ESP32_GENERIC:
pip install esptool
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 ESP32_GENERIC-v1.24.0.bin
Op Windows heet de poort COM3 of iets dergelijks (zie Apparaatbeheer), op een Mac /dev/cu.usbserial-…. Het adres 0x1000 geldt voor de gewone ESP32; voor de ESP32-S3 en -C3 is het 0. De downloadpagina vermeldt het per bordje.
De REPL
Na het flashen draait MicroPython en wacht op invoer via de seriële USB-verbinding: de REPL (Read-Eval-Print Loop), dezelfde >>> als op je pc.
Met mpremote (de officiële tool, pip install mpremote):
mpremote
Connected to MicroPython at /dev/ttyACM0
Use Ctrl-] or Ctrl-x to exit this shell
>>> print("hallo vanaf het bordje")
hallo vanaf het bordje
>>> 2 ** 10
1024
Met Thonny (een eenvoudige Python-editor): kies rechtsonder de interpreter "MicroPython (Raspberry Pi Pico)" of "MicroPython (ESP32)". De shell onderin is dan de REPL van je bordje.
Handige toetsen in de REPL:
- Ctrl-C: stop het programma dat draait.
- Ctrl-D: zachte herstart (soft reset);
main.pywordt opnieuw uitgevoerd.
Bestanden op het bordje
MicroPython heeft een klein bestandssysteem in de flash. Twee bestanden hebben een speciale betekenis:
boot.pydraait als eerste bij het opstarten (meestal laat je die leeg).main.pydraait daarna. Zet hier je programma in, dan start het vanzelf als het bordje stroom krijgt, ook zonder computer.
Met mpremote:
mpremote fs ls # wat staat erop?
mpremote fs cp hallo.py : # kopieer naar het bordje (: = bordje)
mpremote run hallo.py # draai een bestand van je pc zonder het op te slaan
mpremote fs cp main.py :main.py
mpremote reset
mpremote run is ideaal tijdens het ontwikkelen: niets wordt opgeslagen en je ziet de uitvoer direct. In Thonny doe je hetzelfde met de groene Run-knop, en sla je met "Opslaan als… → Raspberry Pi Pico" op het bordje op.
# hallo.py
import sys
print("hallo vanaf", sys.platform)
print("MicroPython", sys.version)
Op een Pico print dit hallo vanaf rp2, op een ESP32 hallo vanaf esp32.
Typische problemen
- Geen poort te zien: veel USB-kabels zijn alleen voor opladen. Probeer een andere kabel.
- "Port is busy": een ander programma (Thonny, een tweede terminal) heeft de poort al open. Sluit het.
- ESP32 reageert niet op esptool: houd de BOOT-knop ingedrukt terwijl esptool begint te verbinden.
- Je programma start niet vanzelf: het bestand heet niet precies
main.py, of staat op je pc in plaats van op het bordje.
Oefeningen
- Wat is het verschil tussen
mpremote run test.pyenmpremote fs cp test.py :main.py? - Waarom moet je MicroPython eerst flashen voordat je
.py-bestanden kunt draaien? - Je bordje start na het aansluiten van een powerbank niet je programma. Wat controleer je?
Modelantwoord
runvoert het bestand eenmalig uit vanaf je pc, zonder het op te slaan.cp … :main.pyzet het op het bordje alsmain.py, zodat het bij elke start automatisch draait.- De microcontroller begrijpt alleen machinecode. De MicroPython-firmware is een programma in machinecode dat Python-code kan inlezen en uitvoeren.
- Of het bestand op het bordje staat (
mpremote fs ls) en preciesmain.pyheet, en of er geen fout in staat (verbind met de REPL en druk Ctrl-D om de foutmelding te zien).
Lab: bordje klaarmaken en hallo zeggen
- Flash MicroPython op je bordje (of gebruik de gesimuleerde Pico in de lab-container).
- Schrijf
main.pydie het platform en de versie print, en daarnaklaar. - Zet het op het bordje en herstart met
mpremote reset. beetje check micropython-les02
Samenvatting
- MicroPython is firmware die je één keer flasht: op een Pico via UF2, op een ESP32 met esptool.
- De REPL (
>>>) bereik je via mpremote of Thonny; Ctrl-C stopt, Ctrl-D herstart. main.pydraait automatisch bij het opstarten.mpremote runom te testen,mpremote fs cpom op te slaan.
Volgende les: in de REPL je eerste LED aansturen.
Lab
Bordje klaarmaken en hallo zeggen
💻 Dit lab doe je op je eigen computer met Docker. Start de lab-container met (geeft de opdracht een eigen startcommando, gebruik dan dat):
$ docker run -it --rm registry.wizg.it/webhosting/beetje-labs:micropython-les2
Klaar? Controleer je werk met:
$ beetje check micropython-les2