Embedded zariadenia a .NET

Pred nedávnom som objavil .NET Micro Framework (NET MF) a nedá mi sa nepodeliť o moje nadšenie. .NET Micro Framework je opensourcová platforma na vyvýjanie programov bežiacich na platformách s výrazne obmedzenými zdrojmi (minimum je tuším 128KB flash a 64KB RAM). NET MF sa líši od .NET Compact Edition hlavne tým, že CE potrebuje pre svoj beh hlavne operačný systém. NET MF je naproti tomu omnoho menší framework, ktorý sa ale sám stará napríklad aj o thread management.

Netduino PlusPre mňa, ako .NET programátora bolo vyskúšanie niektorého z dostupných zariadení neodolateľné, a hneď som si objednal Netduino, čo je tiež opensource platforma, snažiaca sa byť kompatibilná s veľmi obľúbeným Arduinom. Konkrétne ma zaujalo Netduino Plus, ktoré má okrem 48MHz ARM7 procesoru s 128KB flash pamatou a 60KB RAM priamo na sebe aj ethernet port a slot na SD kartu. Síce sa ku mne táto dostička dostala až po vianociach, ale aj tak som si našiel čas na to, sa s ňou hrať.

Doteraz som do programovania pre embedded systémy nevidel takmer vôbec. Tušil som, že developer potrebuje kompilovať programy pre daný procesor, že potrebuje mať programátor, ktorým skompilovaný program dostane do code pamäte, a že je celé programovanie dosť lowlevelové. Toto ale pre Netduino (a ani ostatné NET MF kompatibilné dev boardy) neplatí. Môj devboard má priamo na sebe USB konektor, ktorým sa napája do PC. Po nainštalovaní NET MF SDK a ešte ďaľšieho balíčka so SDK pre Netduino som pokračoval vytvorením nového projektu vo Visual Studiu, kde som priamo našiel template “Netduino plus project”, v novej záložke v project settings bolo už len treba nastaviť, ktoré pripojené NET MF zariadenie chcem používať na deploy a debug programu. Potom stačilo už len naprogramovať (v C#, nová verzia NETMF 4.2 už tuším vie aj VB.NET, ale ten jazyk som nikdy nemal rád) krátky program a zmačknúť F5 (ak nepoznáte Visual Studio, tak F5 je štandardná klávesa pre spustenie programu v debug móde) a VS program nasadilo na Netduino, restartovalo ho a spustilo debugovanie. Jednoduchšie si to už ani neviem predstaviť a fakt, že tento proces dokáže bez problémov zvládnuť aj úplný začiatočník si veľmi pochvaľujem. BTW okrem toho, že je to jednoduché, tak okrem Windows sú všetky použité programy aj zadarmo (Visual Studio 2010 Express – C#), ale vraj sa to dá rozbehať aj pod Monodevelopom pod linuxom.

Čo sa týka samotného programovania, tak NET MF je samozrejme (tak isto ako aj plný .NET) high level framework, takže napríklad nakonfigurovanie pinov ako digitálnych výstupov sa deje na pozadí vytvorenia objektu OutputPort (tak isto aj napríklad I2C, UART…) . Jasné je, že oproti full .NET obsahuje NET MF omnoho menej tried, ale nájdete tu základné triedy pre GPIO, UART, I2C, SPI, prácu so stringami, UTF8 encoding, komunikáciu po ethernete (IP), bitmapy, fonty a dokonca aj základy webservices a veľmi, veľmi oklieštené WPF.

Jediným limitom už potom ostáva Vaša fantázia a 60KB pamäte (ktoré Vám ostanú voľné pri používaní networkingu). Netduino ale nieje jediný hardware, na ktorom NET MF rozbehnete, teda sa tých 60kB neľakajte :-)

.NET Gadgeteer

Tu sa hodí spomenúť ďaľší pojem, a tým je .NET Gadgeteer, je to opensource toolkit na prototypovanie malých zariadení. Príkladom celého kitu môže byť FEZ Spider Starter Kit od GHI Electronics. Kit teda pozostáva z hlavnej dosky (FEZ Spider) a kopy Gadgeteer modulov. Každý modul sa do dosky (alebo iného modulu) zapája cez jeden alebo viac maličkých desaťpinových konektorov. V tomto konkrétnom kite nájdete napríklad ethernet modul, multicolor led modul, joystick modul, modul na SD kartu alebo dokonca grafický 3.5″ touch display a kameru.

FEZ SpiderFEZ Spider má na sebe 14 konektorov na gadgeteer moduly, ale nie všetky sú rovnaké. To, aké moduly môžete do daného konektoru zapojiť, určujú typy konektoru. Z každého 10pin konektoru sa používa prvý pin na napätie 3.3V, druhý pin na 5V a desiaty pin ako GND. Ostáva teda 7 pinov, ktorých možné využitie záleží na type socketu. Napríklad socket typ Y hovorí, že piny 3 až 9 sú GPIO piny a pin 3 podporuje interrupt. Typ U musí podporovať GPI s interruptom na pine 3, UART TX na pine 4, UART RX na pine 5 a GPIO na pine 6, kde piny 7, 8 a 9 niesú popísané. Každý socket môže mať viacero podporovaných gadgeteer typov, moduly väčšinou vyžadujú pripojenie k jednému konkrétnemu typu socketu.

.NET Gadgeteer designerSoftvérová výbava Gadgeteer je pre nepripraveného človeka veľkým (pozitívnym) prekvapením. .NET Gadgeteer program totiž môžete začať priamo preňho určeným designérom, spĺňajúcim rovnakú úlohu ako pri vývoji winforms aplikácie. V tomto designéri totiž pripájate moduly na mainboard, pri čom Vám nedovolí zapojiť moduly zle, v kóde aplikácie Vás potom už budú čakať nainicializované a vytvorené objekty reprezentujúce dané moduly.

Záverom mi nedá túto technológiu neodporučiť všetkým, ktorí sa chcú pohrať s embedded zariadeniami, ale s nimi nemajú zatiaľ žiadne skúsenosti alebo sa boja, že by ich to stálo veľa času. NET MF a aj .NET Gadgeteer Vám prichádzajú v ústrety a od vytvorenia vlastnej cez internet ovládanej pan + tilt kamery merajúcej aj teplotu a vlhkosť Vás nebude deliť viac ako pár dní veľmi vďačnej roboty.

Leave a Comment