1.1 Historie této knihy a co vám její čtení přinese
Přibližně rok po dokončení své první knihy jsem oživil svůj starý oblíbený projekt stavby autonomní ponorky (označovaný jako projekt E-2) s určitými poměrně náročnými požadavky na funkčnost. V průběhu rozvíjení této myšlenky jsem strávil mnoho hodin na internetu i jinde zkoumáním technik rychlého vývoje různých elektromechanických řídicích systémů a platforem pro spouštění poměrně složitých algoritmů zpracování signálu. Ačkoli samozřejmě existují tisíce užitečných projektů a útržků informací, které lze získat na internetu a v knihách o amatérské robotice, zjistil jsem, že nikdo jiný zřejmě nemá přesně takové priority jako já. Zejména zřejmě neexistuje jediný odkaz, který by shromáždil alespoň úvodní řešení všech problémů vestavných konstrukcí, které se týkaly mého projektu: potřeba používat levné (open-source) nástroje a operační systémy, požadavek na několik funkcí s poměrně tvrdými požadavky na reálný čas a snaha používat levné, běžně dostupné komponenty spotřebitelské třídy, kdekoli je to možné. Dostupné zdroje k mnoha tématům se soustředí buď na velmi drahé hotové průmyslové komponenty, nebo na přísně omezené systémy postavené kolem jediného mikrokontroléru s jemně optimalizovaným, nepřenosným kódem pro ovládání periferií – a to s velmi omezeným rozsahem podpory periferií. Těmto posledním omezením při návrhu systému se nelze vyhnout, pokud pracujete s přísnými požadavky na napájení, omezenými prostorovými možnostmi nebo s minimálními náklady na materiál (BOM), ale sestavení a vyladění takových systémů pro jednorázový projekt nebo prototyp představuje neúměrné úsilí. Navíc naučit se všechny detaily potřebné k sestavení takového systému je obrovský úkol; je snadné ztratit se v dolaďování detailů, aniž by se kdy podařilo zprovoznit kompletní, funkční systém. Je nepříjemné, že mnoho z těch úprav a většinu pečlivého plánování, které uděláte pro zprovoznění takového systému, budete muset zahodit, pokud přejdete do skutečné výroby nebo pokud budete potřebovat postavit několik dalších jednotek s trochu jinými komponenty.
To, co jsem hledal při vývoji projektu E-2, byl způsob, jak postavit různé moduly reálného času (senzory a akční členy), které by bylo možné snadno a levně propojit s univerzálním počítačem se systémem Linux. Krabice s Linuxem sloužila jako testovací prostředí pro algoritmy, které by se později přenesly do nějakého menšího, chladnějšího a energeticky úspornějšího výpočetního modulu. Potřeboval jsem pevný základ známého dobrého kódu a technik, abych mohl z tohoto bodu vyrazit a vytvořit si vlastní systém na míru. Chtěl jsem také jednoduchého a funkčního průvodce sestavováním vestavných linuxových distribucí. Pro počáteční, neprovozní prototyp mé ponorky jsem neměl přesnou představu o tom, kolik výkonu procesoru budu potřebovat v konečné verzi – nechtěl jsem se tedy vázat na konkrétní architekturu mikrokontroléru, ani jsem nechtěl zabřednout do snahy vyladit a vyladit mnoho úloh v reálném čase na jednom mikrokontroléru. Chtěl jsem také používat několik periferií – například kamery -, které se nejsnáze propojují prostřednictvím univerzálního operačního systému.
Tyto požadavky možná znějí na strunu vašeho vlastního pracovního života. Je pravděpodobné, že jste se již setkali se situací, kdy by bylo užitečné automatizovat nějaký dlouhodobý experiment sběru dat nebo vytvořit jednoduchý automatizovaný ovladač pro programování, výrobu nebo jinou úlohu. V tomto duchu uvádím tři další případy, kdy jsem použil techniky uvedené v této knize:
Vývoj řady úspěšných (komerčně využívaných) síťových multimediálních přístrojů, určených pro bezobslužné reklamní a galerijní aplikace.
▪
Vývoj specializovaného, téměř zcela automatického přístroje pro testování mechanických poruch některých výrobků spotřební elektroniky.
▪
Konstrukce automatického vysokorychlostního dataloggeru, který monitoruje rádiové spojení a extrahuje DTMF zprávy cílené na konkrétní přijímače.
Druhá výše uvedená položka je obzvláště zajímavá, protože pěkně demonstruje, jak může mít tato kniha praktický význam v aplikacích pro řízení procesů a testování. V roce 2002 jsem krátce pracoval pro malou divizi nadnárodní společnosti, jejímž hlavním zaměřením bylo plastové nádobí pro domácnost a kancelář. Bylo velmi poučné zkoumat jejich automatizované testovací přípravky – proprietární systémy – a porovnávat náklady a složitost nastavení těchto přípravků s relativně nízkými náklady a dobou nastavení jednoduchého SBC na bázi Linuxu, který řídí stejné pneumatické pohony a senzory. Je zřejmé, že trh s levnými testovacími systémy tohoto typu není dostatečně využit. Proprietární systémy používané v tomto konkrétním zařízení stály téměř 20 000 USD za půl tuctu aktuátorů a přidružených PLC, plus nespočet hodin času potřebného k nastavení1. Řídicí software pro tato zařízení byl specializovaný a málo srozumitelný; ve skutečnosti většina těchto zařízení stála ladem, protože lidé, kteří je původně konfigurovali, ze společnosti odešli. Naproti tomu stejné úkoly by bylo možné snadno provést s běžným počítačem za pouhých několik set dolarů plus možná 200 dolarů na pohon pro přidruženou pneumatiku. Ještě důležitější je, že řídicí software pro takový systém je jednoduchý program v jazyce C, který snadno pochopí a přizpůsobí každý schopný informatik nebo elektronik; ve firemní laboratoři bylo snadno k dispozici několik kandidátů.
Vzhledem k povaze výzkumu, který vedl ke vzniku této knihy, jsem do textu zahrnul spršku námořních detailů, z nichž ne všechny jsou pro vestavné inženýry přímo relevantní. Pokud vás tento materiál nezajímá, můžete jej bez obav ignorovat, aniž by to jakkoli ohrozilo vaše porozumění zbývajícímu textu. Důvodem, proč jsou tyto informace zařazeny vedle diskuse o „čistě“ vestavěném vývoji, je především ilustrace reálných požadavků a myšlení, které vedly k různým konstrukčním rozhodnutím v projektu E-2. Inženýrství není teoretická věda; je to aplikovaná disciplína, a právě s ohledem na to používám konkrétní příklady k ilustraci teoretických bodů.
Měli byste si také uvědomit, že některé názory vyjádřené v této knize, pokud nejsou zrovna kontroverzní (kromě standardů Usenetu – na Usenetu je kontroverzní všechno!), jsou přinejmenším sporné; například volba AVR jako mé platformy pro řízení v reálném čase. Z tohoto důvodu jsem v tomto textu uvedl dodatečné zdůvodnění rozhodnutí, která jsem učinil. Toto dodatečné vysvětlení by mělo ukázat důvody, které mě vedly k volbě konkrétních cest, ale výslovně není určeno k prozelytizaci AVR lidem, kteří mají zkušenosti s jinou architekturou a dávají jí přednost. Opět platí, že tento „bonusový materiál“ není pro pochopení základních pojmů zde prezentovaných rozhodující, a pokud chcete, můžete jej klidně přeskočit.
Mějte také na paměti, že tato kniha záměrně není „biblí“. Nejedná se o vyčerpávající popis každé jednotlivé nuance probíraných témat; takové dílo by obsáhlo několik regálů. Hlavním cílem této knihy je popsat a ilustrovat jednoduchou, modulární a levnou metodiku implementace složitých vestavných systémů a představit některé hotové moduly, které si čtenář může přizpůsobit svým vlastním projektům. Zvláštní důraz je kladen na realizaci komplexních řešení s využitím levného vývojového hardwaru a bezplatných softwarových nástrojů. Než se dostanete k posledním stránkám, měli byste, doufejme, mít následující znalosti:
▪
Funkční pochopení kritických detailů „pod kapotou“, které jsou nutné pro zavedení systému Linux na platformách x86.
▪
Úvod do typů problémů, se kterými se setkáte při použití vestavných jednodeskových počítačů x86 jako jádra systémů pro záznam dat a řízení pohybu.
▪
Základní informace o rodině mikrokontrolérů Atmel AVR.
▪
Praktický úvod do stavby několika jednoduchých obvodů pro sběr dat a řízení motorů a jejich připojení k PC.
▪
Několik základních „úvodních“ informací o otázkách zabezpečení dat, ověřování a spolehlivosti, jak se dotýkají vestavěných systémů.
Základní myšlenkou je, že čtenář má přiměřeně důvěrné zkušenosti s jedním nebo druhým tématem vývoje linuxových aplikací nebo s vývojem hluboce vestavěných systémů – tato kniha je navržena tak, aby vás posílila na přední příčce vaší vzdělávací křivky o základy té které strany rovnice, která vám chybí. Poskytuje také lepidlo, které tyto informace spojuje do celkového kontextu poměrně složitého projektu. Mimochodem, všimněte si, že jsem použil titulní slovo „kuchařka“ s jistou dávkou rozpaků. Čistě kuchařské inženýrství – spojování špatně pochopených částí dohromady jako koule Capsela – není nikdy dobrá praxe. V této knize vám dávám několik hotových kousků Capsela, ale také vám říkám, jak a proč jsem vyrobil ozubená kola a hřídele v každém kousku, a do jisté míry i to, jak můžete jít dál a vyrobit si lepší kousky sami. Tato vysvětlení jsou mnohem důležitější než samotné plány dílků.
Při plánování knihy, jako je tato, je snadné spadnout do jedné ze dvou pastí: buď vytvořit jedinou monolitickou „megapřílohu“, která ilustruje všechny požadované body, ale je nesmírně obtížné ji stručně vysvětlit, nebo na druhé straně rozdělit téma do mnoha malých abstraktních poznámek, které bude mít mnoho čtenářů problém začlenit do reálných projektů. Snažil jsem se pohybovat mezi těmito dvěma extrémy tím, že jsem zajímavější moduly projektu E-2 rozdělil do několika malých praktických aplikací spolu s v podstatě samostatným kódem a dostatkem teorie pro úpravu a rozšíření těchto aplikací pro vlastní použití.
Nakonec poznámka pro ty, kteří vlastní mou předchozí knihu Embedded System Development on a Shoestring. Tato kniha není koncipována jako pokračování tohoto svazku, ale rozhodně se jedná o související materiál. Pokud se budete řídit technikami uvedenými v této knize při stavbě prototypového zařízení a později jej budete chtít zmenšit na optimalizované jednočipové řešení, moje předchozí práce vám pomůže pochopit, jak používat svobodné nástroje GNU, abyste svůj software snadno přenesli na mikrokontrolér ARM. Hlavní výtky, které jsem na tuto předchozí knihu slyšel, byly, že by měla pokrýt širší rozsah informací a že je v ní příliš málo ilustrací, takže je poněkud suchopárná. Tyto připomínky jsem vyslyšel a doufám, že vás tato kniha v obou ohledech uspokojí. Vaše připomínky a návrhy jsou jako vždy vítány; můžete mi napsat na e-mail nebo navštívit mé webové stránky na adrese http://www.zws.com/.
.