Hlavní navigace

Senzory Martina Malého: Jak rychle a s minimálními náklady prošlapat slepé cesty

Autor: Arduino
Martin Malý

Dnes si dovolím být trochu odbornější než jindy a probrat techničtější záležitost.

Napsal mi jeden ze čtenářů mých sloupků, že by rád věděl, jak to je s tím prototypováním na Arduinu, o kterém občas píšu. Konkrétně jak se z takového prototypu udělá produkt, jestli se pak použije jiný čip, nebo jestli někdo prodává něco přímo s Arduinem…

Každému, kdo začíná vyvíjet elektroniku, doporučuju nejprve zařízení sestavit nanečisto, ověřit funkčnost, ověřit to, zda navrhované řešení bude fungovat atd. Pro jednoduchá zařízení poslouží Arduino velmi dobře, a to hned v několika fázích vývoje.

Výhodou Arduina je, že je levné, jednoduché a existuje pro něj nepřeberné množství doplňků a rozšíření (shieldů), které pokrývají velké spektrum úloh, od čtení dat ze senzorů přes komunikaci nejrůznějšími způsoby až po ovládání motorů, serv či relé. Pokud navrhujete zařízení, které má s něčím z tohoto pracovat, můžete na Arduinu postavit například pretotyp – zařízení, které simuluje chování budoucího výrobku.

Pretotyping je fáze, ve které ověřujete, jestli někdo něco takového vůbec chce. Jako příklad pretotypingu se uvádí vývoj hlasem ovládaného psacího zařízení u společnosti IBM. Před tím, než se vývojáři pustili do takového úkolu, udělali zařízení, které vypadalo jako počítač s monitorem a mikrofonem, ovšem ve skutečnosti bylo ovládané z vedlejší místnosti, kde seděla písařka se sluchátky a psala, co slyšela. Testovací uživatel měl dojem, že počítač na displej píše podle diktátu, a návrháři mohli sledovat, jak se k tomu uživatelé staví, zda je to pro ně pohodlné, přínosné, kde budou asi problémy, … Nakonec se ukázalo hned několik věcí – uživatelé byli za chvíli ochraptělí (což zná asi každý, kdo přednášel), když byl kolem hluk, diktát nebyl moc přesný, no a v neposlední řadě lidem vadilo, že ostatní v místnosti slyší, co diktují. Což byly důležité poznatky, které vedly k tomu, že IBM ušetřilo v té době nemalé prostředky za vývoj něčeho, co vlastně tehdy nebyl až tak skvělý nápad.

Arduino můžete využít ve chvíli, kdy se rozhodnete použít nějakou konkrétní součástku, popřípadě když vybíráte, jakou použít. Můžete si vzorky připojit k Arduinu a vyzkoušet si, jak se s kterou pracuje, jaké jsou její limity, jak složité či jednoduché je uvést ji do chodu… V pozdější fázi můžete zkusit třeba sestavit menší funkční celek s vícero periferiemi a pak ověřovat, zkoušet, testovat, ladit algoritmy.

A protože Arduino budete programovat nejspíš v C++ (ano, to je ten jazyk, co je schovaný „pod kapotou“ a píšou se v něm všechny knihovny), bude váš kód s trochou péče nejspíš přenositelný i na další platformy – pravděpodobně budete muset upravit některé systémově závislé věci, adresaci periferií apod., ale kostra zůstane stejná.

Když máte jednoduché zařízení, které Arduino „utáhne“, můžete sestavit celý prototyp s Arduinem a ověřit si, že funguje, že měří, posílá data, reaguje… Klidně v tom můžete napsat i betaverzi firmware, pokud vše půjde dobře. Arduino samo o sobě nemá vhodný debugger, ale v určité fázi můžete přejít na vývoj v normálním IDE a C++, Arduino připojit přes hardwarový debugger a ladit firmware tak, jak jste zvyklí. Samotný hardware pak dál poběží na procesoru AVR.

Jakmile přijde čas na betaverzi hardwaru, můžete zvolit různé cesty. Můžete si říct, že vám stačí výkon a možnosti mikrokontroléru z Arduina (ATmega328 nebo ATmega2560, popřípadě jiného z téže řady), a výsledný hardware navrhnout s tímto procesorem. Můžete ale použít jiný mikrořadič – například s jádrem ARM nebo MSP430 atd. Tady můžete využít faktu, že „Arduino“ nejsou jen desky s jednočipem ATmega. Vyrábí se spousta dalších desek, které jsou „Arduino compatible“, ale obsahují jiné procesory, od ATtiny přes ARM Cortex až po Intel Quark. Můžete si tedy psát a testovat už přímo na (víceméně) cílové platformě.

No a nakonec, když máte sestaveno a otestováno a firmware v hrubých rysech, tak buď vše přenesete na vlastní platformu a tam uděláte poslední úpravy, nebo můžete to „Arduino“ nechat dál jako základ, třeba ve formě zapojeného Arduina Nano / Mikro přímo v hotovém výrobku. Ostatně i 3D tiskárny RepRap dlouho fungovaly s kombinací Arduina Mega a rozšiřujícího shieldu pro ovládání motorů.

Všechno to, co jsem tu napsal, se dá vztáhnout třeba i na Raspberry Pi. Zejména pokud potřebujete větší výpočetní výkon a složitější logiku. A tady platí ještě víc, že některé výrobky jsou ve výsledku opravdu fyzicky Raspberry a rozšiřující deska – například jedna z LoRaWAN Gateway, kterou jsem zkoušel, měla uvnitř přesně takový hardware.

Zkrátka – je jedno, jestli Arduino, nebo Raspberry, nebo něco jiného, důležité je, že můžete začít rychle a s minimálními náklady, prošlapat cesty slepé i nadějné, a teprve potom se ukáže, jestli ověřený koncept přenesete na vlastní platformu, nebo jestli tam necháte něco z Arduina (které je vlastně jen samotný jednočip a USB rozhraní). 

Jo a ještě důležitá poznámka: Když začnete psát pro to Arduino, pamatujte, že jednou se to bude portovat na jinou platformu, tak pište co nejjednodušší a pochopitelný kód, bez triků a hacků, protože jinak si neušetříte vůbec nic, akorát budete nadávat, že „se to celé musí psát znovu a Arduino je k ničemu“.

Našli jste v článku chybu?