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

  1. Raspberry Pi Pico micopython.uf2 lokální kopie, co mi funguje

  2. Raspberry Pi Pico W (s wifi)

  3. Raspberry Pi Pico W (s wifi a bluetooth LE)

    1. Odpojte RPi od napájení

    2. Stiskněte na RPi bílé tlačítko BOOTSEL a držte

    3. Připojte USB kabel (microUSB)

    4. Pusťte bílé tlačítko, RPi se objeví ve správci souborů jako malý USB disk

    5. 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).

Instalace starší verze Thonny
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.

Lepší je nainstalovat aktuální verzi 4.1.2
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é.

Správně fungující Thonny

thonny ok

Spouštím to takto z terminálu
jirka@jirka-Precision-T3610:~$ /home/jirka/apps/thonny/bin/thonny

Jednoduché Pythoní skriptíky

Hello World
print("Ahoj Jirko.")
vypíše to toto
>>> %Run -c $EDITOR_CONTENT

MPY: soft reboot
Ahoj Jirko.
>>>
Nekonečná smyčka, musí se násilně přerušit
import utime
print ("Začátek nekonečného cyklu.")
while True:
    print("Cyklus běží")
    utime.sleep(1)

print("Konec cyklu. To asi nedopadne.")
Blikání ledek
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)
Funguje to
Blikání se spuštěním a zastavením
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í")
Zapojení se start stop tlačítkem

ledky tlacitko

Dokumetace k Picu

Zapojení pinů

pico piny

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

Předpoklady
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential libstdc++-arm-none-eabi-newlib git
Stažení a instalace Pico C SDK
$ 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.
Instalace Pico C SDK 1.5.1
$ 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.

Utilitky pro práci se sériovou linkou
$ sudo apt install minicom screen
$ sudo usermod -a -G dialout <uživatel>

Příklad s blikání LEDkou

Sestavení a spuštění příkladu
$ 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)
Sestavení pomocí make :-)

termtosvg n088x9lm

  1. Podržte tlačítko BOOTSEL na Picu, připojte USB kabel mezi Picem a počítadlem a uvolněte stlačítko BOOTSEL.

  2. 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.

  3. 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

  1. Podržte tlačítko BOOTSEL na Picu, připojte USB kabel mezi Picem a počítadlem a uvolněte stlačítko BOOTSEL.

  2. 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.

  3. Pico by se mělo restartovat a mělo by se tvářit jako USB sériová linka

  4. Spusťte sudo dmesg | tail a zjistěte sériovou linku (měla by být nejspíše /dev/ttyACM0)

  5. Připojete se k sériové lince pomocí programu screen /dev/ttyACM0 115200

Sériová linka bude ukazovat
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 .
Příklad my_project.c
#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

  1. Podržte tlačítko BOOTSEL na Picu, připojte USB kabel mezi Picem a počítadlem a uvolněte stlačítko BOOTSEL.

  2. Pico by se mělo objevit připojené jako USB flash disk. Zkopírujte ~/pico/my_project/my_project.uf2 na tento flash disk.

  3. 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.

Zdroje a odkazy