V tem članku boste izvedeli, kako je nastal modul z imenom Shield-A in kje se uporablja.
V »Nacionalnom centru tehničke kulture« v Kraljevici (Hrvaška) že leta izvajamo delavnice, na katerih udeležence seznanjamo z najnovejšimi tehnologijami, med katere vsekakor spada tudi programiranje mikrokontrolerjev. Ti miniaturni digitalni računalniki so v današnjem času sestavni del mnogih izdelkov, s katerimi se vsak dan srečujemo, od mobilnih telefonov in TV sprejemnikov, prek “pametnih” pralnih strojev in drugih hišnih naprav, do osebnih avtomobilov in dovršenih igračk – vsakemu od njih mikrokontrolerji dajejo pridih “inteligence” in jih naredijo bolj enostavne za uporabo, bolj zanesljive in varne ali morda samo bolj zabavne. Mimo tega trenda tudi mi nismo mogli, zato ni nič čudnega, da so mikrokontrolerji našli svoje mesto tudi v izdelkih, ki jih ustvarjajo udeleženci naših delavnic: vgradili smo jih v binarno uro, radio sprejemnik, robota „Robobubo“, pametno dvigalo, robotsko roko,… če omenimo samo nekatere izmed projektov, ki smo jih z udeleženci ustvarjali v preteklih letih.
Ta vsebina je samo za naročnike
Če želimo mikrokontroler uporabiti v nekem svojem izdelku, ga moramo najprej naučiti, da nam izvaja tisto, kar je potrebno: z drugimi besedami, moramo ga programirati. Učenje programiranja je proces, a veliko lažje in bolj zabavno je, če takoj, ko program napišemo, vidimo njegov rezultat. S temi prvimi programi najpogosteje prižigamo in ugašamo svetleče LEDice, beremo stanja tipk ali položaj drsnika potenciometra, proizvajamo zvočne efekte, izpisujemo sporočila na alfanumeričnem prikazovalniku… vendar pa moramo te komponente z mikrokontrolerjem na primeren način tudi povezati, če želimo to izvesti. Bolj enostavno je, če že imamo takšno ploščico na kateri je mikrokontroler povezan z nekaj izbranimi uporabnimi komponentami in pomožnimi vezji, kot sta programator in stabilizator napajanja: takšen izdelek imenujemo razvojna ploščica ali učilo.
V današnjem času je Arduino vsekakor najbolj znana razvojna ploščica za mikrokontrolerje in med nekaj različnimi izvedbami teh ploščic je najbolj popularna Arduino Uno (slika 1). Na Arduino Uno ploščici se nahaja zmogljiv mikrokontroler ATmega328P, napetostni stabilizator, čip za USB vmesnik in še nekaj drugih komponent ki vse to povezujejo v celoto. Arduino Uno ima tudi priključek za USB kabel, prek katerega se poveže z osebnim računalnikom, priključek za napajalni vir in dve vrsti priključnih letvic. Na priključke teh letvic so povezani priključki (pini) mikrokontrolerja, vhodna napajalna napetost, stabilizirani napetosti 5 V in 3,3 V in še nekateri drugi signali. Vendar pa Arduino Uno nima LEDic, tipk, potenciometrov, prikazovalnikov in drugih komponent, s katerimi bi lahko preverili delovanje naših programov. Tu pa sedaj pridemo do ploščice, ki smo jo imenovali Shield-A (slika 2).
Shield-A vsebuje komponente, s katerimi je mogoče vizualizirati delovanje programa v mikrokontrolerju: na ploščici se nahaja osem enobarvnih in štiri tribarvne (RGB) LED diode, brnač, dve tipki, potenciometer ter priključki za alfanumerični prikazovalnik in za I2C komunikacijo. Prav ta zadnji konektor omogoča povezovanje z drugimi komponentami in vezji, s čimer uporabnost te ploščice dobi čisto novo dimenzijo.
Dimenzije in oblika Shield-A ploščice in razporeditev igličastih priključkov na njeni spodnji strani so popolnoma skladni z dimenzijami standardne Arduino Uno ploščice. Zaradi tega se Shield-A enostavno namesti na Arduino Uno, s čimer se komponente na ploščici povežejo s priključki mikrokontrolerja in napajalno napetostjo v funkcionalno celoto (slika 3). Shemo vezave zdaj ne bomo analizirali, saj jo bomo spoznavali postopno, s spoznavanjem posameznih možnosti naše Shield-A ploščice.
Morda je prav omeniti tudi to, da je Shield-A skupno delo skupine avtorjev in je načrtovan na osnovi njihovih večletnih izkušenj pri delu z mikrokontrolerji, v veliki meri tudi v delavnicah, ki jih organizira HZTK. Prav tako je HZTZ opremila »Nacionalni centar tehničke kulture« z določenim številom učil Shield-A, na katerih se izvajajo delavnice za dve platformi: Arduino in Bascom-AVR. Iz teh delavnic je zrasla knjižnica programov, ki nas postopno seznanjajo z načinom programiranja mikrokontrolerjev in njihovimi možnostmi. V naslednjih člankih bomo analizirali te programe. Pri tem bomo potrebovali osebni računalnik z nameščenima programoma Bascom-AVR in/ali Arduino, odvisno od tega, za katero platformo se boste odločili, tisti, bolj radovedni, pa bodo imeli priložnost primerjati programske rešitve istih nalog na obeh platformah.
Bascom-AVR je programski jezik in razvojno orodje za programiranje mikrokontrolerjev družine AVR, kamor spadajo tudi ATmega328P, ki so vgrajeni na Arduino Uno ploščicah. Program je mogoče namestiti na osebni računalnik z Windows operacijskimi sistemi XP, Win7, Win8 ali Win10. Za aktivno spremljanje te serije člankov povsem zadošča demo različica tega programa, ki si jo lahko brezplačno naložite s spletne strani avtorja, na naslovu mcselec.com. Programi, ki jih bomo analizirali, so pisani za Bascom-AVR demo 2.0.7.5 (trenutno je najvišja dostopna verzija 2.0.7.9).
Po namestitvi programa Bascom-AVR je tega potrebno konfigurirati tako, da bo znal komunicirati s ploščico Arduino Uno. Na sliki 4 je prikazano, katere opcije je treba nastaviti v oknu Options-Programmer. Vrednost v COM port okencu je odvisna od tega, katera serijska vrata je Windows operacijski sistem dodelil programatorju priključeni Arduino Uno ploščici. To najlažje izveste tako, da povežete svoj Arduino Uno z USB priključkom svojega osebnega računalnika in odprete nastavitveno okolje Device Manager (slika 5). Kako bo videti vaša priključena Arduino Uno ploščica je odvisno od tega, ali imate originalno različico ploščice ali katero od kloniranih, ki jih je na tržišču ogromno. Čeprav so glede delovanja (najverjetneje) med sabo povsem enake, Windows vseeno vidi med njimi določene razlike, zato bo original prepoznal tako, kot je prikazano na sliki 5 zgoraj, klonirano ploščico originalne pa kot na sliki 5 spodaj, morda pa tudi nekoliko drugače. Potem, ko boste v nastavitvenem oknu na sliki 4 vpisali ustrezno številko COM vrat, si bo Bascom-AVR to zapomnil in tega postopka ne bo treba več ponavljati, dokler boste uporavljali isto Arduino Uno ploščico in ista USB vrata.
Arduino IDE je integrirano razvojno okolje za programiranje mikrokontrolerjev in mikroprocesorjev različnih družin. Arduino IDE podpira programske jezike C in C++ s posebnimi pravili programske strukture. Pisan je v programskem jeziku Java, kar mu omogoča lažjo prenosljivost med različnimi operacijskimi sistemi. Dostopen je za Windows različice od XP naprej in Linux, lahko pa si ga brezplačno naložite z internetne strani https://www.arduino.cc/en/Main/Software.
Med nameščanjem programa Arduino IDE namesti vso potrebno programsko podporo, kot so gonilniki za komunikacijo s fizičnim strojnim programatorjem prek USB vrat in za programski programator avrdude. Po namestitvi ga je potrebno konfigurirati tako, da zna komunicirati s ploščico Arduino Uno.
Konfiguracija se nastavi prek ustreznih nastavitvenih oken “Tools->Board”, “Tools->Port” in “Tools->Programmer”. Slika 6 prikazuje izbor Arduino Uno ploščice. Slika 7 prikazuje definiranje komunikacije prek USB vrat. Slika 8 prikazuje izbiro programskega programatorja”AVRISP mkII”.
Če ste Arduino IDE namestili na Linux operacijskem sistemu, morate upoštevati, da Linux USB vratom dodeljuje drugačne oznake.
V Linux Ubuntu distribuciji je za iskanje oznake USB serijskih vrat potrebno s kombinacijo tipk CTRL-ALT-T pognati emulator terminala in prek tega terminala izvršiti ukaz dmesg , glej program 1.
program 1 $ dmesg .... [ 581.872302] usbserial: USB Serialsupportregistered for ch341-uart [ 581.872317] ch341 1-6:1.0: ch341-uart converterdetected [ 581.872679] usb 1-6: ch341-uart converternowattached to ttyUSB3
Iz tega primera lahko sklepamo, da je celotna pot do dodeljenih vrat /dev/ttyUSB3. Na Sliki 9 lahko vidimo izbiro komunikacije prek USB vrat 3.
Zdaj, ko smo spoznali programe in opremo, ki jo bomo uporabljali, je prišel tudi trenutek, da napišemo svoj prvi program. Kakšno nalogo si bomo zastavili in kako jo bomo reševali, pa si preberite v naslednjem nadaljevanju člankov iz te serije!
(Članek je bil prvotno objavljen v časopisu ABC tehnike. Za objavo v reviji Svet elektronike sta ga priredila avtorja.)