48 Povzetek V Sloveniji je po šolah precej razširjena uporaba merilnih instrumentov V ernier. Zara- di visoke cene in nekaterih omejitev je včasih primernejša uporaba drugih instrumen- tov. Eden takih je mikrokrmilnik Arduino, ki je v članku predstavljen skupaj s svojimi prednostmi in slabostmi. Abstract Schools across Slovenia mostly use V ernier measuring instruments. Because of their high price and certain limitations, it would sometimes be better to use other instru- ments. One such instrument is the Arduino microcontroller, which is presented in the article, including its advantages and drawbacks. Uvod V Sloveniji smo leta 2003 večino gimnazij in tehniških gimnazij opremili z računal- niškimi vmesniki V ernier, ki omogočajo zajemanje podatkov oziroma merjenje različ- nih fizikalnih količin [1] [2]. V ečina profesorjev naravoslovnih predmetov vmesnike V ernier dobro pozna, njihova uporaba je preprosta, izmerjeni podatki pa so dosegljivi v realnem času in prikazani na grafu ali v tabeli. T ak način zajemanja in prikazovan- ja podatkov je uporaben kot opora demonstracijskim poskusom pri pouku. Še več, natančnost je dovoljšnja, da lahko vmesnik V ernier uporabimo tudi pri natančnejših meritvah, na primer pri raziskovalnih nalogah ali raziskovalnih projektih. 1 Pri uporabi na terenu pa se hitro pokažejo njegove pomanjkljivosti. Cena vmesnika in senzorjev je visoka, zato opreme ne moremo pustiti brez nadzora. T udi napajanje preko baterije ima svoje omejitve. Pri projektu Vič gre v vesolje je bila ovira tudi masa (glej opombo 2). Za zmanjšanje mase smo senzorje razdrli in odstranili ohišje, s tem pa senzorji niso bili več primerni za poznejšo uporabo. Cena je bila previsoka. Pozneje smo z enako kakovostjo izvedli drugi izpust atmosferske sonde, ki je delovala s pomoč- jo mikrokrmilnika Arduino, stroški pa so bili približno desetkrat manjši. Kaj je Arduino? Arduino je odprtokodna mikrokrmilniška platforma, ki temelji na enostavni razvoj- ni ploščici z vhodno-izhodnimi konektorji in na uporabniku prijaznem razvojnem okolju (brezplačna programska oprema) [3]. Ker je Arduino odprtokodni sistem, so načrti za strojno opremo javni, tako da si zahtevnejši uporabnik lahko izdela lastno Uporaba mikrokrmilnika Arduino pri pouku fizike Timotej Maroševič Gimnazija Vič, Ljubljana 1 Na Gimnaziji Vič smo pred leti izvedli projekt Vič gre v vesolje, v okviru katerega smo izpustili atmosfersko sondo, ki je s pomočjo Vernierjeve opreme merila temperatu- ro, tlak, koncentracije nekaterih plinov in podobno. Arduino je odprtokodna mikrokrmilniška platforma, ki temelji na enostavni razvojni ploščici z vhodno-izhodnimi konektorji in na uporabniku prijaznem razvojnem okolju. Fizika v šoli 49 Didaktični prispevki razvojno ploščico. Cena razvojne ploščice (slika 1) je približno 20 evrov, seveda pa je ugodneje prek spleta kupiti še cenejšo kitajsko različico. 2 Katere so prednosti sistema Arduino? Arduino lahko deluje samostojno ali pa v povezavi z računal- nikom. T o omogoča učinkovito uporabo na terenu. Električna poraba je majhna, tako da dobro deluje tudi na baterije. Je zelo razširjen in odlično dokumentiran. Na spletu je mogoče naj- ti navodila za izvedbo preprostih in zapletenih primerov. Prav tako je na voljo veliko knjig za začetnike pa tudi za zahtevnejše uporabnike. 3 Preprosto iskanje besede »Arduino« v iskalniku Google vrne nepregledno množico zadetkov. Zelo verjetno je projekt, ki si ga boste zamislili, naredil že kdo pred vami in na spletu zanj napisal navodila. Baza uporabnikov je res neverjet- no velika. Plošča vsebuje mikroprocesor, nekaj spomina, komunikacijski priključek ter nekaj vhodno-izhodnih konektorjev in je pravza- prav pravi mali računalnik. 2 Cene na spletu se gibljejo med 5 in 10 USD. 3 Ena takih je knjiga z naslovom 30 Arduino projects for the evil genius. 4 Pomembno je razlikovati med ločljivostjo in natančnostjo senzorja. V konkretnem primeru ločljivost pomeni, da senzor zazna razliko v temperaturi najmanj 0,1 °C, natančnost pa, da se lahko izmerka dveh enakih termometrov razlikujeta za največ 0,5 °C. Slika 1: Najpreprostejša razvojna ploščica, Arduino Uno. [4] Klasični računalnik za delovanje potrebuje operacijski sistem, ki je lahko pri zajeman- ju meritev tudi v napoto, saj operacijski sistem zahteva svoj čas, senzorji, priključeni na vhodno-izhodne, enote pa zato niso ves čas na voljo. Arduino, podobno kot večina ostalih mikrokrmilnikov, nima operacijskega sistema. Program, ki ga napišemo, se shrani v spomin in se nato ves čas ponavlja, vrstico za vrstico. Rezultat je solidna hi- trost, meritve lahko brez težav zajemamo vsako milisekundo. T udi stabilnost sistema je solidna – Arduino sem doma uporabil za merjenje temperature akvarijske vode, prižiganje in ugašanje luči ter za prikazovanje informacij na zaslonu LCD, program pa je stabilno deloval 24 ur na dan več kot leto. Prednost dela z Arduinom je tudi brezplačna programska oprema, ki deluje na raz- ličnih operacijskih sistemih osebnega računalnika (Windows, Apple in Linux). Prog- ramska oprema vključuje okolje, v katerem programiramo v poenostavljenem jeziku C++, in se imenuje Arduino IDE (slika 2). Primerjajmo še cene. V ernierjev klasični termometer stane približno 36 USD, ločlji- vost senzorja je 0,1 °C, natančnost pa 0,5 °C. 4 Senzor DS18B20, ki je preprost za uporabo s pomočjo Arduina, ima podobne oziroma boljše karakteristike, ločljivost je 0,01 °C, natančnost pa ravno tako 0,5 °C. Cena takega senzorja je manj kot 1 USD. Najboljše pri Arduinu je, da nanj lahko poleg senzorjev preprosto priključimo tudi druge koristne pripomočke. Če želimo npr. vedeti, kolikšna je temperatura, ki jo me- rimo na terenu, lahko priključimo majhen zaslon LCD, na katerem se bodo izpisovali podatki. Če želimo poleg termometra še mešalo za vodo, priključimo npr. koračni mo- tor. Če želimo, da Arduino meri neko količino dalj časa brez našega nadzora, npr. en mesec, potrebujemo mesto za shranjevanje teh podatkov. Preprosto lahko priključimo kartico microSD in težava je odpravljena. Če želimo vedeti, kje natančno smo neko količino izmerili, lahko dodamo modul GPS. Če želimo, da bi bile meritve, izmerjene Arduino, podobno kot večina ostalih mikrokrmilnikov, nima operacijskega sistema. 50 Slika 2: Arduino IDE – okolje, v katerem programiramo mikrokrmilnike Arduino. s pomočjo Arduina, dostopne preko spletne strani, dodamo modul ethernet 5 in Arduino že lahko dos- topa do interneta. Branje meritev ali prižiganje luči preko pametnega telefona je tako preprosto. Doda- mo lahko na primer tudi modul bluetooth in že lah- ko upravljamo Arduino z razdalje nekaj 10 metrov. In še mnogo več. Katere so pomanjkljivosti sistema Arduino? Prav je, da razkrijemo še slabosti sistema Arduino. Kot sem že omenil, ploščica nima operacijskega sistema. Koda se izvaja linearno, vrstica za vrsti- co. T o pomeni, da je nemogoče odčitati meritev z 5 Pri Arduinu se ti dodatki imenujejo »shield«. Če želimo dodati zmožnost priklopa na splet, moramo dodati t. i. »Ethernet shield«. dveh senzorjev hkrati. Najprej se bo izvedel ukaz za branje prvega senzorja, nato še za branje drugega. Resnične večopravilnosti pri Arduinu torej ni. Ker pa se koda izvaja zelo hitro, je časovna razlika med izmerki morda nekaj mikrosekund. Običajno s tem ni težav. Druga slabost je jakost električnega toka, ki so ga sposobni prejemati ali oddajati vhodno-izhodni ko- nektorji. T a je omejena na 20 mA [5]. T ako je na primer nemogoče neposredno napajati motor ali kaj podobnega. V takem primeru moramo poiskati dru- ge rešitve. V najslabšem primeru se lahko zgodi, da bo mikroprocesor na ploščici pregorel. Če se to zgo- di, lahko zamenjamo zgolj mikroprocesor in ne ce- lotne ploščice. T aka napaka nas bo stala nekaj evrov. Fizika v šoli 51 Didaktični prispevki 6 Znani robotski sesalnik iRobot Roomba uporablja enak mikroprocesor kot Arduino. 7 Natančnejši izraz bi bil merilnik prevodnosti kože. Detektor laži meri poleg prevodnosti kože še temperaturo, srčni utrip in podobno. Uporaba pri pouku fizike Uporabo lahko v grobem razdelimo na dve področ- ji: uporabo pri pouku in uporabo pri raziskovalnih nalogah oziroma projektih. Zagotovo sistema ni tako preprosto uporabljati pri demonstracijskih poskusih kot sistem V ernier, saj se podatki ne izrisujejo sproti na grafu, čeprav je z ne- kaj programiranja mogoče tudi to. Morda imamo v razredu »zahtevnega dijaka«, ki ga je zaradi nadar- jenosti smiselno dodatno zaposliti. Iz izkušenj vem, da dijaki z veseljem uporabijo sistem Arduino in napišejo različne programe. Poleg tega so običajno cene nekajkrat nižje, tako da si morda v ekonomsko težkih časih lažje privoščimo želeni senzor za Ardui- no kot senzor za V ernier. Uporaba sistema Arduino pri raziskovalnih nalogah pa je naravnost idealna zaradi že omenjenih pred- nosti. Dijaki lahko sami ustvarijo na primer robo- ta, 6 3D-tiskalnik, lastni osciloskop ali detektor laži. 7 Vsekakor pa je cena tista, ki omogoča dostopnost ne le profesorjem oziroma šoli, temveč tudi dijakom samim. Zdaj se je treba le še opogumiti in narediti prve korake v svet programiranja mikrokrmilnikov. V seriji člankov jih bomo naredili skupaj in začeli z najpreprostejšimi, končali pa z zahtevnejšimi pri- meri. Prvi koraki v svet Arduina Za prvi preprost program potrebujemo: – osebni računalnik z nameščenim okoljem za prog- ramiranje – Arduino IDE, – osnovno mikrokrmilniško ploščico, na primer Ar- duino Uno in kabel USB. Želimo upravljati diodo LED, ki je že vgrajena v ploščico Arduino. V okolju Arduino IDE pod Da- toteka/Primeri/Osnove najdemo že narejen primer Blink. Odpremo program (slika 2). Vidimo, da je program dolg zgolj nekaj vrstic. Prve vrstice so namenjene komentarjem. V programskem okolju Arduino IDE se vse, kar se začne z // ali /*, razume kot komentar, zato se besedilo obarva sivo. Za podrobnosti pomena posameznih ukazov se lah- ko obrnemo na spletno stran https://www.arduino. cc/en/Reference/HomePage. Struktura programa je sicer vedno enaka. Prvi del se imenuje »void setup«, drugi pa »void loop«. Vse, kar je zapisano pri »void setup«, se izvede samo enkrat – takoj ko ploščico priključimo na napajanje oziroma vsakič, ko jo »resetiramo«. Ko se ta del kode izve- de, program preide v »void loop«. Vsa koda, ki je vpisana v delu »void loop«, se ponavlja v zanki. Ko program pride do konca, se spet vrne na prvo vrstico dela »void loop«. Skupaj analizirajmo posamezne dele kode, da bomo bolje razumeli delovanje programa. void setup() { // Inicializacija pinMode(13, OUTPUT); } Del »void setup« se izvede samo enkrat, na začet- ku. Ukaz pinMode ima dva argumenta. S prvim mikrokrmilniku povemo, kateremu konektorju (pinu) bomo dodeljevali funkcijo, z drugim pa, kaj pričakujemo od posameznega konektorja. Besedilo za poševnicama je komentar avtorja in ne vpliva na delovanje kode. Ker je na ploščici Arduino dioda LED že integrira- na na konektorju številka 13, smo zapisali, da želi- mo uporabiti pin 13 kot izhod (OUTPUT). Če bi želeli na tem konektorju brati napetost, bi morali vpisati INPUT. // del loop se vedno ponavlja void loop() { digitalWrite(13, HIGH); // prižgemo LED (HIGH pomeni 5 V napetosti) delay(1000); // čakamo eno se- kundo digitalWrite(13, LOW); // ugasnemo LED (Low pomeni 0 V napetosti) delay(1000); // čakamo eno se- kundo } V tem delu smo uporabili ukaz »digitalW rite«, ki ponovno potrebuje dva argumenta. Najprej pove- mo, kateri konektor želimo uporabljati (v našem primeru konektor številka 13) in kaj želimo. Ker želimo prižigati diodo LED, napišemo HIGH, ko naj bo dioda prižgana, in LOW , ko naj bo ugasnje- na. Ker se program hitro izvaja, smo vmes dodali še ukaz »delay(1000);«, kar pomeni, da se bo program v tej vrstici ustavil za 1000 milisekund oziroma za eno sekundo. Rezultat je, da se dioda LED prižiga in ugaša v sekundnih intervalih. 52 Slika 3: Zaslonska slika z odprtim programom Blink. Viri [1] Vzgoja in izobraževanje (2015). št. 2–3, letnik XLVI, str. 83. Ljubljana: Zavod RS za šolstvo. [2] http://www.zrss.si/HYPERLINK „http://www.zrss.si/digitalnaknjiznica/PKP-zbornik-prispevkov-za- kl-konf/“digitalnaknjiznica/PKP-zbornik-prispevkov-zakl-konf/, str. 166. (22. 10. 2015). [3] http://www.smakshop.si/smakrobot/mikrokrmilnik-arduino-uno.html, (6. 10. 2015). [4] https://virtuabotix-virtuabotixllc.netdna-ssl.com/core/wp-content/uploads/2013/03/arduino_ uno_r3_top.jpg, (22. 10. 2015). [5] https://www.arduino.cc/en/Main/ArduinoBoardUno, (22. 10. 2015).