Jak jsem rozblikal diodu na mikropočítači Intel Edison

Arduino, Raspberry, Galileo, Edison... Jak se vlastně tyto mikropočítače ovládají a programují? Jako naprostý zelenáč jsem vyzkoušel Intel Edison Kit a rozblikal diodu. Je to snadné.

Intel se loni na jaře pochlubil svým miniaturním počítačem Edison, který je jen o něco málo větší než SD karta (2,5 × 3,5 cm), na malou destičku se ale vlezl dvoujádrový čipset Atom (úsporná architektura Silvermont) s taktem 500 MHz. K dispozici má 1 GB RAM, Wi-Fi (b/g/n) i Bluetooth 4.0 LE a miniaturní SoC toho tedy sám o sobě zvládne docela dost.

424111941
Intel Edison 2. generace – dvoujádrový procesor Atom (500 MHz), Wi-Fi (b/g/n) a Bluetooth 4.0. S tím už se dá udělat více práce než s běžným Arduinem.

K prvním zájemcům zamířil Edison v průběhu roku 2014 a na podzim se pak dostal i ke kolegům o patro níže, kteří jej náležitě změřili a popsali v Computeru 12/14. Na Edisona poté začal pomalu padat prach, a tak jsem se ho ujal a dal si smělý úkol: z pozice hardwarového laika pochopit, jak se takový mikropočítač bez klávesnice, myši a monitoru vlastně programuje.

Intel Edison Kit

Samotná výpočetní jednotka Edisonu je sice maličká, pro takové to domácí prototypování ale pochopitelně není příliš vhodná, chybí ji totiž klasické konektory. Proto se zpravidla kupuje společně s větší základní deskou s napájením, USB porty, čtečkou micro SD a především piny pro analogovou i digitální komunikaci s periferiemi, což mohou být třeba všemožné senzory.

737881843
Edison na prototypovací desce Intel Edison Kit velikosti cestovního pasu, která má vše potřebné pro připojení napájení a dalšího hardwaru (je kompatibilní s Arduinem). Samotný Edison je malá karta vlevo dole.

Zatímco cena samotného Edisonu se dnes na českých e-shopech pohybuje okolo 1 500 korun, SoC s rozšiřující deskou Intel Edison Kit pořídíte za cenu okolo 2 500 korun. Edison tedy ve srovnání s ostatními stavebnicemi rozhodně není nejlevnější záležitost a začátečník udělá lépe, když začne u jednoduššího Arduina.

K čemu je to vlastně dobré?

K čemu je to ale vlastně dobré? V posledních letech oblast malých SoC počítačů na desce zpopularizovalo především Raspberry Pi, jehož poslední generace je už natolik výkonná, že může díky HDMI výstupu a slušné GPU akceleraci sloužit jako levný síťový multimediální přehrávač, na kterém běží třeba Kodi (XBMC).

Edison je ale něco jiného. Jedná se opravdu o prototypovací počítač, který vývojář použije jako výpočetní mozek nějakého elektronického zařízení. Meze představivosti se v tomto případě nekladou, Edison tedy může sloužit jako výpočetní jednotka všemožných robotů, dronů, 3D tiskáren, jako měřící jednotka, která sbírá data ze senzorů, analyzuje je a zasílá na server a tak dále a tak dále.

Vývojář prostě dostane počítač, kterému teprve bude muset dát nějaký smysl – software, který mu dá funkci. Bez toho je Edison jen pár gramu kovů a křemíku. A to se už dostáváme k ospravedlnění vyšší ceny. Vývojář totiž díky realtivně vysokému výkonu může použít hned několik scénářů.

Mohu programovat v Javascriptu (Node.js)

Základní vývojové prostředí Intel XDA IoT Edition slouží k programování Edisonu pomocí Javascriptu, na mikropočítači totiž běží Node.js. Minimalističtí vývojáři odchovaní všemožnými assemblery asi budou jen nechápavě kroutit hlavou, ale díky Javascriptu a hromadě objektů můžete s pomocí několika málo řádků kódu spustit na Edisonu třeba webový server, který bude zobrazovat meteorologické údaje z analogového meteorologického senzoru za stokorunu. Prototypování má být rychlé a jednoduché, protože kutil nemůže strávit mládí psaním nízkoúrovňového kódu.

Mohu programovat jako na Arduinu (Arduino IDE)

Intel Edison Kit je kompatibilní s Arduinem, čili lze pro vývoj použít i Arduino IDE a jeho jazyk Wiring (obdoba C/C++).

Mohu programovat v C/C++ a Pythonu (Eclipse)

