ARDUINO

Petak 20.3., ispred Raiffeisen Bank u Vukovarskoj oko 18:30 okupilo se 15 hooligana. Razočarati ću vas. Nismo išli pljačkati banku. ☺ Umjesto toga, Ivan Voras nas je odveo na Fakultet elektrotehnike i računarstva, svima znani FER.  Zamislite si petak navečer na FER-u (a ne idemo u KSET- Klub studenata elektrotehnike i računarstva), dakle stvarno probijamo okvire.

Nas 15 popelo se na 9. kat fakulteta i „zaposjelo“ učionicu. Ovaj put, iskustvo je upriličio nama svima znani hooligan Ivan Voras. ☺  Dr. sc. Ivan Voras, dipl. ing., rođen je 1981. godine u Slavonskom brodu, a trenutno živi u Zagrebu, gdje je zaposlen na Fakultetu elektrotehnike i računarstva. Doktorirao je 2011. godine, a tijekom studiranja sudjelovao je na programu Google Summer of Code. Dobio je nagradu Hrvatskog informatičkog zbora ‘Otvorena Informatika’ za doprinose u promicanju informatičke kulture u Hrvatskoj te srebrnu plaketu ‘Josip Lončar’ za naročito uspješnu doktorsku disertaciju i znanstveno-istraživački rad. Autor je 15-ak informatičkih projekata otvorenog koda te suradnik na međunarodnom projektu operacijskog sustava otvorenog koda FreeBSD. Dakle, zavidan životopis moram primijetiti. ☺

Naš dr.sc. hooligan odlučio je podijeliti dio svoga znanja sa nama i počastiti nas s jednom električnom hooliganštinom. ☺  Sjeli smo u klupe kao pravi hooligani, otvorili laptope i instalirali programe koji su nam bili potrebni. Nakon par poteškoća oko same instalacije programa (mora biti neki „zajeb“) uz konstantne povike:“ Ej, Ivane! Meni se neće instalirati! Ivane! Daj dođi vidjeti što mi je s laptopom! Meni ne radi!“ Kao u 1a…svi u jedan glas, svi bi odmah da Ivan dođe do njih, stvarno hooliganski. 😉 Ivan nam je strpljivo pomagao instalirati programe i nakon izvjesnog vremena mogao je započeti s prezentacijom električne hooliganštine, točnije strujom, elektronikom, programiranjem.

Kad pričamo o (električnoj) struji, pričamo o energiji koja se prenosi pomicanjem elektrona u

vodičima. Kad radimo nešto sa strujom, uvijek imamo električni krug. Elektrane (generatori, baterije, svi izvori) su u biti pumpe koje “guraju” elektrone kroz vodiče, i to rade u krugu. Mi smo radili s 5 V istosmjerne struje koja se smije dirati. Što je digitalna elektronika? Digitalno, signal ima 2 razine, a mi interpretiramo što te razine znače; Da ili Ne; Uključeno ili Isključeno; Istina ili Laž. Zašto digitalno? Efikasnije je prepoznati 2 razine u signalu nego više njih, a binarnim brojanjem možemo predstaviti što god želimo digitalnim signalom.

Programiranje je pisanje uputa računalu što i kako učiniti, a izvodi se u nekom od programskih jezika. Jedini programski jezik koji računalo može direktno izvršavati je mašinski jezik (mašinski kod ili binarni kod). U počecima računarstva programeri su pisali u mašinskom kodu, što je bilo vrlo komplicirano i zamorno. Sljedeći korak u razvoju računarskog programiranja ogleda se u upotrebi simboličkih jezika, poznatih pod zajedničkim nazivom asembler. Asemblerski jezici sastoje se od jednostavnih instrukcija koje se direktno i jednoznačno mogu prevesti u mašinski kod koji se direktno izvršava. Iako mnogo pogodnije i od mašinskog programiranja, asemblersko programiranje karakterizira velika količina posla koju programer mora obaviti, zbog činjenice da su operacije i dalje elementarne. Zbog toga su stručnjaci stvorili programske jezike višeg nivoa pomoću kojih se piše izvorni kod koji se u mašinski kod prevodi posredstvom specijalnih programa – prevodilaca čiji je zadatak da prevede kod višeg programskog jezika u mašinski kod tzv. interpreter i kompajler. Kompajler (prevodilac, programski prevodilac, eng. compiler) je računarski program koji čita program napisan u izvornom jeziku, te ga prevodi u ciljani (najčešće mašinski) jezik.

