Zde bude ukázána instalace na Ubuntu Linuxu a klonech (Mint, Kubuntu). Na Debianu to bude stejné.

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.

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>

Vy jako uživatel (pokud nejste root) musíte být ve skupině dialout, jinak nebudete moci minicom používat. Po přidání uživatele do skupiny dialout se musíte odhlásit a znovu přihlásit. Pokud to nechce fungovat, tak restartujte počítač.

Na počítačích v učebně OU5 je toto všechno hotové a funguje to.
Nemusíte dělat vůbec nic.

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 nebo minicom -b 115200 -D /dev/ttyACM0

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($ENV{PICO_SDK_PATH}/external/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)
# Příprava pro sestavení projektu
mkdir build
cd build
cmake ..
# Sestavení projektu
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.

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.

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