Tjekom razvoja tehnologije kod programera je došlo do uske specijalizacije područja interesa. Možemo govoriti o dvije osnovne grupe: prva grupu čine programeri aplikacija za osobna računala dok drugu grupu predstavljaju programeri aplikacija koje se izvode na specijaliziranim uređajima nestandardiziranih platformi. Programeri prve grupe rade uglavnom na vrlo apstraktnoj razini programiranja dok oni drugi još uvijek moraju imati dobra znanja o hardverskim karakteristikama ciljane opreme. Razvoj telekomunikacija, ponajprije mobilnih uređaja, uvjetovao je potrebu približavanja ove dvije kategorije te je Microsoft odlučio svoje razvojne alate unificirati za upotrebu u oba segmenta. Nakon što je izdao reduciranu varijantu osnovnog .NET Frameworka koju je nazvao Compact Framework, namijenjenu uglavnom uređajima multimedijskih karakteristika, pojavila se i inačica koja cilja na uređaje u segmentu robotizacije i automatizacije pod nazivom Micro Framework. Širenje znanja o ovim programskim proizvodima potaknula je pojava sklopovske opreme za njihovu primjenu. Jedna takva , uslovno rečeno, platforma je i Netduino. Netduino je modul otvorenog koda dizajniran na Arduino konceptu koji je vrlo popularan u amaterskoj mikrokontrolerskoj zajednici. Osnovni princip ove filozofije je da za ulazak u svijet mikrokontrolera gotovo ne trebate alat. Dovoljno je da kupite modul uz koje dolaze osnovni set kablova i žica, stavite modul na stol do računala, pokrenete razvojnu aplikaciju, napišete kod i stisnete Run tipku i odmah vidite rezultata svoga rada.
Što je Microsoft .NET Micro Framework
Microsoft .NET Micro Framework je mala i efikasna .NET runtime okolina za izvršavanje takozvanog upravljanog koda (eng. menaged code) na malim i resursima ograničenim računarskim platformama na kojima se ne može izvršavati operativni sustav Windows CE i njegov .NET Compact Framework. .NET Micro Framework je sličan .NET Comapact Frameworku kao i punom .NET Frameworku što znači da se aplikacije za njega mogu razvijati istim alatima i razvojnim okruženjima. Ovo je tek uvjetno točno jer je razvoj mikrokontrolerskih aplikacija ovog trenutka moguć samo u Visual Studiju 2010 s programskim jezicima C# i Visual Basic na Windws platformi te programskim jezikom Mono na Linux platformi. Micro Framework ne zahtjeva temeljni operativni sustav za svoje izvršavanje jer se Common Language Runtime nazvan TinyCLR instalira direktno na hardversku platformu pa se on još naziva i bootable runtim. On je relativno mali i zauzima samo nekoliko stotina kilobajta RAM memorije i ne zahtjeva procesor koji im jedinicu za upravljane memorijom (eng. memory management unit-MMU). Osim toga Micro Framework se može izvršavati na jeftinim 32-bitnim mikrokontrolerima koji troše vrlo malo energije. Razvoj programa za mikrokontrolerske uređaje upotrebom .NET Micro Framework-a razlikuje se od dosadašnjeg pristupa. Klasična pristup uzima u obzir specifičnosti odabrane sklopovske opreme kao što su sabirnice, memorijska mapa, prekidni vektori i slično i napisani program se može izvršavati samo na ciljanoj platformi. Micro Framework ima apstraktni pristup sklopovskoj opremi preko baznih klasa koji tu opremu tretira kao objekte što vam omogućava i objektni pristup programiranju. Stoga ne morate brinuti o konfiguraciji specifičnih sklopovskih komponenti nego samo postaviti određena svojstava korištenih sklopova u baznoj klasi. Ovaj pristup se još naziva upotreba managed driver-a i omogućava razvoj aplikacija koje nisu vezane uz određenu sklopovsku opremu. Kao i ostali frameworki i Micro Framework izvršava upravljani kod odnosno kompajler generira, o procesoru neovisan, kod koji se naziva intermediate language a onda se TinyCLR brine da se taj kod izvrši na određenoj platformi. Micro Framework nije sustav za rad u realnom vremenu (eng. real-time) i od njega se ne može očekivati strogo determinističko ponašanje. To znači da nemamo pristup definiranju raspoređivanja odnosno ne možemo egzaktno definirati način i parametre raspoređivanja. Isto tako određeni očekivani događaji mogu biti odgođeni za nekoliko milisekundi a uzrok tome može biti neki sistemski zahtjev za prekid ili rad sustava za oslobađanje memorije (eng. Garbage collection) bez obzira što se on aktivira u slobodno sistemsko vrijeme. Isto tako moramo znati da je izvršavanje upravljanog koda u pravilu sporije nego nativnog koda. Razlog je što se s Micro Framework-om upravljani kod izvršava kao interpreter za razliku od punog Framework-a i Compact Framework-a gdje postoji takozvani just-in-time kompajler koji kod prvog izvršavanja pretvara upravljani u nativni kod.
Netduino
Netduino je elektronička platforma bazirana na ARM mikrokontrolerima koju možete programirati koristeći Micro Framework. Razvojno okruženje je Microsoft Visual Studio 2010 ali se može koristiti i besplatna varzija ( Visual Studio 2010 Express). Netduino je hardverski otvorena platforma što znači da se firmware kod kao i električne sheme i PCB projekti mogu koristi pod Apache 2.0 i BSD open source licencom. Ovoga trena postoje 4 varijante Netduino modula:
- Netduino
- Netduino Plus
- Netduino mini
- Netduino Go
Moduli su prilagođeni za amatersku primjenu dok se dizajn bazira na popularnom konceptu Arduina koji je napravljen za AVR mikrokontrolere. To zapravo znači da se na Netduino modulima mogu koristiti gotovo svi dodaci, koji se popularno nazivaju shields, za Arduino module. Ovih dodataka ima mnogo, od jednostavnih senzora do složenih sustava kao što su GSM i drugi komunikcijski moduli. Shodno tome Netduno moduli imaju digitale ulaze/izlaze, analoge ulaze, serijske portove te I2C i SPI sučelja. Napajanje modula je izvedeno korištenjem nestabiliziranog napona 9-12 V koji se potom stabilizira te su na konektore izvedeni naponi 5V i 3.3V koje možete koristiti za ostatak hardvera. Napajati module moguće je i preko USB porta koji istovremeno služi i za programiranje modula.
Netduino i Netduino Plus (najnovija inačica Netduino Plus 2 ) dizajnirani su upravo na Arduino konceptu i razlikuju se po količini memorije i korištenim sučeljem (Netduino Plus 2 ima Ethernet) dok je Netduino mini baziran na Basic Stamp dizajnu. Netduino mini je modul je izveden kao 24 pinski DIP chip i njega možete koristiti u svojim projektima upravo kao da je riječ o standardnom mikrokontroleru. Netduino Go je najnovija inačica i od ostali se razlikuje po konektorima i filozofiji univerzalnog sučelja za proširenja koji je nazvan GoBus . GoBus je zapravo virtualni hadrversko/softverski I/O koncept definiran kao open source protokol baziran na master-slave principu. Na bilo koji GoBus port se može priključiti bilo koji GoBus modul sa podržanom plug and play funkcionalnošću.
Da bi mogli programirati Netduino module potrebna nam je i određena programska oprema. To se u prvom redu odnosi na Visual Studio prilagođen za Netduino platformu. Potrebne alate možemo podjeliti u tri skupine a to su:
- Visual Studio 2010 razvojna okolina
- .Net Micro Framework razvojni SDK (eng. Software Development Kit)
- Netduino razvojni SDK
Ove programske pakete najbolje je i instalirati ovim redoslijedom. Kao što sam prije napisao kao razvojna okolin koristi se Microsoft Visual Studio 2010 i o tome kako se on koristi možete naći puno materijala na internetu. Valja samo napomenuti da se može koristiti i besplatna inačica Visual Studio 2010 Express koji možete skinuti sa stranica https://www.microsoft.com/express/downloads/ . Kao osnovni jezik za programiranje zamišljen je C# ali je kasnije napravljeno da se može koristi i Visual Basic te Mono na Linux platformi. Ove mogućnost ovisi o firmware-u koji se nalazi u modulu koji ste kupili. Trenutno je aktualna varijanta NETMF4.2 koja podržava i Visual Basic. Ako nabavite module koji imaju firmaware 4.1 a želite programirati u Visual Basicu potrebno je upisati novi firmware koji možete skinuti s službenih stranica Netduino projekta https://forums.netduino.com/index.php?/topic/5120-announcing-net-mf-42-upgrade-for-all-netduino-hardware/ a proceduru kako to napraviti možete naći nai wiki stranicama Netduina. Zamjena firmware ne mora biti isključivo radi ovoga razloga nego, kao što je slučaj sa svim platformama otvorenog koda, neke nove mogućnosti i funkcije te ispravljanje grešaka iz prethodnih verzija te će te vjerojatno jednom u budućnosti mijenjati firmware. .Net Micro Framwork SDK je su sistemske datoteke Visual Studia za spomenuti framework dok je Netduino razvojni SDK prilagođenje Visual Studia za podršku Netduino modula. Zahvaljući njemu će te nakon instalacije u svom VS imati pridodane predloške (eng. template ) za sve spomenute Nedtuino module.
Prvi program
Nakon uspješne instalacije navedenih programskih pakete i otvaranja kutije s vašim Netduinom spremni ste za pisanje prvog programa.Nakon startanja VS uz ostale predloške naći će se i predlošci za Netduino module. Na vama je da odaberete predložak koji odgovara vašem moduli i VS će izgenerirati vaš prvi projekt.
Kao i ostali VS projekti i Neduino projekti se spremanju u jedan folder gdje se nalazi sve vezano uz projekt. Ako do sada niste radili s Visual Studiom pogledajte strukturu projekt foldera koji se po defaultu nalazi na …userDocumentsVisual Studio 2010Projects. Struktura foldera projekta je gotovo identična kao i za ostale tipove VS projekata osim razlike u Debug i Release subfolderu gdje će te naći subfoldere [be] i [Ie]. Nakon otvaranja projekta na zaslonu će te imati otvoren editor za pisanje vašeg koda. Za razliku od oubičajnog Visual Basic projekta ovdje nećete imati formu kao polazišnu klasu nego VB modul.
Kao što sam rekao program se piše unutar klase Module1.vb a jednostavan program može izgledati ovako:
Module Module1 Sub Main() Dim led As OutputPort = New OutputPort(Pins.ONBOARD_LED, False) Do led.Write(True) Thread.Sleep(1000) led.Write(False) Thread.Sleep(1000) Loop End Sub End Module |
Ovaj primjer ima zadatak da na Netduinu pali i gasi ugrađenu LE diodu Pins.ONBOARD_LED u taktu od 1 Hertza a to se izvršava unutar beskonačne DO…Loop petlje.
Nakon što ste napisali kod potrebno je program prebaciti u Netduino. Za razliku od programiranja mikrokontrolera na klasičan način ovdje vam nije potreban nikakav programator (niti hardverski niti softverski) već je sve spremno za programiranje i startanje vašeg programa. Naravno na početku rada ste trebali spojiti Netduino na vaše računalo korištenjem micro usb kabela koji ste dobili uz modul. Ako je sve ispravno instalirano nakon priključivanja modula računalo će prepoznati modul i instalirati potrebne drivere kao i kod priključivanja drugog usb uređaja. Da bi ste provjerili da li imate vezu s vašim Netduino modulom kliknite na My Project na desnoj strani i otvorit će vam se prozor sa svojstvima vaše aplikacije (Project Properties). Ovdje možete vidjeti postavke aplikacije, kompajlera, referenci i slično. Izaberite .NET Micro Framework i provjerite aktivne postavke. U polju Device trebao bi se pojaviti vaš Neduino modul dok bi polje Transport trebalo biti postavljeno na USB. Ako je to tako spremni ste za programiranje vašeg Netduino modula odnosno “deplojanje” kako se to ovdje naziva. To će te učinit na nači da odete u glavni izbornik i izaberete Debug/Start Debug ili jednostavno kliknete na zeleni trokutić (strelicu) u osnovnoj traci s alatima. U donjem statusnom prozoru možete pratiti trenutne operacije programiranja i nakon nekog vremena LED dioda na vašem Netduini bi trebala veselo žmirkati. Sada kada je vaš program u Netduini vi možete zatvoriti VS bez utjecaja na program u modulu koji je trajno pohranjen. Svaki put kad uključite napajanje (na bilo koji način ) program u Netduinu će se početi izvršavati.
Moram napomenuti da sam pri pisanju ovoga posta polazio od pretpostavke da ste bar jednom pokušali pisati program u Visual Basicu. Ako to nije tako i ako se, uz upoznavanja s Netdunom, trebate upoznati i sa osnovama pisanja Visual Basic programa to će te morati učinit sami. Nadam se da sam vam bar približio metodologiju programiranja mikrokontrolera u .Net okruženju i želim puno zabavnih trenutaka s Netduinom .
Još jednom ću ponoviti linkove gdje možete dobiti više informacija i preuzeti potrebne alate:
Službene stranice Netduino projekta: https://netduino.com/
Microsoft Micro Framework: https://www.microsoft.com/net/multiple-platform-support
Microsoft Visual Studio 2010 Express : https://www.microsoft.com/visualstudio/eng/products/visual-studio-2010-express
Netduino forum: https://forums.netduino.com/
Netduino Wiki stranice: https://wiki.netduino.com/