2014-05-31

ODROID-U2 mikrokompiuteris

Prieš daugiau nei metus teko rašyti apie mikrokompiuterių platformas. Tuomet analizavom nemažai galimų variantų. Kartas nuo karto vis atnaujinu tą straipsnį, petiekdamas naujausią informaciją, nors šioje rinkoje viskas greitai keičiasi. Tada berašydamas susigundžiau perspektyvia Odroid-U2 sistema ir užsisakiau tiesiai šį kompiuteriuką iš P.Korėjos. Jo kelias iki manęs nebuvo lengvas, bet pavyko jį gauti dar 2013 kovo mėnesį. Per daugiau nei metus laiko nemažai nuveikiau bebandydamas šį gaminį - todėl nusprendžiau, kad pagaliau jau laikas visais atradimais, sėkmėmis ir nesėkmėmis pasidalinti, bet apie viską nuo pradžių.

I. Intro

Prisiminkime, o kas nežino, susipažinkim - Odroid-U2 yra itin mažų (59 x 57 x 60 mm) gabaritų mikrokompiuteris, pritaikytas visokiems DIY ar elektronikos hobi mėgėjams - $89 be siuntimo. Pagal technines charakteristikas - tai tiesiog Samsung Galaxy SIII keturių branduolių 1.7GHz  procesorius ir 2GB RAM supakuoti į minimalų tūrį. Tikras galiūnas palyginus su Raspberry Pi (700MHz, 512MB RAM) kompiuteriu. Prie viso šito pridėtos tokios sąsajos kaip 2xUSB, 100Mbit LAN, 3.5mm audio bei mikroSD kortelės išėjimas. Pats kompiuterius apvilktas dideliu radiatoriumi, kuris atvėsiną šį "karštuolį".



Maksimali suvartojama galia apie 10W, t.y. naudoja 2A prie 5V, nors dažniausiai ima apie 1A prie vidutinės apkrovos ir radiatorius vos būna šiltas esant maksimaliai apkrovai. Minusas toks, jog neturi bendros paskirties programuojamų išvadų, t.y. GPIO. Lieka naudotis 4 išvadų USART/serial jungtimi, kuri pateikiama šone, jeigu norima valdyti kokią nors elektonikos įrangą. Na žinoma, niekas nestovi vietoje ir per metus laiko šis modelis buvo patobulintas, todėl atsirado Odroid-U3, o senasis modelis išimtas iš apyvartos, be to ir kaina nukrito iki $69. Naujame modelyje turime papildomą dar vieną USB jungtį ir 8 GPIO išvadus, t.y. I2C, USART ir t.t. bei naują apipavidalinimą (form-factor).


Žinoma, čia seni modeliai - sekantis Odroid flagmanas yra ODROID-XU su Samsung S IV procesoriumi, turintis pseudo 8 branduolių procesorių Exynos5 Octa Cortex™-A15 1.6Ghz quad core + Cortex™-A7 quad core CPU su 2GB DDR3 RAM, USB 3.0 Host x 1, USB 3.0 OTG x 1 bei USB 2.0 Host x 4. Šįkart apie jį daug nešnekėsime, tiesiog - jeigu reikia maksimalios spartos ir galimybės išlygiagretinti daug procesų,  o max 20W galia yra niekis, tai šis pasirinkimas yra labai geras. Na ir kaina už tokį monstrą dviguba - $169, ouch!


II. Pirkimas ir išmuitinimas

