Arduino versus PICAXE

Občas se setkávám s dotazy: Co je lepší, Arduino nebo Picaxe? Co z toho zvolit? Odpověď na tuto otázku víceméně není možná, protože slovo „lepší“ má pro každého jiný technický význam. Zkusím nastínit několik rozdílů, které možná někomu ve vlastním rozhodnutí pomohou.

V první řadě je vhodnější použít to, co už ovládám a v čem se vyznám, než pronikat od začátku do nových věcí a zcela samozřejmě dělat spoustu chyb. Dobrá analogie je skryta v tvrzení: „Odborník je člověk z jiného města.“ Často to, co bezprostředně neznáme, máme tendenci považovat za lepší a celkově přeceňovat. Takže kdo jednu z uvedených platforem zná, měl by zvážit jednoznačně formulované důvody, proč přejít k druhé, nebo zůstat u toho, co zná. Je nutné zdůraznit, že následující text se týká výhradně PICAXE, nikoli mikrokontrolérů PIC jako takových.

Výuka programování

Obě platformy vznikly primárně kvůli výuce. PICAXE se zaměřuje na nižší úroveň úloh zejména z oblasti amatérské robotiky, což je oblast velmi příbuzná a často se překrývající s modelářstvím a modelářskou technikou. K tomu má připravené prostředky. Jazyk vychází z Basicu. Označení, že to přímo je Basic, bych se vyhýbal, protože postrádá více negativních vlastností původního Basicu. Je velmi intuitivní, programování zvládnou snadno už děti ve věkové kategorii prvního stupně základní školy. Jazyk je relativně chudý na možnosti, a tedy jednodušší, ale také více omezující při náročnějších úlohách. Logikou se více blíží programování mikrokontrolérů v tomto směru je dobrou průpravou třeba na assembler. Je optimální pro úplný začátek s programováním, rychle a s menším úsilím poskytne výsledky, nicméně na získané návyky později při dalším odborném růstu směrem k vyšším jazykům a objektovému programování bude muset uživatel zčásti „zapomenout“.

Arduino bylo od počátku určeno pro vysokoškolské a středoškolské studenty. Jazyk vychází z C/C++, je podstatně variabilnější, ale také náročnější, nabízí mnohem více prostoru pro chyby. Je bohatší zejména na různé typy, je blíže objektovému programování, je vynikající průpravou na přechod k vyšším jazykům. Na druhou stranu řada úplně jednoduchých úkonů pro ovládání strojů (robotů) se v něm řeší složitěji, než s PICAXE. Pro nižší věkovou kategorii dětí je výrazně náročnější na pochopení a může odradit, ale kdo vydrží, bude mít náskok.

Výpočty

Jakmile dojde na výpočty, jasně větší možnosti má Arduino. PICAXE v podstatě zná jen typ byte a word, reálná aritmetika se buď musí napsat (což vůbec není jednoduché a krátké) nebo obsloužit numerickým koprocesorem (což vůbec není levné ani krátké). Arduino zná všechny běžné typy a operace s nimi může provádět i bez použití knihoven.

S tímto souvisí proměnné a práce s proměnnými. I když v obou případech se proměnné alokují v RAM, PICAXE má jasně výčtem dané proměnné, změnit můžeme jen jejich názvy (přes symbolické pojmenování). Nic se nemusí deklarovat, k dispozici je jen to, co PICAXE nabízí. Prostor pro práci (i chyby) je jasně vymezen. Arduino poskytuje velkou volnost limitovanou jen kapacitou paměti. K dispozici je skoro cokoli, a s tím je i obrovský prostor pro špatnou volbu.

Rychlost

Porovnáváme neporovnatelné. PICAXE je ve své podstatě interpret (má blíže k interpretu), takže velmi krátký kód uživatele přeměňuje i na poměrně složité úkony vždy znovu. Program je i při maximálním nastaveném taktu mikrokontroléru (např. 32 nebo 64 MHz ) většinou nesrovnatelně pomalejší než program běžící v Arduinu, kde se překládá jen jednou (ještě v PC) a do mikrokontroléru přenáší už ve velmi efektivním kódu (takt např. 16 MHz). Takže v rozporu s číselným vyjádřením frekvence hodin jasně vítězí Arduino, ovšem druhou stránkou tohoto vítězství je spotřeba proudu.

Spotřeba

Souvisí s rychlostí a jasně vede PICAXE. U PICAXE lze měnit takt libovolně i za chodu programu. Je-li důležitá spotřeba proudu (typicky při zabudování do nějakého zařízení napájeného z baterií nebo podobného zdroje), lze snížením rychlosti omezit spotřebu ne o trochu, ale zhruba dvacetkrát. U PICAXE navíc „živíme“ jen holý mikrokontrolér a spotřeba je řádově nižší než u standardního Arduina, kde s rychlostí (spotřebou) nic nepořídíme a trvale „živíme“ i obvody, které nemusí být v zařízení potřeba, například obvody komunikace přes USB.

