České ADK projekty na Google Developer Day

adk_t_01

V rámci letošního Google Developer Day proběhla soutěž propagující novou platformu Android Open Accessory. Bližší informace o platformě i soutěži jste si mohli přečíst tento týden v našem článku Android Open Accessory: vyrobte si vlastní hardware!. Ve stručnosti Google pro vývoj vytvořil ukázkový kit ADK (Android Open Accessory Development Kit), a ten před GDD dostali darem vybraní vývojáři, kteří prokázali teoretické znalosti a zaslali dostatečně zajímavý a realizovatelný námět na vlastní projekt. Jejich úkolem potom bylo projekt realizovat a ukázat jej návštěvníkům na GDD.

ADK koutek

Český Google Developer Day 2011 se odehrál 18. října v pražském hotelu Clarion. Pro projekty byl vyhrazen prostor v „naší“ části SvětAndroida.cz, kde si návštěvníci mohli osahat také nejnovější telefony a tablety s Androidem:

adk_01

V průběhu dne si Googleři i běžní návštěvníci mohli projekty vyzkoušet, a to často i na vlastních zařízeních (pokud měli kompatibilní telefon s Android OS 2.3.4+ nebo tablet s 3.1+), hotová dílka si byl prohlédnout i Josef Průša, který byl jedním z porotců vybírajících projekty.

Projekty na videu

Z 8 potvrzených projektů se nakonec realizace a představení na GDD dočkalo 5, a ty si nyní představíme podrobněji ve stejném pořadí, v jakém je můžete zhlédnout na následujícím videu:

GDD 2011 Prague – ADK projects

GDD 2011 Prague - ADK projects

Tomáš Holuša – SpyDroid

Tomáš realizoval projekt samohybného robota na pásovém podvozku (postaveno z Merkuru), který využíval telefon Nexus S usazený v přední části. Kamera z Nexusu poskytovala živý videopřenos z pohledu robota a sloužila také pro detekci polohy laseru. Robot totiž mohl být ovládán buď přes Wi-Fi z notebooku, anebo v autonomním režimu sám sledoval stopu laserového ukazovátka na zemi a jezdil za ním.

adk_t_011

Tomáš nám poskytl několik informací k vývoji:

– Popis projektu (EN) je v původním dokumentu
– Nakonec jsem neudělal ovládání z druhého mobilu, protože druhý Android nemám (a Google.cz neuměl zapůjčit, jak jsem původně tajně doufal…)
– Navíc jsem udělal navigování pomocí laserového ukazovátka, pro případ kdy nebude k dispozici Wi-Fi
– Předchozí zkušenosti mám s PIC MicroChip (assembler), kde jsem si stavěl různá udělátka hlavně pro IR komunikaci (překladač povelů dálkového ovladače, remote control pro foťák, …)
– Komplikace s Android SDK, USB Host ani Arduinem nebyly, dokumentace je slušná a vše fungovalo jak by člověk čekal, dalo se tedy udělat poměrně přímočaré řešení.
– Jako bonus navíc jsem musel udělat kus kódu pro Android nativně v C a napojit pomocí JNI (otočení video feedu o 90 stupňů + analýza obrazů a sledování laserové tečky). To v Javě nestíhalo.
– Shield jsem použil základní Googlí (Arduino Mega + USB Host na jedné desce) + jsem si vyleptal vlastní desku, která obsahovala ovládání motoru přes dvojitý H-můstek, pro možnost plynulé regulace dvou motorů oběma směry (použito PWM)
– Stavebnici Merkur jsem vytáhl ze skříně u rodičů, kde tak 25 let ležela :-)
– Náklady celkem: cca 800 Kč (motory + součástky + něco dokoupit k Merkuru) a cca 10 večerů práce

Libor Kramoliš – LaPardon

Libor postavil domeček s pumpou na vodu, která uměla zahrát noty melodie zaslané pomocí twitteru. Kvůli technickým obtížím jsme zařízení bohužel zrovna neviděli v chodu (kýbl s vodou byl ale připraven ;)).

11 – 3

Autor nám to ostatně popsal sám:

