V tem članku bomo spoznali Geekcreit UNO R3 starter KIT, komplet elektronskih komponent, ki so namenjene vsem, ki želijo zakorakati v svet programiranja mikrokontrolerjev. Sestavili bomo tudi enostavno elektronsko vezje in ga oživeli z ustreznim Arduino programom.
Avtorja: mag. Vladimir Mitrović, Robert Sedak
Če vam je to všeč vas vabimo, da spremljate to serijo, v kateri bomo postopno realizirali vse bolj zahtevne projekte in skozi njih osvajali različna znanja iz elektronike in programiranja.
Geekcreit komplet vsebuje približno 60 različnih komponent, s katerimi lahko napravimo marsikaj! Najprej sta tukaj Arduino UNO R3 klon z razvojnim shieldom, in velika ter majhna testna ploščica (slika 1a).
Komplet elektronskih komponent vsebuje po 10 uporov z upornostjo 220 Ω, 330 Ω, 1 kΩ in 10 kΩ, rdeče, zelene in modre LED-ice, različne senzorje, 4 tipke, potenciometer vrednosti 10 kΩ, aktiven in pasiven piskač (buzzer), visokofrekvenčni oddajnik s sprejemnikom in infrardeči daljinec (slika 1b).
Ta vsebina je samo za naročnike
Če želite odkleniti to vsebino, se naročite.
Za prikaz podatkov so predvideni 2×16 alfanumerični displej (LCD), 7-segmentni in matrični LED displeji. V kompletu se še nahajajo servo in koračni motor z ustrezno krmilno ploščico (slika 1c).
Končno, Geekcreit UNO R3 starter KIT vsebuje tudi komplet povezovalnih žic in konektorje, s katerimi se vse te komponente lahko povežejo v celoto brez potrebe po spajkanju. Priložen je tudi USB kabel za povezovanje z osebnim računalnikom (slika 1d).
Preden si zamislimo in realiziramo prvo programsko nalogo, se moramo malo bolj podrobno spoznati z Arduino konceptom. Na sliki 2 sta prikazani fotografiji originalne Arduino UNO R3 ploščice (levo) in UNO ploščice iz Geekcreit kompleta (v sredini). UNO ploščica je na pogled zelo podobna, funkcionalno pa je popolnoma identična originalni Arduino UNO ploščici, vsaj v obsegu, v katerem jo bomo mi uporabljali. Vsa vezja, katera bomo analizirati v tej seriji, kot tudi vse programske rešitve se lahko realizirajo tudi z Arduino UNO R3 in z UNO ploščico iz Geekcreit kompleta. Zaradi enostavnosti bomo v nadaljevanju uporabljali naziv Arduino UNO.
Najvažnejša komponenta na Arduino UNO ploščici je mikrokontroler ATmega328P, ki deluje na frekvenci 16 MHz in je primeren za realizacijo tudi zahtevnejših projektov. Njegovi priključki (pini) so vezani na konektorje na robu ploščice. Konektorji označeni s številkami 0 do 13 so digitalni vhodi in izhodi, konektorji A0 do A5 se lahko uporabljajo kot analogni ali digitalni vhodi ali kot digitalni izhodi.
Na ploščici se nahaja tudi USB konektor, ki omogoča povezovanje z osebnim računalnikom s pomočjo USB kabla. Ta povezava omogoča komunikacijo z osebnim računalnikom in programiranje mikrokontrolerja, za kar so na ploščici predvidena ustrezna vezja. Preko USB konektorja Arduino UNO dobi potrebno napetost napajanja, USB port osebnega računalnika je zaščiten pred preobremenitvijo s 500 mA varovalko.
Alternativno lahko Arduino UNO napajamo iz mrežnega adapterja preko Vin konektorja, za kar je na ploščici predviden napetostni stabilizator z izhodno napetostjo 5 V in maksimalnim izhodnim tokom okoli 1 A. Za pravilno delo napetostnega stabilizatorja mora vhodna napetost na Vin konektorju znašati v razponu od 6,5 do 12 V. Arduino UNO ima vgrajeno logiko, ki avtomatsko preklopi napajanje na Vin priključek, kadar je na njemu prisotna ustrezna napetost napajanja.
Razen konektorjev, na katere so vezani priključki mikrokontrolerja, se na robu Arduino UNO ploščice nahaja tudi letvica s konektorji, na katere so vezane skupna masa (GND, 0 V), vhodna napetost Vin (če je prisotna) in stabilizirani napetosti 5 V in 3,3 V. Preko teh konektorjev se lahko napajajo elementi in vezja, katere povezujemo z Arduino UNO ploščico.
Tukaj moramo še pokazati na RESET tipko (na fotografiji na sliki 1 je vidna zgoraj desno); uporabljamo jo v primeru, ko je potrebno “nasilno” prekiniti izvajanje programa in ga zagnati od začetka. Lahko nam pomaga tudi, če se pojavijo težave med vpisom programa v mikrokontroler. Isti učinek dosežemo tudi, če kratkotrajno spojimo konektorja RESET in GND.
Mikrokontroler ATmega328P lahko programiramo iz nekaj programskih okolij, in to preko ICSP konektorja (na fotografiji na sliki 2 se nahaja na spodnjem robu ploščice) ali, še bolj elegantno, preko USB konektorja. V tej seriji bomo za programiranje uporabljali Arduino IDE programsko okolje in programiranje preko USB konektorja (v Arduino žargonu, se je za programiranje mikrokontrolerja uveljavil naziv upload programa). Večina projektov, katere bomo razvijali, bo imela malo porabo, zato bo napajanje preko USB porta osebnega računalnika dovoljšnje; dopolnilno napajanje iz omrežnega adapterja bomo potrebovali samo takrat, ko bomo delali z motorji.
V shemah elektronskih vezij ne bomo uporabljali fotografije Arduino UNO ploščice, ampak njeno poenostavljeno risbo, prikazano na desni polovici slike 2. Razpored priključkov ustreza razporedu na realni ploščici, vendar so na risbi prikazani samo tisti priključki, katere bomo uporabljali!
Komponente bomo najbolj pogosto vezali na veliki testni ploščici (slika 3). Fotografija na sliki prikazuje, kako ploščica izgleda v resnici, risbo bomo uporabljali za ilustracijo razvrstitve in povezovanja komponent. Risba nam nazorno prikazuje kako so medsebojno povezane kontaktne luknjice na plošči. Od realne ploščice se razlikuje samo po manjšem številu stolpcev. Ploščica je razdeljena na štiri dele:
v dveh srednjih delih se nahaja skupno 126 stolpcev po pet medsebojno povezanih kontaktov,
v gornjem inspodnjem delu ploščice sta po dve vrsti po 50 medsebojno povezanih kontaktov.
Horizontalno povezane vrste kontaktov v zgornjem in spodnjem delu ploščice se najbolj pogosto uporablja za distribucijo napajalne napetosti, zato sta na ploščici označena s simboloma + in -; vendar jim lahko namenimo tudi drugačno vlogo. Opazili boste, da zgornje in spodnje vrstice + in – kontaktov niso medsebojno povezane, zato moramo to narediti sami, če to potrebujemo.
Mala testna ploščica ima samo srednji del s skupno 34 stolpci po pet medsebojno povezanih kontaktov.
Risba na sliki 4 ilustrira načine, na katere lahko postavljamo komponente na testno ploščico. Komponente na levem delu ploščice so dobro postavljene, nekatere od njih so tudi medsebojno povezane. Tako so npr. upor R1 in dioda D1 paralelno vezana, in nato so še v seriji z uporoma R3 in R4. Upor R2 je z enim koncem vezan na + pol napetosti napajanja, z drugim pa na anodo LED-ice L1. Katoda LED-ice L1 je s kratkostičnikom vezana na – pol, in tako je tokovni krog sklenjen in dioda bo zasvetila.
Kratkostičniki so na sliki prikazani kot debelejše črne črte z zadebeljenji na koncu. Lahko uporabljamo žice z igličastimi zaključki iz Geekcreit kompleta, vendar je enostavno napraviti tudi dvajset kratkostičnikov iz trde bakrene žice. Odlično bo služil odrezani priključek “rumenih” ogljenih uporov moči 0,25 W, medtem ko so priključki “modrih” metalnih uporov, kakšni so priloženi v Geekcreit kompletu, neuporabni za ta namen, ker so pretanki in zaradi tega se jih zelo lahko skrivi. Odrezane priključke na koncih zvijemo pod pravim kotom in tako dobimo praktične kratkostičnike, kot prikazanih na sliki 4 desno.
Instaliranje Arduino IDE
Arduino IDE je integrirano razvojno okolje za programiranje mikrokontrolerjev in mikroprocesorjev raznih družin. Arduino IDE podpira programske jezike C in C++ s svojimi zasebnimi pravili strukture programa. Pisan je v programskem jeziku Java, kar mu omogoča lažjo prenosljivost med operacijskimi sistemi. Dostopen je za Windows XP in novejše verzije ter Linux. Lahko se pa brezplačno sname s spletne strani: https://www.arduino.cc/en/Main/Software. Trenutno so dostopne verzije 1.8.19 in 2.0.3. Za potrebe te serije uporabljamo verzijo 1.8.10, vsi priloženi programi se lahko izvajajo tudi z novejšimi verzijami.
Med namestitvijo Arduino IDE namesti vso potrebno programsko podporo kot tudi driverje za komunikacijo s hardverskim programatorjem preko USB porta in softverskim programatorjem avrdude. Po zaključeni namestitvi je Arduino IDE potrebno konfigurirati tako, da zna komunicirati z Arduino UNO ploščico. Konfiguracija se izvede s pomočjo padajočih menijev “Tools->Board”, “Tools->Port” in “Tools->Programmer”. Slike 5, 6 in 7 prikazujejo izbor Arduino UNO ploščice, definiranje komunikacije s pomočjo USB porta in izbor softverskega programatorja “AVRISP mkII”.
V kolikor ste namestili Arduino IDE na Linux operacijskem sistemu, je potrebno vzeti v račun to, da Linux dodeljuje USB portom drugačne oznake. V Ubuntu Linux distribuciji je za iskanje oznake porta potrebno zagnati emulator terminala s pomočjo kombinacije tipk CTRL-ALT-T in izvršiti ukaz dmesg:
$ dmesg
….
[ 581.872302] usbserial: USB Serial support registered for ch341-uart
Iz primera zaključimo, da je polna pot dodeljenega porta /dev/ttyUSB3. Na sliki 8 lahko vidite izbor komunikacije s pomočjo USB porta 3.
Sedaj, ko smo spoznali programe in opremo, katero bomo uporabljali, je čas, da napišemo svoj prvi program.
1. programska naloga
LED-ico L1, vezano na Arduino UNO po shemi na sliki 9, je potrebno izmenično prižigati in ugašati, tako da vsako od teh stanj traja po eno sekundo.
Arduino rešitev (program Geekcreit_1.ino)
Program pisan v Arduino IDE je posebna inačica programskih jezikov C in C++ in ga imenujemo sketch (skica). Sestavljen je iz najmanj dveh obveznih funkcij: setup() in loop(). Funkcija setup() se izvrši samo enkrat, pri vklopu napajalne napetosti ali po resetu Arduino UNO ploščice, in v njej konfiguriramo priključke in definiramo komunikacijo z elektronskimi vezji spojenimi na Arduino UNO ploščico. Funkcija loop() je neskončna zanka, ki se izvršuje, dokler je Arduino UNO vklopljen. V sebi vsebuje programsko kodo, katero želimo izvrševati, lahko pa po potrebi kliče tudi dodatne funkcije. Obe funkciji ne vračata nobene vrednosti in se zato definirata kot funkciji vrste void.
Na sliki 9 vidimo, kako je pin 4 Arduino UNO ploščice vezan na anodo LED-ice L1, katoda LED-ice je vezana na upor, drugi konec tega upora je vezan na GND Arduino UNO ploščice.
Sedaj pristopamo k rešitvi programske naloge. Ker so vsi priključki “priročno” postavljeni kot digitalni vhodi, moramo v funkciji setup() pin 4 konfigurirati kot izhodnega:
void setup() {
pinMode(4, OUTPUT);
// definiraj kot izhodni pin
}
Ker smo pin 4 razglasili kot izhodnega, ima njegovo logično stanje direkten vpliv na LED-ico L1. To stanje bomo menjati v funkciji loop(), in zato se bo LED-ica izmenično vklapljala in izklapljala dokler je mikrokontroler vezan na napetost napajanja (ali dokler ne zbrišemo programa):
void loop() {
digitalWrite(4, HIGH);
// vključi LED L1
delay(1000);
// čakaj 1 s
digitalWrite(4, LOW);
// izključi LED L1
delay(1000);
// čakaj 1 s
}
Ukaz delay(1000) zadržuje izvrševanje programa 1000 milisekund, oziroma eno sekundo, da bi periodi “sveti” in “ne sveti” ustrezali zahtevi, postavljeni v programski nalogi.
Ko smo napisali program, moramo preveriti korektnost sintakse in ga prevesti v strojno kodo, ki jo mikrokontroler “razume” (kombinacija tipk Ctrl-R ali klik na gumb Verify) in ga nato prenesemo v mikrokontroler (kombinacija tipk Ctrl-U ali klik na gumb Upload). Če ne pritisnemo tipke Verify, se bo s pritiskom na tipko Upload sočasno zagnalo preverjanje sintakse, prevod programa in prenos programa v mikrokontroler, pod pogojem, da je sintaksa programa pravilna. Slika 10 prikazuje tipki Verify in Upload v programskem okolju.
Po uspešnem prenosu programa v mikrokontroler, se v spodnjem delu Arduino IDE okna pojavi sporočilo “Done uploading.” in kmalu se bo LED-ica L1 pričela izmenično prižigati in ugašati, kar nam je potrdilo, da smo naš program dobro napisali.
V naslednjem nadaljevanju bomo precej več programirali! Do branja!
Opomba: Program Geekcreit_1.ino lahko brezplačno dobite od uredništva revije Svet elektronike.
Spoštujemo vašo zasebnost in se zavezujemo, da bomo osebne podatke, pridobljene prek spletnega informacijskega sistema, skrbno varovali in jih brez vaše privolitve ne bomo posredoval tretji osebi oziroma jih uporabili v druge namene. Ker obstajajo v spletnem informacijskem sistemu določene povezave na druge, zunanje spletne strani, ki niso vezane na nas, ne prevzemamo nobene odgovornosti za zaščito podatkov na teh spletnih straneh.
Hkrati se zavezujemo, da bomo po svojih najboljših možnih močeh varovali podatke in zasebnost obiskovalcev spletne strani .
Da bi preprečili nepooblaščen dostop do pridobljenih podatkov ali njihovo razkritje, ohranili natančnost osebnih podatkov in zagotovili njihovo ustrezno uporabo, uporabljamo ustrezne tehnične in organizacijske postopke za zavarovanje podatkov, ki jih zbiramo.
Piškotki, ki so nujno potrebni za delovanje spletne strani
Nujno potrebne piškotke bomo na vašo napravo vedno nameščali, saj brez njih naša spletna stran ne deluje pravilno. Med nujno potrebne piškotke uvrščamo piškotke, ki vam omogočajo dostop do spletne strani, delovanje posameznih funkcionalnosti spletne strani in hkrati ne zbirajo analitičnih ali drugih podatkov o vašem obisku.
Ime piškotka
Trajanje
Opis
PHPSESSID
dokler ne zaprete brskalnika
Piškotek omogoča shranjevanje sej med posameznimi zahtevami znotraj sistema za upravljanje z vsebinami.
moove_gdpr_popup
1 leto
Shrani uporabnikove preference politike piškotkov
Če onemogočite ta piškotek, ne bomo mogli shraniti vaših nastavitev. To pomeni, da boste morali vsakič, ko obiščete to spletno mesto, ponovno omogočiti ali onemogočiti piškotke.
Piškotki tretjih oseb
Med piškotke tretjih oseb spadajo analitični in funkcijski piškotki, ki jih na vašo napravo nameščajo druga podjetja, kot so Facebook Inc. in Google Inc.. Ti piškotki vam omogočajo uporabo vtičnikov in funkcij na naši strani, ki so povezane z njihovimi družbenimi omrežji in drugimi platformami ter za sledenje vaši uporabi njihovih storitev.
Ime piškotka
Trajanje
Opis
_ga
2 leti
Google Analytics Zabeleži razlikovanje med uporabniki in sejami.
_gid
1 leto
Google Analytics Zabeleži novo sejo ali novega uporabnika.
_gat
10 min
Google Analytics piškotek se uporablja za omejevanje pogostosti zadetkov..
IDE
2 leti
Oglaševalski piškotek podjetja Google Inc. Ki nam omogoča prikazovanje oglasov.
Najprej omogočite strogo potrebne piškotke, da lahko shranimo vaše nastavitve!
Uporaba piškotkov na spletišču
Spletišče v brskalnik računalnika obiskovalca oziroma uporabnika odloži tako imenovani “piškotek”. Piškotki so tekstovne datoteke, ki se shranijo na uporabnikovem računalniku in omogočajo analize o uporabnikovem obisku, številu obiskov in kaj ga zanima v teh obiskih. V piškotku so osnovni podatki o uporabnikovem obisku določene spletne strani, npr. ime obiskovane spletne strani, ki jih opravi v spletišču. Vsebina piškotka se shrani v računalniku uporabnika v posebni mapi. Z dvakratnim klikom na datoteko dobimo podrobnejše informacije o obiskani spletni strani, datumu in uri obiska. Vsi ti podatki so shranjeni tudi pri upravljavcu spletne strani, ki jo uporabnik obiskuje.
Uporabnik lahko piškotke z določenimi nastavitvami briše, izključuje oziroma jih pogojno uporablja, a posledično uporabnik ne bo mogel uporabljati vseh funkcij spletišča v polni meri. V osnovi so brskalniki nastavljeni tako, da piškotke sprejemajo, zavračajo pa nastavljanje piškotkov, ki ne izvirajo iz področja, zapisanega v naslovni vrstici.