Taigi kaip ir visa situacija rinkoje aiški. Grįžkime prie Odroid-U2 modelio, kuris ir yra šio straipsnio pažiba. Kompiuteris užsakytas buvo 2013 vasario 20d., kažkur dvi savaites Hardkernel užgaišo, kol paruošė siuntą ir išsiuntė, o gavau maždaug per mėnesį, t.y. 2013 kovo 22d. Daugiau nieko iš Hardkernel parduotuvės nepirkau, nes kainos pas juos dvigubos ar net didesnės, nors žinojau, kad reikia ir pakroviklio ir USART laido. Siekdamas sutaupyti, tinkamą pakroviklį 5V/2A įsigijau dar per ebay.com, o dėl USART laido sugalvojau, jog pasigaminsiu pats!
Taigi siuntimas iš P.Korėjos man atsiėjo $11, taigi iš viso $100 (t.y. $89+$11). Na, žinoma, atėjus siuntai į Lietuvą, gavau oficialų e-laišką iš muitinės, jog reikia išmuitinti siuntą. Muitinė paskaičiavo 21% PVM nuo $100, tai teks pakloti 87 Lt - čia viskas aišku, parašyta popieriuose. Bet to dar negana. Dar prie visko yra skaičiuojami taip vadinami "terminalo mokesčiai", t.y. muitinė už siuntos laikymą pas save ima mokestį bei skaičiuoja jį kiekvienai dienai. Taigi, kuo ilgiau tvarkaisi dokumentus, tuo išmuitinimas tampa vis brangesnis. Paskaičiuoti terminalo mokesčiai - 56Lt mano konkrečiu atveju, nors siunta terminale išbuvo viso labo nepilnas dvi dienas.
Nepasisekė dar ir tuo, jog siunta iš Korėjos keliavo per Fedex tarnybas, todėl dar gavau ir asmeninį skambutį iš UAB "Translaineris", kad laikas jiems sumokėti pinigų, kad sutvarkytų visus popierius. Suradęs gausybę nusiskundimų apie UAB "Translaineris" veiklą internete pradėjau abejoti, ar jų siūlomos 100+ Lt kainos (muitines tarpininko paslaugos 100 Lt. + 55 Lt. terminalo paslaugos + 15Lt. banko komisinė rinkliava) iš ties geriausios. Išmuitinti siuntą paprastam mirtingąjam, kuris nežino, kaip tinkamai užpildyti popierius muitinei bei specialiai važiuoti į Vilnių - atrodo absurdiška. Teko susitaikyti, kad reiks pakloti dar pinigų popierizmui sutvarkyti. Mano, kaip vartotojo pasirinkimas, kurią įmonę rinktis išmuitinimo popieriams tvarkyti. Taigi, susiradau UAB "RS Cargo"", su kuria per dieną viską pavyko e-paštu suderinti ir net išmuitinti - likau labai patenkintas jų darbu ir operatyvumu. Už jų darbą teko pakloti 100 Lt, t.y. 50Lt už dokumento paruošimą ir 50Lt už atstovavimą. Taigi pavyko sutaupyti kažkur 14Lt - vis šis tas. Išmuitinus ir sutvarkius dokumentus siunta pajudėjo iš muitinės per Fedex tarnybas link manęs. Taigi reziumuojant - kompiuteris su visais mokesčiais atsiėjo ~493Lt. Už tą pačią kainą būtų išėjęs dar ir antras Odroid-U2 kompiuteris, ech... Bent gerai, kad daugiau nieko neužsakiau iš Hardkernel. Galiausiai gavau aplamdytą kartoninę dėžutę, kurioje gana paprastai supakuotas mikrokompiuteris ir krūva muitinės popierių bei sąskaita faktūra.


III. 3...2...1... Go!

