Raspberry Pi, Pico!

I když titulek může vypadat jako výkřik fotbalového fanouška, nenechte se zmást: ve skutečnosti britská nadace Raspberry Pi Foundation nedávno oznámila novou desku, pojmenovanou Pico, a je to velmi zajímavý kousek, proto ten vykřičník. Rozklikněte si článek a podívejte se proč.

Nadace Raspberry Pi před lety přišla s myšlenkou poskytnout co nejlevnější počítač do škol a pro rozvojové země. Postupně vznikla řada jednodeskových počítačů Raspberry Pi (RPi), na které se dá nainstalovat linux1 a když se připojí monitor a klávesnice, už se to dá použít pro základní kancelářské aplikace a brouzdání po internetu. Své využití našly malinové koláče díky velikosti (~8,5×5,5cm) a ceně (~500-2000Kč podle modelu) i v jiných segmentech, řada lidí je používá pro takové to domácí žvýkání2, jako „mediální centrum“ místo v propadlišti dějin zapadlé véháesky, pro jednoduchou automatizaci, na roboty, ale taky i na dost pokročilé distribuované výpočty v clusterech desítek až stovek propojených RPi. Vzniknul i RPi 400, což je RPi vestavěný do klávesnice, takže stačí zastrčit microSD kartu, připojit zdroj a přes HDMI monitor nebo TV a jedete (stojí kolem 2000Kč a vypadá ne nepodobně jako staré dobré ZX Spectrum 🙂 ). Dosud nejmenší RPi Zero byl oproti základním modelům zmenšený (6,5x3cm), má míň periferií, ale je pořád velmi výkonný.

Nejnovější Pico jde ještě o kousek dál, resp. níž: jednak velikostí (2,1×5,1cm), ale hlavně cenou, stojí totiž 4$, u českého dovozce momentálně 109Kč. Výkon je sice nižší, než u ostatních RPi, ale pořád je to řádově nad Arduinama (ARM dvojjádro na 133MHz) a navíc má spoustu možností pro připojení (celkem 26 I/O pinů, kdo z vás to má, pánové Arduinisti?), takže se bude velice dobře hodit tam, kde už Arduina nestačí, a přitom vám v peněžence neudělá průvan.

„Zabalený“ RPi Pico – samolepka s čárovým kódem je málem větší, než samotný mikrokontroler

Jádrem RPi Pico je jednočipový mikrokontroler RP2040, vyvinutý přímo nadací RPi3. Uvnitř je dvojjádrový ARM Cortex-M0 s 264kB RAM + 2MB Flash, doplněný o řadu běžných periferií – USB device/host, 2xSPI, 2xi2c, 2xUART, 3xADC, 16xPWM, teplotní senzor a další. Už to by stačilo, aby se Ardujíno stydělo v koutě, ale čím se RP2040 ještě víc vymyká z řady dalších malých destiček s mikrokontrolery, je zařazení naprosto bombastické periferie: na čipu je uživateli dostupný 8xPIO (programovatelný vstupně-výstupní blok4). Tenhle programovatelný blok umožňuje vyrobit si vlastní komunikaci pro to, co je potřeba, a to tak, že to bude na vlastním programu totálně nezávislé5. V běžných systémech, pokud je nedostatek periferií, se to řeší buď přidáním dalšího čipu, anebo programovou obsluhou, tzv. bitbangingem, kdy se při komunikaci nastavují a čtou úrovně jednotlivých pinů přímo z hlavního programu. Zde si ale můžete pomocí speciálního jazyka napsat obsluhu těch pinů na nízké úrovni v tom PIO, čímž se to výrazně zjednoduší i zrychlí. A není to díky mocným vlastnostem toho jazyka nic těžkého: například posílání dat ven po SPI je na pět řádků, z čehož výkonné instrukce jsou vlastně jen dvě, a to ještě jedna z nich je instrukce skoku, která to celé točí pro všechny bity dokola6. Ve svém programu pak už jen řeknete rychlost (takt hodin), pin, na kterém se má vysílat a poskytnete ta data. To je celé, zbytek už „ono samo“ – jazyk je navržený právě tak, aby se běžné věci nemusely nijak extra řešit. Nepotřebujete žádné rozsekání na jednotlivé bity, digitalWrite high, delay, digitalWrite low, zase delay, patlat se s časováním, teď ještě nějaké rozhození kvůlivá interruptům a stejně se to nějak blbě mele… Tady to navíc u běžných věcí ani nemusíte programovat – už teď jsou k dispozici knihovny pro běžné záležitosti, prostě vemete a použijete. Ono se ani neočekává, že by si tohle uživatelé vždycky psali sami, ale můžou a to je právě to zajímavé. Pro nějaké specialitky totiž stačí naučit se ten jazyk, a i když to vypadá složitě, tak tenhle jazyk má celkem jen devět instrukcí, to je všechno! Devět!7

Vlastní Pico se programuje podobně jako jiné mikrokontrolery. Z programovacích jazyků je momentálně k dispozici MicroPython a C/C++8 a nejspíš se časem objeví i další možnosti. Nahrání programu je ještě jednodušší než u Arduina, v textovém editoru si napíšete program a pak ho myší přetáhnete přímo na Pico – po připojení USB se vám totiž Pico připojí jako disk (mass storage), takže tam můžete myší přetáhnout svůj program a je to – na nahrání programu prostě nepotřebujete žádné magické zaříkávadlo a příkazovou řádku ani divné IDE s modrozelenou šipkou.

Pro srovnání: nahoře Arduino Uno ve verzi TotemDuino, pod ním RPi Pico, dále Blue Pill s STM32 a dole Arduino Micro.

Už se těším, jak si s tím pohraju, RPi Pico už je na cestě mám na stole 🙂


Poznámky:

  1. A taky mimo jiné RISC OS, FreeBSD, Plan 9, HelenOS a dokonce i Windows 10 IoT Core.
  2. Jestli se dobře pamatuju, Vítek ho měl jako noťas na Robodoupěti
  3. Tedy přesněji řečeno je to spíš taková skládačka z předpřipravených hardwarových komponent, vývoj nového procesoru je sakra drahá záležitost, ale tenhle kontroler nikdo jinej prostě nemá.
  4. Anglicky PIO = Programmable I/O neboli programovatelný vstup/výstup.
  5. Technicky tam je u každého jádra jeden programovatelný blok se čtyřmi stavovými automaty, kde každý má jeden FIFO na vstup a jeden na výstup … paráda.
  6. Koho to zajímá? Napište mi do fóra!
  7. Tedy je to takový assembler, ale devět instrukcí není přece nic, ne?
  8. C++ … aha – takže zkušení Arduinisti to zvládnou taky.