Jako třetí oficiální IDE pro Edison slouží univerzální Eclipse, které umožní vývoj v C/C++ a Pythonu.

Suma sumárum tedy Edison nabízí cestu prakticky pro každého – ostatně k dispozici jsou i zdrojové kódy samotného řídícího OS. Program, který rozbliká diodu na rozšiřující desce, roztočí servomotorek nebo třeba odešle nějaká data na internet, můžete napsat některým z těchto způsobů.

Oživuji Edisona

Tolik tedy k teoretické omáčce a nyní se pojďme podívat, jak to vypadá v praxi – jak vlastně takového Edisona uvedu k životu.

 737607081 14325800
Intel Edison Kit a srovnání samotné výpočetní jednotky vlevo dole s běžnou SD kartou
318689513 201056282 165310982
Čtečka micro SD, ovládací tlačítka (vypnutí aj.), USB konektory a konečně pohled shora na veškerá digitální a analogová rozhraní pro připojení dalšího hardwaru, senzorů aj.

Samotné sestavení Edisonu a jeho připojení k počítači je relativně snadné, Intel totiž připravil návod krok za krokem, který pochopí každý začátečník. V podstatě stačí připojit Edisona na základní desku a tu skrze USB připojit k počítači. Ačkoliv má deska klasický napájecí konektor, pro napájení lze použít i jeden z micro USB konektorů, který zároveň slouží pro spojení mass storage. Edison se v takovém případě v systému objeví jako externí disková jednotka.

380906122 235043384
Po připojení napájení a micro USB se mikropočítač na Windows ohlásil jako externí disková jednotka

V dalším kroku je třeba nainstalovat ovladače a nástroje pro vývoj. Intel pamatuje na Windows, OS X i Linux a v případě Windows vše proběhne v jednom kroku, kdy si vyberete, co vše se má stáhnout a nainstalovat. Jak už jsem napsal výše, Edison lze programovat pomocí Intel XDE, Arduino IDE a Eclipse, přičemž všechny tyto vývojářské balíky jsou součástí instalace. Na závěr se pokusí instalátor mikropočítač flashnout a nainstalovat nový firmware.

114371474 831390953
Instalátor pro Windows nastaví ovladače USB, stáhne vývojové nástroje a flashne i nový firmware

Oním firmwarem je především speciální linuxová distribuce pro jednoduchou IoT elektroniku Yocto Linux, která se stará o samotný běh aplikací. Vzhledem k dostatečnému výkonu Edisonu však lze flashnout i některé vyšší distribuce – třeba Debian. Instalování firmwaru se principiálně příliš neliší třeba od flashování různých OS na mobilních telefonech.

Jak se to ovládá, když to nemá obrazovku?

Jakmile je vše hotovo a Edison je připravený plnit naše přání, je třeba se s ním nějakým způsobem spojit a skutečně jej ovládat. Jelikož jeho rozšiřující deska nemá grafický výstup, ovládá se vzdáleně přes některou z textových terminálových služeb.

Tou nejjednodušší je prehistorická sériová linka (COM), ke které slouží krajní micro USB konektor. Zde jsem narazil na první zádrhel. Ačkoliv se mi po připojení k PC ve správci zařízení Windows objevil mezi porty kýžený USB Serial Port (COM5), s Edisonem se mi nepodařilo spojit.

728248796 422480539
Spojení pomocí staré sérové linky nevyšlo, Edison mlčel. Naštěstí existuje více možností.

Intel naštěstí pamatuje i na tyto případy a nainstaloval ovladač Intel Edison USB RNDIS Device, který slouží pro Ethernet over USB. V síťových zařízeních jsem prostě objevil nové připojení, nastavil patřičnou IP adresu a ejhle, Edison byl rázem dostupný na IP adrese 192.168.2.15. Mohl jsem na něj pingnout a především se k němu připojit skrze univerzální SSH jako root, nastavit heslo, připojit k Wi-Fi, aby byl Edison dále k dispozici i bez kabelového připojení k PC, a konečně se podívat do jeho nitra.

571150303 246026974
Neznámá síť na obrázku je ve skutečnosti USB připojení mezi deskou Edisonu a PC. Díky funkčnímu IP spojení jsem se mohl k Edisonu přihlásit pomocí SSH.

Jakmile jsem se skrze USB připojil k terminálu Yocto Linuxu, mohl jsem konečně provést základní nastavení – připojit mikropočítač do domácí Wi-Fi sítě aj. K tomu slouží mocný program configure_edison, který se s různými parametry postará o základní management včetně upgradu firmwaru.