Gavęs kompiuteriuką dar teko luktelti, kol iš ebay atėjo pakroviklis. Sėkmingam paleidimui prireikė ir mikroSD atmintinės - šiuo atveju turėjau jau keletą 8GB class 4 kortelių. Kad būtų galima sėkmingai paleisti kompiuteriuką reikia, jog į SD kortelę būtų įrašyta kažkokia operacinė sistema. Hardkernel siūlo keletą, t.y. Android arba Ubuntu/Debian oficialias versijas, taip pat prieinamos ir kitos pačių vartotojų sukonfigūruotos OS versijos. Žinoma, daug informacijos galima rasti forume: forum.odroid.com. Ne tik kaip įrašyti operacinės sistemos atvaizdą (.img failą) į SD kortelę su Win32DiskImager programa, bet ir kitokių gerų patarimų ar problemų sprendimų. Būrys naudotojų aišku mažesnis nei populiaraus Raspberry Pi kompiuterio, bet tikrai ne ką blogesnis. Gal net daugiau IT profesionalų ir žinovų, naudojančių Odroid. Bet kokiu atveju, norint kažką rimtesnio nuveikti su šia galinga sistema, reiks pasiraitoti rankoves, nes Linux konfigūravime dažnai būna kabliukų, kurių man tikrai netrūko.
Pirmasis bandymas - aišku, susipažinimas su sistema. Įsirašiau Debian Wheezy OS. Kadangi čia visiškai įprasta Linux sistema, tai susipažinusiems su ja darbas lygiai toks pats kaip ir visur. Ką galima pastebėti - o gi tai, jog prisijungus per SSH bei kokios nors Bash komandos vykdymo laikas žymiai greitesnis lyginant su Raspberry Pi, kuriuo teko irgi naudotis ne kartą (tarsi lygintume Ferrari ir Žiguliuko greičius). Bendru atveju norint padoriai naudotis tenka susikonfigūruoti bent jau LAN tinklą (/etc/network/interfaces faile) ir nusistatyti statinį IP adresą. Kiti mano Odroid-U2 eksperimentai aprašyti toliau.

IV. USB kameros

Vienas  iš panaudojimo atvejų - keletos USB kamerų prijungimas prie sistemos. Hardkernel labai giriasi, kad jų Odroid gali "pavežti" iki 4 USB kamerų vienu metu (jeigu yra tiek fizinių jungčių). Tuo ši sistema atrodo iš ties patraukliai. Kadangi USB jungtys turimame modelyje tik dvi, tai jungiau - dvi web kameras.


Pirmuosius testus atlikau su viena kamera - viskas sėkmingai, gaunamas 640x480 raiškos vaizdas. Galima naudoti standartinę Video4Linux API kadrų skaitymui iš kamerų arba OpenCV biblioteką. Pirmasis bandymas kaip tik buvo su Video4Linux. Kadangi neturėjau galimybės matyti vaizdo ekrane, tai panaudojau dar ir SDL vaizdo piešimą ir transliavimą į savo kompiuterį per tinklą su PuTTY "X11 forwarding" nustatymu (kodas čia). Maksimali vaizdo perdavimo sparta ~7 kadrai/s tokiu netradiciniu būdu. Antrąją kamerą prijungus iškart problemos - neužtenka USB pralaidumo:

libv4l2: error turning on stream: No space left on device
xioctl error 28, No space left on device

Pasirodo abi kameros perduoda neapdorotą/nesuspaustą (angl. raw) RGB informaciją tiesiai per vieną fizinį USB kontrolerį. Maksimalus pralaidumas USB 480Mbit/s išnaudojamas jau vienai kamerai - problema mano registruota čia. Sumažinus kamerų raišką iki 320x240 galima gauti abiejų kamerų vaizdus. Didesnis greitis turėtų būti gaunamas naudojant OpenCV. Taigi Hardkernel nutyli detales - keturios kameros veikia tik tada, jeigu techninė įranga palaiko MJPEG suspaudimą, be to jie bandė viską su Android OS. Bendru atveju prijungti keletą kamerų nėra taip paprasta - reikia tokių, kurios palaikytų MJPEG, tačiau vis gi tai negarantuoja, jog bus galima vaizdą gauti 640x480 raiška iš abiejų. Toliau nenagrinėjau stereo sistemos realizavimo galimybių.


V. USART keitiklio gamyba

