MicroPython je úplná iplementace programovacího jazyka Python 3, která může bežet na mikrohardwaru jako je Raspberry Pi Pico. Dostáváte interaktivní prompt (REPL) k spouštění příkazů přímo přes USB anebo z interního systému souborů. Pico port MicroPythonu zahrnuje moduly pro nízkoúrovňový přístup k hardware.
Instalace MicroPythonu na Pico
Stáhněte si UF2 soubor, který odpovídá vaší desce
-
Raspberry Pi Pico micopython.uf2 lokální kopie, co mi funguje
-
Raspberry Pi Pico W (s wifi)
-
Raspberry Pi Pico W (s wifi a bluetooth LE)
-
Odpojte RPi od napájení
-
Stiskněte na RPi bílé tlačítko BOOTSEL a držte
-
Připojte USB kabel (microUSB)
-
Pusťte bílé tlačítko, RPi se objeví ve správci souborů jako malý USB disk
-
Přejmenujte rp2-pico-latest.uf2 na micropython.uf2 a přetáhněte do kořenové složky RPi. Odteď to bude bootovat MicroPython interpet (nebo snad OS).
-
Thonny (IDE pro Python s připojením na Raspberry Pico)
Instalace Thonny z balíků Debianu (Mintu, Ubuntu).
sudo apt install python3-tk thonny (1)
sudo chmod a+r /dev/ttyACM0 (2)
sudo chmod a+w /dev/ttyACM0
sudo usermod -a -G dialout jirka (3)
| 1 | instalace zastaralé verze, která funguje. |
| 2 | Bez toho, aby bylo možné z device /dev/ttyACM0 číst a zapisovat se nechce správně připojovat MicroPython z Thonnyho |
| 3 | Po přidání uživatele do skupiny dialout je potřaba Mint restartovat. Na Kubuntu funguje po restartu a nemusí se dělat bod 2. |
Instalace novější verze Thonny
Tato instalace která nainstaluje novější verzi Thonny, ale jenom pro lokálního uživatele.
bash <(wget -O - https://thonny.org/installer-for-linux) (1)
sudo chmod a+r /dev/ttyACM0 (2)
sudo chmod a+w /dev/ttyACM0
sudo usermod -a -G dialout jirka (3)
| 1 | spouštět bez sudo |
| 2 | Bez toho, aby bylo možné z device /dev/ttyACM0 číst a zapisovat se nechce správně připojovat MicroPython z Thonnyho |
| 3 | Přidání do skupiny dialout mi nechce na Mintu fungovat, proto jsem to vyřešil v bodě 2 chmodem (ne úplně bezpečně). Na Kubuntu funguje po restartu a nemusí se dělat bod 2. |
Thonny for Windows jsem neinstaloval. Bude to podobné.

jirka@jirka-Precision-T3610:~$ /home/jirka/apps/thonny/bin/thonny
Jednoduché Pythoní skriptíky
print("Ahoj Jirko.")
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot
Ahoj Jirko.
>>>
import utime
print ("Začátek nekonečného cyklu.")
while True:
print("Cyklus běží")
utime.sleep(1)
print("Konec cyklu. To asi nedopadne.")
import machine
import utime
led_external_green = machine.Pin(15, machine.Pin.OUT)
led_external_red = machine.Pin(16, machine.Pin.OUT)
led_external_red.toggle()
while True:
led_external_red.toggle()
led_external_green.toggle()
utime.sleep(1)
import machine
import utime
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
led_external_green = machine.Pin(15, machine.Pin.OUT)
led_external_red = machine.Pin(16, machine.Pin.OUT)
led_external_red.value(1)
led_external_green.value(0)
while button.value() == 0:
utime.sleep(0.1)
led_external_green.value(1)
led_external_red.value(0)
konec = True
while konec:
led_external_red.toggle()
led_external_green.toggle()
utime.sleep(0.5)
if button.value() == 1:
led_external_red.value(0)
led_external_green.value(0)
konec = False
utime.sleep(0.5)
print("Konec blikání")

Dokumetace k Picu

| pin | význam | popis |
|---|---|---|
3V3 |
napájení 3.3V |
Zdroj 3.3 V napájení, stejné napětí na kterém Pico běží na interně, generované z vstupu VSYS. Tento napájecí zdroj může být zapnut a vypnut pomocí pinu 3V3_EN nad ním, čímž se také vypne Pico |
VSYS |
napájení 2 až 5 V |
Pin přímo připojený k vnitřní části vašeho Pico napájecí zdroj, který nelze vypnout aniž byste také vypnuli Pico. |
VBUS |
napájení 5V |
Zdroj 5V napětí, bere se z Pico micro USB portu a slouží k napájení hardwaru který potřebuje více než 3,3 V. |
GND |
0V zem |
Všechny GND piny jsou vzájemně propojené. |
GPxx |
I/O pin pro všeobecné použití |
GPIO piny jsou dostupné vašemu programu a jsou označeny GP0 až GP28 |
GPxx_ADC |
I/O pin pro všeobecné použití s analogovým vstupem |
GPIO končící ADC a číslem je možno použít buď jako analogový vstup (ADC0 až ADC3) nebo jako digitální vstup, či výstup (GP26 až GP28) (Nelze je však použít současně jako analogový vstup a digitální vstup/výstup). |
ADC_VREF |
referenční napětí pro analogově digitální (AD) převodník |
Speciální PIN, kterým se nastavuje referenční napětí pro libovolné analogové vstupy |
AGND |
zem pro AD převodník |
Zem, která se používá spolu s pinem ADC_VREF |
RUN |
zapnutí nebo vypnutí |
Tímto pinem lze zapnout nebo vypnout Pico z jiného mikrokontroléru |
Zdroje a odkazy
Instalace C SDK na Linux
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential libstdc++-arm-none-eabi-newlib git
$ mkdir -p ~/pico (1)
$ cd ~/pico/
$ git clone -b master https://github.com/raspberrypi/pico-sdk.git
$ cd pico-sdk
$ git submodule update --init
$ echo 'export PICO_SDK_PATH=$HOME/pico/pico-sdk' >> ~/.bashrc (2)
$ source ~/.bashrc (3)
| 1 | Instalovat můžete do libovolného adresáře, musíte ho ale přidat do proměnné PICO_SDK_PATH |
| 2 | Přidání adresáře s SDK do PICO_SDK_PATH. Bez toho nebude vyvojové prostředí fungovat. |
| 3 | Aktivace .bashrc, můžete tento příkaz vynechat a odhlásit se a znovu přihlásit. |
| 15.10.2024 Je problém s Pico C SDK verze 2.0.0 a některé věci nejdou přeložit. Pokud tomu tak je, tak je lepší instalovat verzi Pico C SDK 1.5.1. Dokud nebude vydána verze Pico C SDK 2.0.1, tak raději instalujte verzi 1.5.1. Verze 2.0.0 je nutná jenom pro desky Pico 2. |
$ mkdir -p ~/pico (1)
$ cd ~/pico/
$ git clone -b 1.5.1 https://github.com/raspberrypi/pico-sdk.git
$ cd pico-sdk
$ git submodule update --init
$ echo 'export PICO_SDK_PATH=$HOME/pico/pico-sdk' >> ~/.bashrc (2)
$ source ~/.bashrc (3)
| 1 | Pokud jste již vytvořili adresář, tak nemusíte dělat. |
| 2 | Pokud to již v .bashrc máte, tak nemusíte dělat. |
| 3 | Aktivace .bashrc, můžete tento příkaz vynechat a odhlásit se a znovu přihlásit. |
Je velmi vhodné si nainstalovat program, kterým se budeme moci přihlásit na výstup Pica, na sériovou linku.
Dá se použít třeba minicom nebo screen, ale i třeba tio. tio se musí instalovat pomocí snapu, nebo přeložit ze zdrojových kódů. Podrobnosti jsou na githubu autora.
$ sudo apt install minicom screen
$ sudo usermod -a -G dialout <uživatel>
Příklad s blikání LEDkou
$ cd ~/pico
$ git clone -b master https://github.com/raspberrypi/pico-examples.git
$ cd pico-examples
$ mkdir build
$ cd build
$ cmake ..
$ cd blink
$ make -j $(nproc)
Spuštění blink firmware na Picu
-
Podržte tlačítko BOOTSEL na Picu, připojte USB kabel mezi Picem a počítadlem a uvolněte stlačítko BOOTSEL.
-
Pico by se mělo objevit připojené jako USB flash disk. Zkopírujte ~/pico/pico-examples/build/blink/blink.uf2 na tento flash disk.
-
Pico by se mělo restartovat a spustit blink firmware. Ledka na Picu by měla začít blikat.
Příklad Hello World se sériovou linkou
Pico může používat USB port jako sériovou linku, tak máme k dispozici STDIO
$ cd pico-examples/build/hello_world
$ make -j $(nproc)
Spuštění Hello World
-
Podržte tlačítko BOOTSEL na Picu, připojte USB kabel mezi Picem a počítadlem a uvolněte stlačítko BOOTSEL.
-
Pico by se mělo objevit připojené jako USB flash disk. Zkopírujte ~/pico/pico-examples/build/hello_world/usb/hello_usb.uf2 na tento flash disk.
-
Pico by se mělo restartovat a mělo by se tvářit jako USB sériová linka
-
Spusťte sudo dmesg | tail a zjistěte sériovou linku (měla by být nejspíše /dev/ttyACM0)
-
Připojete se k sériové lince pomocí programu screen /dev/ttyACM0 115200
Hello, world!
Hello, world!
Hello, world!
...
K odpojení screenu od sériové linky se používá Ctrl-A, k a y
Vytvoření vlastního projektu
$ cd ~/pico
$ mkdir my_project
$ cd my_project/
$ touch my_project.c
$ touch CMakeLists.txt
$ cp $PICO_SDK_PATH/external/pico_sdk_import.cmake .
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
const uint LED_PIN = 25;
int main() {
stdio_init_all();
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (1) {
gpio_put(LED_PIN, 0);
sleep_ms(250);
gpio_put(LED_PIN, 1);
printf("Hello World\n");
sleep_ms(1000);
}
}
Do CMakeLists.txt napište následující text:
cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(my_project C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
add_executable(my_project
my_project.c
)
pico_enable_stdio_usb(my_project 1)
pico_enable_stdio_uart(my_project 0)
pico_add_extra_outputs(my_project)
target_link_libraries(my_project pico_stdlib)
Poznámka: Implicitně je STDIO připojeni k UART0 (Raspberry Pi Pico piny 1 a 2). pico_enable_stdio_uart(my_project 0) vypne STDIO na UART0 pico_enable_stdio_usb(my_project 1) zapne STDIO přes USB UART (/dev/ttyACM0)
# Prepare for build
$ mkdir build
$ cd build
$ cmake ..
# Build/rebuild
$ make
Spuštení programu
-
Podržte tlačítko BOOTSEL na Picu, připojte USB kabel mezi Picem a počítadlem a uvolněte stlačítko BOOTSEL.
-
Pico by se mělo objevit připojené jako USB flash disk. Zkopírujte ~/pico/my_project/my_project.uf2 na tento flash disk.
-
Pico by se mělo restartovat a mělo by se tvářit jako USB sériová linka, vestavěná LED začne blikat.
Poznámka na závěr: Velikost souboru micropython.uf2 je 638464 bytů. Velikost blink.uf2 je 17408 bytů. Céčkové programy jsou menší a určitě rychlejší než obdobné Pythoní skripty, což může být u větších projektů podstatné, vzhledem k omezenosti paměti Pico. Pokud má aplikace něco řídit v reálném čase a bude vyžadována velmi rychlá odezva, může být MicroPython naprosto nepoužitelný.
Instalace C SDK pro Pico na Windows popíšu někdy později, až to rozchodím. Na programování Windows nepoužívám a proto to pro mě bude trochu boj.
Je to rozchozené zde a nebo jiným způsobem zde.