Délka programů

Porovnáváme neporovnatelné. PICAXE je ve své podstatě interpret, takže velmi krátký kód uživatele přeměňuje i na poměrně složité úkony, jeden řádek programu PICAXE může vydat i za desítky řádků programu Arduina. PICAXE může do programu zahrnou cizí kousek programu, ale stále ten kousek vidíme, stane se součástí našeho programu, knihovny nemá.

Arduino má bohatou nabídku knihoven, jejichž přičleněním dostaneme obrovské možnosti v požadovaném směru. Pak se karta obrátí, jeden řádek programu Arduina (s voláním funkcí z knihovny) může vydat za desítky řádků programu PICAXE. Jenže to, co jsme do svého programu zahrnuli, jen nevidíme, ono to tam je a místo v paměti to zabírá.

Čísla klamou. Porovnejme paměť na program Arduina UNO (32kB) a PICAXE 20M2 (2kB) a je jasno. Nebo snad ne? Přičleňme k programu v Arduinu dvě nebo tři knihovny a napišme tři řádky programu s funkcemi z nich, a těch 32 kB paměti najednou bude z poloviny pryč a ve zbytku bude „sakra těsno“. Na pohled podobných několik řádků programu PICAXE zabere při přenosu do mikrokontroléru maximálně desíty bytů.

Prostředí pro programování

U obou platforem je poměrně podobné, u Arduina bližší „dospělým“ programovacím jazykům, ale jen s minimem usnadňujících pomůcek. PICAXE má výhodu možnosti zápisu programů ve formě vývojových diagramů a asi poněkud názornější možnosti ladění (simulace, debugger), Arduino má výhodu bezproblémového přenosu prostředí mezi systémy počítačů (Windows, Linux, MAC OS, …)

Přesnost

Jakmile dojde na řízení v reálném čase a nutnost přesného generování pulzů a měření intervalů, většinou zvítězí Arduino s hodinami (taktem) řízenými krystalem. To je přesné a stabilní, dostaneme vždy stejné výsledky.

Nižší typy PICAXE mají vnitřní generátor taktu sice docela dobrý, ale zdaleka ne tak přesný, jako umožňuje řízení krystalem. Za to je to jednodušší a nevyžaduje to žádné přídavné součástky. Vyšší typy PICAXE mohou mít vnější zdroj hodin s krystalem, pak se možnosti vyrovnají. Celkově je vyšší přesnosti v čase více přizpůsobeno Arduino.

Přesnost měření napětí je srovnatelná, v základu obou jsou desetibitové převodníky AD. Arduino má od nižších typů více možností práce s referenčním zdrojem převodníku, ty mají až vyšší typy PICAXE.

Rozměry

Porovnáme-li rozměry PICAXE (holého obvodu) a Arduina (osazené DPS), v miniaturizaci jasně vede PICAXE, zejména když použijeme pouzdro SMD. To může mít význam při zabudování do přístroje. Když ale obě platformy přizpůsobíme experimentům při výuce (PICAXE bude muset dostat patici, připojovací konektory, stabilizátor napětí, …), bude výsledek v obou případech velmi podobný.

Cena

Záleží na tom, co a kde hledáme, a jak nakupujeme. Nejlevnější PICAXE (08M2) lze pořídit asi za 50 Kč, protože ale COM porty už nejsou standardní výbavou PC, budeme ještě potřebovat převodník USB/COM (pár stokorun), nějaké to napájení (baterie nebo síťový zdroj) a bezkontaktní pole nebo něco podobného na zkušební zapojení. Vybavení pak použijeme jako jednou pořízenou investici pro naprogramování dalšího kusu PICAXE, který  můžeme použít (zabudovat) jako samostatný stavební blok, účelový integrovaný obvod, zkrátka bez dalších nákladů. Vyšší typy PICAXE stojí od 100 do 260 Kč.

Standardní Arduino stojí zhruba od 600 do 2300 Kč u vyšších specializovaných typů (třeba na práci na síti), mini typy lze koupit od 230 Kč. Ke standardním typům nepotřebujeme už nic dalšího (kromě USB kabelu, a ten je často v ceně). Na konektory se lze rovnou připojit, stabilizace napájení je na desce, snad jen baterii nebo síťový zdroj s malými nároky na kvalitu. U dalšího Arduina toto vše asi koupíme znovu. Nicméně Arduino lze získat i jinak, objednat z Číny například v „nano“ verzi dokonce bez rozhraní USB (je třeba převodník USB/COM) a stabilizace napájení. Při více kusech přijde jeden kus i s dopravou na necelých 50 Kč (2$). Problémem může být plná kompatibilita s Arduinem, zejména ovladače pro PC asi budeme potřebovat jiné a instalovat jinak. Koupit lze i samotný obvod mikrokontroléru s nahraným systémem (loaderem) Arduina, ten se i u nás dá sehnat už kolem 80 Kč, což může být dobrá volba při záměru použít Arduino jako základní stavební blok do vlastního zařízení.