Ivan nam je osigurao sve potrebne komponente (da se izrazim informatički) matičnu ploču, releje, žice i sonar.

Započeli smo sa matičnom pločom. Matična ploča je glavna printana poluprovodnička ploča koja omogućava komunikaciju između ostalih hardverskih dijelova u računaru. Praktično, matična ploča je dom za ostale komponente. Ona direktno utiče na performanse računala shodno mogućnostima i kvaliteti ostalih dijelova na ploči. Programiramo procesor koji se nalazi na matičnoj ploči  i upravlja sa svim. U našem slučaju, programirali smo mikrokontroler Arduino, u jeziku koji je sličan Cu (i Javi).

Slika: Matična ploča –  Mikrokontroler “Arduino”

Najvažniji koncept u programiranju je da se stvari događaju jedna po jedna, odnosno programi se izvode jednu po jednu liniju. Unutar linije, stvari se događaju najčešće s lijeva na desno, kako se čitaju.

Prvo smo spojili USB kabl u Arduino, zatim USB kabl u laptop i pokrenuli driver (onaj koji smo instalirali na početku). U driver smo ukucali crveno napisano (prikazano u nastavku), pri čemu je bitno paziti na velika i mala slova kao i razmake.

// the setup routine runs once when you press reset:

void setup() {

// initialize the digital pin as an output.

pinMode(led, OUTPUT);

}

// the loop routine runs over and over again forever:

S programom smo se „poigrali“ na način da smo promijeni broj unutar zagrade delay(1000); što je promijenilo trajanje pauza prilikom žmiganja svijetla te smo kopirali cijeli kod označen vitičastom zagradom kako bi dobili složeniji ritam.

Uslijedilo je spajanje releja na Arduino. Relej je vrsta prekidača čije je stanje (uključeno ili isključeno) upravljano električnim nabojem, tj. posredstvom elektromagneta ili nekoga drugog mehanizma. Relej je sklopni aparat koji mjeri neku pogonsku veličinu (struju, napon, tlak, brzinu vrtnje, temperaturu, snagu itd.) te pri određenoj vrijednosti te veličine automatski zatvara ili otvara svoje kontakte. Osnovni mu je zadatak da preko svojih kontakata i pomoćnih strujnih krugova djeluje na druge uređaje radi upravljanja, mjerenja, signalizacije ili zaštite. Jednim digitalnim signalom (LOW / HIGH) otvaramo ili zatvaramo neki drugi strujni krug.

Prilikom spajanja releja na Arduino potrebno je sa žicama spojiti dijelove Arduina i releja kako je prikazano u nastavku.

Arduino:           Relej:

5V                      Vcc (napajanje releja)

GND                    Gnd

Digital 13                  In1 (naređujemo releju što da radi)

Nakon što smo spojili Arduino i relej, spojili smo USB kabl na računalo. Nakon spajanja na računalo relej se počeo „glasati“, donosno lupkati u zadanim razmacima delay(1000);. Na taj način funkcionira žmigavac na autu. ☺ Eto, izprogramirali smo žmigavac!!!