Dokument k projektu a stránka s aktuálním stavem gdd2011.kramolis.cz
– Zkušenosti jsem neměl s ničím, ale protože jsem vývojář, tak to nebyl takový problém se naučit. Největší trable jsem měl s elektronikou…
– Nakupoval jsem na hwkitchen.com a pak v GME v Karlíně. Pumpa, pak jsem tam měl nějaký darlington tranzistor TIP-120 (schéma bez displaye), červenou a zelenou diodu jako indikaci problémů či OK průběhu, 12V zdroj, piezo senzor na detekci ťukání na písmeno G na domečku (tím se celý ten orloj spouštěl), malý reproduktor na současné audio přehrání zadané melodie, a pak už jen několik odporů a konečně nepájivé kontaktní pole a sada drátečků. Plus samozřejmě spoustu věcí, které jsem nepoužil. Nepoužil jsem nakonec čidlo na průtok vody na detekci, zda ještě je voda, abych neběžel naprázdno. To už jsem nestihl.
– Co teda projekt LaPardon skutečně dělal? Veškerá elektronika byla uložena v domečku, přičemž na štítě v nápisu Google jsou schované piezo senzory (písmeno „G“) a v písmenech „o“ jsou červená a zelená dioda. Červená dioda indikuje, že není připojen telefon. Zelená svítí, když se telefon připojí. Pak bliká v různých stavech běhu aplikace: při přehrávání hudby, při zaťukání na piezo, při přípravě vody. Na to písmeno G (piezo senzor) se teda ťuká, tím se dá impuls telefonu, aby poslal další požadavek na hudbu. Telefon je napojen na twitter, kam může kdokoliv předat request s tagem #lapardon (formát zprávy je na gdd2011.kramolis.cz). Telefon přes twitter píše, co zrovna dělá: poděkuje zadavatelům nové hudby, upozorní je na chybu. Telefon tedy requesty přes twitter zpracuje a zařadí do fronty a na zaťukání je předá Arduinu. Když na Twitteru nic není, vrátí nějaké vzorové. Arduino pak danou melodii „přehraje“ vodou – mění proud podle tónu. Současně s každým tónem bliká se zelenou diodou a na malém reproduktoru přehraje i zvuk – ten nebyl v tom hluku konference vůbec slyšet.
– Elektrikářská zkušenost mi chyběla nejvíce. Se vším jsem si nějak dokázal poradit, ale elektrikařinu nevymyslím. Vždy jsem na webu našel nějaký příklad a ten jsem zapojil, bez větší invence. Když jsem na GDD svůj projekt balil, tak přišel jeden člověk, který má s elektrikařinou a Arduinem hluboké zkušenosti (má projekt CNC stroje). Koukl na moje drátečky a řekl větu, kterou budu mít ještě dlouho v hlavě: „no jasně, chybí ti tam kondík!“ No jasně, chyběl mi tam kondik. Už je jedno kde a jak velký. Jeden kondík a mohlo být všechno úplně jinak.
– Arduino je skvělá platforma a napojení na telefon je docela snadný, prostě se posílají byty tam a zpět. Pohoda.
– Investice byla několik tisíc na součástky, potřeboval jsem i mikropáječku a další podobná zařízení. A nemohu zapomenout, že jsem si vlastně musel koupit i telefon! Šel jsem do Google Nexus S.

Michal Janoušek – Dancing Wall

Michal svůj projekt zábavné dotykové hry Dancing Wall již představil ve vlastním článku, připravte se na dlouhé čtení :). Návštěvníky shodně nejvíce zaujaly kapacitní senzory (realizované pomocí alobalu), ke kterým stačilo přiblížit dlaň na několik centimetrů, aby zareagovaly.

adk_m_01

Petr Blažek – ovládání MIDI kláves

Petr vytvořil MIDI kontrolér pro hudební nástroje podporující MIDI standard. Na GDD k tomuto účelu dotáhl vlastní velké klávesy Yamaha S30, na kterých si návštěvníci ve volných chvílích brnkali i bez ADK :) S připojeným Arduinem bylo možné do kláves posílat MIDI OUT příkazy z telefonu přes Wi-Fi. Na obrazovce byla zobrazena klaviatura piana a hrát bylo možno i akordy (multitouch).

adk_p_02

Podrobnější popis řešení od Petra:

– Na začátek bych rád řekl, že jsem poměrně nováčkem v oblasti Android a Arduino.
– Obecně je záměrem vytvořit bezdrátový WiFi kontrolér pro libovolné MIDI zařízení (minimálně s piano roll a sekvencerem, pokrytím všech standardních piano oktáv, podporou multitouch, snímáním délky tóniny a razance úderu) na bázi Android – mobilního zařízení a Arduina (ADK). Na mobilním zařízení poběží GUI, Arduino bude zprostředkovávat komunikaci s MIDI zařízením. Mobilní zařízení a Arduino budou komunikovat skrze WiFi. Výhodou takového zařízení je nejen mobilita, ale i možná zábava např. při náhodně improvizovaném jamování – setkání a hraní muzikantů.
– Nakonec se podařilo vytvořit GUI v podobě MIDI master keyboardu (bez sekvenceru) s jednou oktávou, podporou multitouch a snímáním délky tóniny, na straně Arduina je pak úloha WiFi příjímače/vysílače a MIDI komunikace. Zařízení je schopno komunikovat s libovolným počtem připojených MIDI zařízení.
– Celkově jsem řešil tuto prvotní verzi přibližně jeden měsíc (chodím do práce :-). Narazil jsem na různé problémy, např. při řešení multitouch na Androidu a relativním layoutu pro různá rozlišení (nakonec jsem řešil pouze jedno rozlišení). Dále jsem předělával komunikaci z TCP (ukázalo se jako pomalé) na UDP (i zde je latence). V kostce k dalšímu popisu: na mobilním zařízení se zapne AP a spustí se aplikace, která ve vláknech čeká na UDP broadcasty (na předem určeném portu, podpora více zařízení), a ze kterého získá adresu a port do svého seznamu komunikujících zařízení. Takové zařízení musí být nastaveno na odesílání UDP broadcastů v pravidelných intervalech. To je řešeno na straně WiFly Shieldu. Na adresy a porty jsou pak asynchronně zasílány zprávy pro MIDI zařízení. Zpravidla se jedná o dvě zprávy (datagramy) – počáteční a konečnou, určující také délku tónu. Lze předat i razanci úderu. Na straně Arduina je dobré řešit příjem UDP zpráv a předávání do MIDI ve vláknech. Se synchronizací mohou nastat také problémy, pokud se například některé zprávy předbíhají (ukončovací se dostane před počáteční). Je dobré vytvořit další vlákno, které řídí zásobník došlých zpráv a kontroluje jejich ukončení a příp. je podle timeoutu automaticky ukončí.
– Velmi orientační ceny shieldů: SparkFun El. WiFly Shield 1700 CZK a SparkFun El. MIDI Shield 400 CZK.
– Na GDD bylo prezentováno v prostředí s: Nexus S, ADK (Arduino Mega ADK), WiFly Shield, MIDI Shield a MIDI zařízením – Yamaha S30.
– Mám v úmyslu se projektu věnovat i po GDD, ale podle časových možností ;-)

