První Pico krůčky v C/C++
Raspberry Pi Pico
Pico je jednočipový počítač založený na mikrokontroléru RP2040. Oba, čip i celá deska, jsou od společnosti Raspberry Pi. Stejně jako jeho starší sourozenci z rodiny Raspberry Pi je i Pico snadno přístupný a široce dostupný kus výpočetní techniky, který se hodí ne jen ke vzdělávání, ale i domácím kutilům a do průmyslu.
Rychlá instalace C/C++ SDK
C je nízkoúrovňový, kompilovaný, relativně minimalistický programovací jazyk.
C++ je rozšířením jazyka C. Podporuje více programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování.
Protože Raspberry Pi Pico budeme v tomto článku ovládat z Raspberry Pi 4B nebo Raspberry Pi 400, můžeme použít instalační skript. Stáhneme si ho následujícím příkazem:
$ git clone git@github.com:raspberrypi/pico-setup.git
Nejprve musíte mít nainstalovaný Git:
sudo apt install git
Skript spustíme dalším příkazem:
$ pico-setup/pico_setup.sh
Skript…
- vytvoří složku s názvem
pico
, - nainstaluje potřebné závislosti,
- stáhne
pico-sdk
apico-examples
, - definuje
PICO_SDK_PATH
v souboru~/.bashrc
, - zkompiluje příklady
blink
ahello_world
vpico-examples/build/blink
apico-examples/build/hello_world
, - stáhne a zkompiluje OpenOCD (pro podporu debugování),
- stáhne a nainstaluje Visual Studio Code,
- nainstaluje potřebná rozšíření pro Visual Studio Code a
- nastaví Raspberry Pi UART pro použití s Raspberry Pi Pico.
Aby se projevila konfigurace UART, musíme Raspberry Pi restartovat:
$ sudo reboot
Jakmile se Raspberry Pi restartuje, můžeme už v nabídce „Programování“ najít Visual Studio Code a začít programovat.
„Hello World“ v jazyce C
„Hello World“ je typicky první program pro seznámení se s pravidly a funkcemi nového programovacího jazyka, v tomto případě jazyka C.
Sestavení programu hello_world
Program hello_world
je součástí příkladů a instalační skript nám ho už sestavil, takže ho najdeme v v adresáři pico-examples/build/hello_world
. Tady je úryvek kódu:
10 int main() { 11 stdio_init_all(); 12 while (true) { 13 printf("Hello, world!\n"); 14 sleep_ms(1000); 15 } 16 return 0; 17 }
Popis sestavení programu
hello_world
najdete v dokumentaci na str. 13.
Načtení programu hello_world
Nejjednodušší metodou načtení softwaru na Raspberry Pi Pico je přetažení sestaveného souboru s programem přes USB kabel do integrované flash paměti.
- Stikneme a držíme tlačítko BOOTSEL (aby se Pico přepnulo do režimu USB Mass Storage),
- pomocí micro USB kabelu připojíme Raspberry Pi Pico k řídícímu Raspberry Pi
- a až se v řídícím počítači objeví připojený disk pojmenovaný RPI-RP2, tlačítko tlačítko BOOTSEL pustíme.
- Na disk RPI-RP2, což je flash paměť integrovaná v Pico, přesuneme soubor
hello_usb.uf2
ze složkypico-examples/build/hello_world
.
Pico se odpojí, restartuje na spustí nahraný program.
Načítání programu pomocí režimu USB Mass Storage je skvělé, pokud víte, že váš program bude fungovat hned napoprvé, ale pokud vyvíjíte něco nového, je pravděpodobné, že jej budete chtít ladit. Potom je lepší progam načíst pomocí rozhraní Serial Wire Debug, viz Kapitola 5. Kromě načítání softwaru vám totiž SWD umožňuje nastavit zarážky, zkontrolovat proměnné a zkontrolovat obsah paměti.
Zobrazení výstupu programu hello_world
Program hello_usb.uf2
posílá text na USB, takže abychom si ho mohli přečíst, musíme se z terminálu připojit přes USB k Raspberry Pi Pico.
Když máme Raspberry Pi Pico připojené přes USB přímo k řídícímu Raspberry Pi, text se zobrazí po instalaci a spuštění programu minicom
.
Instalace minicom
:
$ sudo apt install minicom
Spuštění minicom
:
$ minicom -b 115200 -o -D /dev/ACM0
V tuto chvíli by se nám měl ukázat nápis Hello, world!
.
Blikající LED v jazyce C
Blikající LED obvykle prvním programem na vyzkoušení hardwaru. Naučit se, jak rozblikat LED, nás dostane na půli cesty kamkoli. Na Raspberry Pi Pico je vestavěná LED připojená k výstupu RP2040 č. 25.
Sestavení programu blink
Program blink
, které rozbliká LED je součástí příkladů a instalační skript nám ho už sestavil, takže ho najdeme v adresáři pico-examples/build/blink
. Tady je úryvek kódu:
9 int main() {
10 const uint LED_PIN = 25;
11 gpio_init(LED_PIN);
12 gpio_set_dir(LED_PIN, GPIO_OUT);
13 while(true) {
14 gpio_put(LED_PIN, 1);
15 sleep_ms(250);
16 gpio_put(LED_PIN, 0);
17 sleep_ms(250);
18 }
19 }
Popis sestavení programu
blink
najdete v dokumentaci na str. 8.
Načtení programu blink
Nejjednodušší metodou načtení softwaru na Raspberry Pi Pico je přetažení sestaveného souboru s programem přes USB kabel do integrované flash paměti.
- Stikneme a držíme tlačítko BOOTSEL (aby se Pico přepnulo do režimu USB Mass Storage),
- pomocí micro USB kabelu připojíme Raspberry Pi Pico k řídícímu Raspberry Pi
- a až se v řídícím počítači objeví připojený disk pojmenovaný RPI-RP2, tlačítko tlačítko BOOTSEL pustíme.
- Na disk RPI-RP2, což je flash paměť integrovaná v Pico, přesuneme soubor
blink.uf2
ze složkypico-examples/build/blink
.
Pico se odpojí, restartuje na spustí nahraný program – rozbliká se LED kontrolka.
Kam dál?
Teď, když máme Pico zapojené a rozblikané, můžeme se pustit do něčeho složitějšího. Pro pokračování cestou C/C++ si stáhněte Getting Started with Raspberry Pi Pico. Můžete se v něm rovnou posunout na stránku 15. Pokud Vás zajímá, jak to samé vypadá v jazyce MicroPython, pokračujte článkem První Pico krůčky v MicroPython.
Nejde to pouzivat normalne z PC win? RPi4 nemam.
Postup pro Windows je v dokumentaci, https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf, začíná na str. 35.
Postupoval jsem podle dokumentace – „As we did for the previous „Blink“ example, change directory into the hello_world directory inside the pico-examples tree, and run make.“ Když se o to ale pokusím, dostanu „no targets specified and no makefile found“.
Kdyby mi někdo věděl poradit, bylo by to fajn, díky.