Na kraju smo odspojili USB od računala, ostavili žice na releju, a odspojili ih od Arduina. Uslijedilo je spajanje sonara. ☺ Sonar ili podvodni električni lokator je elektroakustični uređaj za traženje i otkrivanjem određivanje daljine, dubine, smjera i za identifikaciju podvodnih pokretnih i nepokretnih objekata (podmornica, mina, potopljenih brodova, podvodnih hridi, jata riba). Služi i za navigaciju, oceanografska istraživanja i podvodnu vezu. Rad se zasniva na osobinama prostiranja ultrazvučnih i zvučnih valova kroz vodu/zrak. On šalje zvučne impulse i odbijenu energiju prima kao jeku. Na osnovi izmjerenog vremenskog intervala određuje se istovremeno daljina, smjer, a kod nekih i dubina cilja.

Slika: Princip rada sonara

Prilikom spajanja sonara i Arduina sa žicama smo spojili navedene dijelove kako je prikazano u nastavku.

Sonar:             Arduino:

Vcc                   5V (napajanje za sonar)

Trig                  Digital 8

Echo                Digital 7

Gnd                  Gnd

Spojili smo USB na kompjuter pokrenuli smo program „Sonar“ i Arduino je počeo žmigati kako smo okretali sonar.

Nakon što smo spojili Arduino i sonar na sve smo spojili relej na isti način kao i ranije, ali ovaj put smo spoji napajanje preko breadboard-a. Breadboard ima koncept linije istog signala (vertikale na breadboardu)

Slika: Breadboard

Relej smo spojili na sljedeći način;

Relej

Vcc                5V od breadboarda

Gnd                Gnd od breadboarda

In1                  Digital 12 od Arduina

Nakon spajanja komponenti pokrenuli smo program „sonar relej“ u kojem je između ostalog upisan programski kod (naveden u nastavku) pomoću kojeg se ako je udaljenost između 10 i 30 cm, uključi relej.

Programski kod:

if (distance > 10 && distance < 30) {

digitalWrite(relayPin, LOW);

Serial.println(“Let there be Light!”);

} else {

digitalWrite(relayPin, HIGH);

}

Program također ispisuje udaljenost od predmeta X prema kojem je okrenut sonar. Sonar funkcionira na način da pošalje se signal „pin“ s jednog zvučnika, a  program iščitava vrijeme koje je potrebno da se zvuk vrati od predmeta X do drugog zvučnika sonara. Za potrebe izračuna udaljenosti sonara do predmeta X za ovaj model sonara kalibriranjem je dobiven broj 58,2. Dijeljenjem vremena povratka zvuka od predmeta X do sonara sa 58,2 dobijemo udaljenost od sonara do predmeta X i program nam taj broj ispisuje na ekranu. ☺ Ima jedan uvjet, koji je zadan u programu a to je da ako je udaljenost od predmeta veća od maksimalne udaljenost koju smo si zadali ili manja od zadane u našem slučaju je to bilo između 10 i 30 cm  Arduino neće svijetliti. Uglavnom relej je proizvodio zvuk, počeo je „lupkati“, a Arduino je svijetlio kada je udaljenost od predmeta bila između 10 i 30 cm. Inače senzori za parkiranje i vrata koja se sama otvaraju funkcioniraju na taj ili sličan način. ☺

Slika: Kako je to izgledalo

I eto, u par „koraka“ uz Ivanovu pomoć, uspjeli smo izprogramirati rad žmigavaca, senzora za parkiranje, pomičnih vrata.. i tko zna još čega sve. Primjene su razne. ☺

Na kraju se moram zahvaliti Ivanu na utrošenom vremenu (mjesec i pol priprema), uloženom trudu (izrada prezentacije, besplatna dvorana, nabava komponenti putem ebay-a) i prije svega želji da nam prenese dio znanja i „približi“ nam informatički svijet.

Hvala ti Voras!!! ☺

Do sljedećeg hooligiranja, pozdrav!

Kristina Bulešić

Fotografirali: David Mihoci (Mihoci Studios) & Ena Mihoci (Ena Photo Art)