
Wprowadzenie historyczne
Python, jako język wysokiego poziomu, szybko zyskał popularność w świecie embedded. Jednak klasyczny interpreter Pythona był zbyt ciężki dla mikrokontrolerów.
- MicroPython powstał w 2013 roku dzięki Damienowi George’owi jako lekka implementacja Pythona 3, zoptymalizowana pod mikrokontrolery (STM32, ESP32, RP2040).
- CircuitPython to fork MicroPythona rozwijany przez Adafruit od 2017 roku. Jego celem było uproszczenie pracy początkującym i integracja z bogatą ofertą płytek Adafruit.
Oba projekty są aktywnie rozwijane, ale mają różne filozofie: MicroPython stawia na wydajność i szerokie wsparcie sprzętowe, CircuitPython na prostotę i edukację.
Tabela porównawcza MicroPython i CircuitPython
| Cecha / Aspekt | MicroPython | CircuitPython |
|---|---|---|
| Twórca | Damien George (2013) | Adafruit (2017, fork MicroPythona) |
| Cel | Wydajność, szerokie wsparcie sprzętowe | Prostota, edukacja, integracja z Adafruit |
| Sprzęt | ESP32, STM32, RP2040, Pyboard, wiele innych | Głównie płytki Adafruit (Feather, Metro, CPX) |
| Biblioteki | Minimalistyczne, niskopoziomowe | Rozbudowane, przyjazne dla początkujących |
| Workflow | REPL, ręczne resetowanie, narzędzia typu rshell | Auto‑reload po zapisie pliku, USB jako dysk |
| Wydajność | Szybszy, bliżej “czystego” Pythona | Wolniejszy, ale prostszy w użyciu |
| Społeczność | Globalna, techniczna | Silna społeczność Adafruit, edukacyjna |
| Najlepsze zastosowania | IoT, robotyka, projekty wymagające wydajności | Nauka, prototypowanie, szybkie demo |
Przykłady kodu – Blink (miganie diodą)
MicroPython (ESP32 / RP2040)
python
from machine import Pin
import time
led = Pin(2, Pin.OUT) # GPIO2 jako LED
while True:
led.value(1) # włącz
time.sleep(0.5)
led.value(0) # wyłącz
time.sleep(0.5)
CircuitPython (Adafruit Feather / CPX)
python
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True # włącz
time.sleep(0.5)
led.value = False # wyłącz
time.sleep(0.5)
Różnica: CircuitPython używa modułu board i digitalio, które są bardziej opisowe i przyjazne dla początkujących.
Instalacja na Linux Ubuntu
Instalacja MicroPython
- Zainstaluj narzędzie
esptool:sudo apt install python3-pippip3 install esptool
- Pobierz firmware MicroPython dla swojej płytki (np. ESP32) z micropython.org/download.
- Wgraj firmware:
esptool.py --chip esp32 erase_flashesptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 esp32-xxxx.bin
- Po restarcie możesz połączyć się przez
screenlubpicocom:screen /dev/ttyUSB0 115200
Instalacja CircuitPython
- Pobierz odpowiedni plik
.uf2z circuitpython.org/downloads. - Podłącz płytkę w trybie bootloadera (np. przytrzymując przycisk RESET).
- Płytka pojawi się jako dysk USB. Skopiuj plik
.uf2na ten dysk. - Po restarcie płytka pojawi się jako dysk CIRCUITPY – wystarczy edytować
code.py.
Podsumowanie
- MicroPython: większa wydajność, szerokie wsparcie sprzętowe, lepszy dla zaawansowanych projektów.
- CircuitPython: prostszy workflow, bogate biblioteki Adafruit, idealny dla nauki i szybkiego prototypowania.
Oba klony Pythona świetnie nadają się do eksploracji świata mikrokontrolerów. Wybór zależy od tego, czy cenisz wydajność i elastyczność (MicroPython), czy prostotę i edukacyjny ekosystem (CircuitPython).
Każdy entuzjasta Linuxa w pewnym momencie spotka się z chęcią eksperymentowania z mikrokontrolerami, Internetem Rzeczy (ang. IoT), automatyzacją domu (ang. home automation) i elektronicznymi odkryciami, gadżetami, modułami 😉 Niekiedy zaczyna się ta przygoda od Arduino i 8-bitowego mikrokontrolera t.j. rodzina AVR np. AtMega328 a czasami od ESP32, czyli 32-bitowego mikrokontrolera, z wieloma subsystemami na pokładzie t.j. WiFi, Bluetooth, ADC, DAC, PWM, RTC, itd.
Dobrej zabawy z Linuxem!