Roman Nepšinský – Notification/HUD Display

Roman představil univerzální notifikační displej složený z LED diod (matice 32×16 diod s možností 3 barev – červená, zelená nebo oranžová = kombinace obou předchozích) a blikající Android figurku (kterou s těžkým srdcem obětoval šéfredaktor ;)). Specialitou je vertikálně převrácený režim, který umožňuje zobrazení čitelného textu při odrazu od čelního skla automobilu (HUD display). Lze tak zobrazovat např. údaje o aktuální rychlosti, případně v budoucnu navigační instrukce nebo údaje z datové sběrnice automobilu (pro Arduino už existují projekty tohoto napojení). Na pracovním stole pak displej poslouží pro zobrazení různých notifikací, jako např. zmeškaných událostí (hovory, SMS), data a času, nebo vytížení CPU, které jinak člověk např. u 3D hry nevidí. Pro GDD se nicméně zobrazení omezilo na „fun factor“ s možností skrolování libovolného textu, volného kreslení po ploše displeje, nebo zobrazení náhodných vtipů :)

adk_r_01

– Mým záměrem bylo vytvořit něco praktického, a „fun factor“ požadovaný pro GDD soutěž tam spíše nějak dodělat ;). Díky diskuzi na Google+ se mi ozval zkušený Arduino vývojář Honza Schejbal a společně jsme probrali technické možnosti projektu i následný nákup součástek (Honza také zbastlil vše dohromady, na mě potom zbylo vytvoření aplikace ve Wiringu pro Arduino a v Javě pro Android. Aplikace byla laděná na Nexus S (2.3.6) a Acer A500 (3.2)). Shodli jsme se na projektu HUD displaye do auta, který poslouží také jako dodatečný displej k telefonu na stole (pořeší tak např. častou absenci nebo špatnou funkčnost notifikační diody u většiny telefonů).
– Vzhledem k technické náročnosti jsme záhy opustili myšlenku laserové projekce (jako používají komerční automobilky) a chtěli sestavit vlastní displej z velmi svítivých diod. S ohledem na čas a náklady jsme ale nakonec sáhli po běžném hotovém řešení od Sure Electronics, které i s dopravou vyšlo na 33 dolarů (tímto také upřesňuji informaci z GDD, kde se několik lidí na cenu ptalo, a já si pokaždé tipl trochu jiné číslo :)) 32X16 RG Bicolor LED Dot Matrix Unit Board SPI Like
– Samotný vývoj byl téměř bezproblémový, dokumentace projektu Android Open Accessory (a.android.com/demokit) je velmi dobrá a se psaním aplikací pro Android OS už jsem měl nějaké zkušenosti (firemní projekty a hra do soutěže), navíc šel jednoduše „vykrást“ hotový demoprojekt. Psaní ve spartánském IDE pro Arduino bez debugování pak bylo příjemným zpestřením ;). Podobně jako Libor jsem se ale setkal s odpojováním komunikace (např. po náročnějších operacích jako vyčištění celého displeje nebo odskrolování delšího textu), zřejmě by pomohlo provádět tyto operace v samostatném vlákně.
– Velmi pozitivně hodnotím podporu Open Accessory v Android OS. Pokud si návštěvníci s kompatibilní verzí připojili ADK projekt USB kabelem, ihned se jim zobrazil název hardware a zda chtějí přejít na více informací (stažení obslužné aplikaci). Ihned po instalaci pak bylo možné projekt ovládat

A dál?

Tolik tedy k letošním českým ADK projektům. Na SvětAndroida se ale s ADK ještě neloučíme, v nejbližší době si v dalším článku ukážeme zajímavé projekty ze zahraničních GDD, které již proběhly (Brazílie, Argentína, Rusko), a také ty, které budou v listopadu teprve představeny (Japonsko, Austrálie, Izrael, Německo). Určitě se máme na co těšit :)

Roman Nepšinský
O Autorovi - Roman Nepšinský

více o autorovi

Mohlo by vás zajímat

Komentáře (2)