Hardkernel parduotuvėje pilna niekučių, palengvinančių elektronikos mėgėjo gyvenimą. Tačiau jie nieko nesiūlo, kad būtų paprastesnis Odroid-U2 bendravimas su mikrovaldikliu ar kita elektronine įranga per USART jungtį. Problema tame, jog Odroid USART naudoja 1.8V įtampos lygio signalus, o standartiniai mikrovaldikliai naudoja TTL +5V lygius. Taigi galimybė sudeginti ar sugadinti Odroid nemaža. Reikia įtampų keitiklio. Nusprendžiau tokį pasigaminti pats - keletas dienų ir turime veikiantį rezultatą! Informacijos teko pasiieškoti internete, bet pavyko sukurti itin paprastą ir labai mažą keitikliuką. Suprojektavau ir Eagle schemą ta proga.




Keitiklis mano testuose prijungtas prie kompiuterio per USB2TTL modulį. Taigi visa Odroid-U2 konsolė prieinama be problemų, o syslog pranešimai taip pat matomi joje. Kitos programos gali rašyti ir skaityti iš /dev/ttySAC1 norėdamos siųsti ar gauti informaciją. Per keitiklį taip pat galima jungti Odroid-U2 tiesiai prie kokio nors mikrovaldiklio, pvz.: Atmega. Išbandyta ir tikrai veikia. Didesnė problema, kaip išjungti syslog ir kitus konsolės pranešimus išvedamus į /dev/ttySAC1, kad jos neterštų komunikacijos kanalo. Debian Wheezy OS tai pavyko padaryti keliais konfigūraciniais pakeitimais, o Ubuntu Linaro OS šito taip ir nepavyko iki galo padaryti, nes tikslui pasiekti jau reikėjo perkompiliuoti Odroid u-boot ir patį Linux branduolį. Bendru rezultatu vis tiek patenkintas - tiesiog programinei įrangai tenka mokėti dirbti su papildomomis "šiukšlėmis" sraute. Paprasto Python skripto pavyzdys apačioje, kuriuo gali būtiskaitoma ir rašoma į serial konsolę. Kad pavyzdys veiktų reikia įsirašyti pySerial biblioteką bei suderinti konsolės darbo parametrus taip: baud=9600, frame=8bits, no parity, 1 stop bit. (daugiau informacijos čia).


VI. WiFi modulių konfigūravimas

Prijungti kokį WiFi modulį prie Odroid-U2 tikrai prireikė, net gi du - TP-Link TL-WN725N V2 bei DIGITUS Wireless 300N USB DN-70543 (abu pirkti skytech.lt). Abiem atvejais konfigūraciją ir tvarkykles reikėjo derinti. TP-Link atveju oficialios tvarkyklės (angl. driver) iš gamintojo nebuvo, tad teko pasinaudoti esančia GitHub'e, daugiau informacijos pateikiau ankstesnėje nuorodoje. Antrojo modulio atveju pasinaudojau oficialia 8192CU tvarkykle iš Realtek svetainės. Kiekvienas modulis turėjo būti sukompiliuotas iš savo išeities tekstų (angl. source code). Reikėjo parsisiųsti branduolio kodą iš Hardkernel GitHub'o.


Sukompiliavus modulio tvarkykles ir įdiegus, abu moduliai veikė be problemų. Kiek sudėtingiau buvo sukonfigūruoti prieigos tašką (angl. access point), bet tai tikrai įmanoma. Tiesa, tam reikalingas modifikuotas hostapd servisas - kitaip Linux OS niekaip nepriverčia modulių dirbti access-point režimu.

VII. Pabaiga


Taigi tai keletas mano taikymo atvejų naudojant Odroid-U2. Nenorėjau leistis į kiekvieno detales - jos pateiktose papildomose nuorodose. Tiesiog tikslas buvo supažindinti su keliomis Odroid-U2 galimybėmis. Bendru atveju be sunkumų neapsieita - ypač konfigūruojant sistemą vienam ar kitam atvejui, jungiant techninę įrangą. Pats mikrokompiuteris yra tikrai vertas dėmesio įrenginys, galima realizuoti neblogą serverį ar pritaikyti kitiems panaudojimo atvejams. Įdomu, o ką su Odroid-U2 kuriate Jūs?


Komentarų nėra:

Rašyti komentarą