837457367 459956465 320584024
Konfigurační program a připojení k Wi-Fi pomocí textového, ale přehledného průvodce

Vývojové prostředí Intel XDE IoT Edition

Připojením do lokální sítě jsem prakticky dokončil instalaci Edisonu a konečně jsem si mohl vyzkoušet některý z těch nejprimitivnějších programů – klasický Hello, World, který je součástí učebnice každého programovacího jazyka a má jediný účel, vypsat na obrazovku „Hello, World.“

Jelikož drobná IoT elektronika často žádný displej nemá, Hello, World namísto toho zpravidla rozbliká některou z vestavěných diod na základní desce. Ty má k dispozici samozřejmě i Edison (respektive jeho rozšiřující deska), takže nešlo odolat.

Jak už jsem napsal výše, Edisona lze programovat různými způsoby. Jelikož chci jen rozblikat diodu a Javascript bude nejspíše známý drtivé většině čtenářů, použil jsem vývojové prostředí přímo od Intelu jménem XDE IoT Edition, ve kterém se programuje právě pomocí Javascriptu, který poté na Edisonu zpracovává běhové prostředí Node.js.

112020423 447741091 42617711 
Vývojové prostředí od Intelu s hromadou příkladů pro práci s Edisonem, editor kódu s konzolí a integrovaný SSH terminál pro přímý přístup k linuxovému systému Edisonu

XDE nabízí několik hotových příkladů včetně blikající diody, což je opravdu asi ta nejjednodušší ukázka.  Samotnému editoru kódu nechybí podpora doplňování, logový výstup, podpora ladění a SSH konzole.

670184194
Nechybí automatické doplňování/našeptávání kódu

Jakmile napíšete nějaký kód, který budete chtít spustit, stačí v seznamu vybrat Edisona podle IP adresy, zadat přihlašovací údaje a vývojové prostředí program zabalí, přenese do Edisona a spustí.

Rozblikal jsem diodu

Edison a jeho Atom by si samozřejmě zasloužil trošku sofistikovanější úkon, ale pro začátek tedy začněme tím nejjednodušším – rozblikáním diody na základní desce.

576656917
Kód programu, který rozbliká diodu

Kompletní javascriptový kód může vypadat třeba takto:

var mraa = require("mraa");
var ledNaDesce = new mraa.Gpio(13);
ledNaDesce.dir(mraa.DIR_OUT);
var stav = true;

blikani();

function blikani()
{
   ledNaDesce.write(stav ? 1:0);
   stav = !stav;
   setTimeout(blikani, 1000);
}

Pojítkem mezi hardwarem desky Edisonu a zdrojovým kódem je knihovna Libmraa, která mi zpřístupní základní I/O operace i v Javascriptu. Pomocí této knihovny určím pin 13, na kterém je připojena jedna z vestavěných diod, a směr (budu zapisovat, tedy mraa.DIR_OUT).

Pak už stačí pouze vytvořit funkci blikani, která se bude pomocí běžného javascriptového časovače setTimeout volat stále dokola každou sekundu a při každém zpracování střídavě pošle na daný pin silný, nebo slabý signál, což bude mít za následek rozsvícení a zhasnutí LED diody.

A to je celé, LED dioda začala blikat!

Diodou to nekončí

K blikající diodě samozřejmě nepotřebujete dvoujádrový procesor, ale to je pouhý začátek. Všemožné senzory pro Arduino aspol. stojí pár korun, takže za stovku pořídíte třeba různé meteorologické sondy, které měří teplotu vzduchu, vlhkost a tlak, stejně tak můžete k Edisonu připojit detektor pohybu, osvětlení aj. Jsou jich dnes desítky a umožňují proměnit mikropočítač prakticky v cokoliv.

A jelikož je programování na Edisonu opravdu jednoduché včetně zasílání dat na internet, s podobnými komponenty rychle postavíte krabičku, na které poběží třeba server, který bude pomocí webové stránky informovat o tom, co všechno zaměřil. Meze představivosti se zde opravdu nekladou.

Edison je v každém případě pouze jednou z mnoha prototypovacích stavebnic. Stejně tak můžete zapřáhnout mnohem levnější (ale také jednodušší) Arduino, univerzální Raspberry Pi, desky z projektu .NET Gadgeteer, které se programují pomocí C# aj.


A co teď? Mám pořídit nějaké senzory, pokračovat ve studiu a vyzkoušet něco praktičtějšího, nebo mám Edisona zase zabalit a tuto tematiku přenechat zkušenějším? Dejte mi vědět v diskuzi pod článkem.  

Diskuze (75) Další článek: Logi: nová oficiální značka a logo Logitechu

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,