Quercus Lab
Blog o softverskom razvoju, elektronici …
  • Home
  • Autor
  • ResCulator
  • O otpornicima
Trenutno ste tu : Quercus Lab » Mikrokontroleri » Netduino – mikrokontroleri na objektni način

Netduino – mikrokontroleri na objektni način

Posted By quercus On Wednesday, January 30, 2013 09:45 AM. Under Mikrokontroleri  

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:

  1. Netduino
  2. Netduino Plus
  3. Netduino mini
  4. 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:

  1. Visual Studio  2010 razvojna okolina
  2. .Net Micro Framework razvojni SDK (eng. Software Development Kit)
  3. 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/

 

 

← VB OPC klijent
  • Zadnje objave
    • Netduino – mikrokontroleri na objektni način
    • VB OPC klijent
    • OPC Data Access server
    • OPC tehnologija
    • Kapacitivne dodirne tipke
  • Arhiva
    • January 2013
    • October 2012
    • April 2012
    • February 2012
    • January 2012
    • December 2011
    • November 2011
    • October 2011
  • Kategorije
    • Automatizacija
    • Mikrokontroleri
    • Razno
Copyright © 2018. All Rights Reserved.