Raspberry Pi Pico (W) – poznámky

Chvíli jsem si hrál s Raspberry Pi Pico W, tak tady je pár poznámek a zkušeností, které by se mohly hodit.

Raspberry Pi Pico je zajímavý mikrokontrolér. Jeho IO matrix je extrémně konfigurovatelný a rychlý. Pro low-level hraní to může být lepší než ESP32.

Lze pro to vyvíjet třemi základními způsoby:

  • V micropythonu. Jednoduché, funkční, pro spoustu věcí to bude stačit.
  • Pomocí neoficiálního core pro Arduino. Pak se to ukazuje jako deska v Arduino IDE a běží tam spousta knihoven z Arduino světa. Zde je samozřejmě omezený přístup k hardware, protože od mnoha věcí je programátor odstíněn abstrakcemi Arduino core.
  • V céčku pomocí oficiálního SDK.

Všechny varianty jsem vyzkoušel.

Micropython, Thonny

Postupujte podle návodu zde. Je to v podstatě seamless, všechno funguje. Jen je potřeba vědět, že Rpi Pico W má LED diodu jinde než Rpi Pico a pro základní test blikáním diody je tak potřeba použít jiný kód.

Narazil jsem na jediný problém, který není na první pohled jasný. RPi Pico bylo používané pro různé experimenty a najednou do něj nešla nahrávat aplikace pro trvalé uložení – interpret běžel, ale pokus o uložení do main.py selhal s tím, že na disk nejde zapsat. Co s tím?

V Thonny jsem zvolil View > Files, u Rpi Pico zmáčknul hamburgerové menu, „Storage space“ a hele:

To asi není zdravý stav. Řešením je smazání celého úložiště: Z webu stáhnout flash-nuke.uf2 (úplně dole na stránce), přepnout zařízení do firmare upload režimu, nahrát flash-nuke.uf2. Po chvíli se zařízení opět samo přepne do firmware upload režimu a je v Thonny potřeba znovu nahrát python firmware jako na začátku – ale úložiště je prázdné.


Arduino IDE

Pro Raspberry Pi Pico je neoficiální (ve smyslu „není tvořeno nadací Raspberry Pi“) core pro Arduino. Obsahuje spoustu standardních knihoven, mluvíte do toho podobně jako do ESP32 a ono se to podobně ozývá.

Instalace je jednoduchá – přidáte správce boardů do konfigurace, nainstalujete standardní cestou boardy … a vše funguje.

Odkazy v článku u chiptrona. Github projektu. Docela rozumná dokumentace.

Tím, že je to přeneseno do Arduino core, jste odstíněni od implementačních detailů. V oficiálním céčkovém SDK Raspberry Pi Pico např. není řešeno, že na Pico je LED na pinu 25, zatímco na Pico W je připojena na pin WiFi modulu. Musíte si to ošetřovat ručně – a rozsvítit LED na Pico W je výrazně složitější než na Pico. Oproti tomu v arduino core prostě nastavíte LED_BUILTIN na 1 a svítí. Obsluha pinů na RP2040 i na WiFi modulu je stejným digitalWrite(), liší se jen pojmenování pinů.

Hezký článek se step-by-step ukázkami.


Originální céčkové SDK – na Windows

Nechávám si na konec, protože to bylo maso.

Rozcestník dokumentace a zdrojů pro RPi Pico je zde. Začínáte-li s Pico W, jděte na dokument specifický pro tuto desku – Connecting to the Internet with Raspberry Pi Pico W.

Stáhněte si originální one-click instalátor a nechte ho vše udělat. Je lépe na počítači nemít Visual Studio nebo VS Code. Použijte čistou virtuálku.

Nicméně dnes (04/2024) je rozpor mezi instalátorem a dokumentací (build-date: 2024-02-02). Instalátor už má nové nástroje, dokumentace referuje staré, které již neexistují.

Takže:

  • Examply se připravují tak, že přímo v adresáři pico-examples (nikoli v podadresáři build, jak píšou v PDF) spustíte cmake.
    • Pokud máte Pico, sputíte cmake bez parametrů.
    • Ale pokud máte PicoW, musíte vyplnit jiný typ desky a jméno/heslo pro WiFi. Bez těchto vyplněných parametrů to nebude fungovat. Vypadá to takto:
    • cmake -DPICO_BOARD=pico_w -DWIFI_SSID="mojesit" -DWIFI_PASSWORD="password"
    • Oproti dokumentaci se už nenastavuje -G „NMake Makefiles“!
  • Examply se pak sestaví tak, že přímo v adresáři pico-examples spustíte ninja.
  • Sestavení všech examplů trvá dlouho.

Pro spouštění VS Code je doporučen trik: nepouštět ho přímo ze start menu či ikony na desktopu, nýbrž spustit „Pico – Developer command prompt„, který nastaví správně environment, a v něm spustit code .

Pokud chcete pracovat s WiFi, tak pro TCP/IP je použit stack lwIp. Jeho dokumentace je zde. Udělat jednoduchou konfigurační stránku přes web s vlastním WiFi AP (tj. WiFi AP + DHCP + mDNS + webserver) vyžaduje výrazně více boilerplate kódu než v Arduino Core, ale jde to.

  • Vyjít můžete ze samplu pico-examples\pico_w\wifi\access_point, ale všimněte si, že ten si webserver implementuje nad TCP stackem sám (a tedy jen s omezenou funkcionalitou).
  • Plnohodnotné využití web serveru je vidět v samplu zde. lwIP knihovna implementuje:
    • statické soubory z filesystému (není třeba konfigurovat, funguje automagicky)
    • „server side includes“ v těchto souborech – tj. v šablonách jsou placeholdery, které můžete vyplňovat. Je to hot technologie roku cca 1998, ale Apache httpd to podporuje do dneška.
    • „cgi“, callbacky pro jednotlivé URL.

Napsat komentář