Arduino je open-source platforma koju je stvorio SmartProjects i bazirana je na Atmelovu mikrokontroleru atmega328p. Ideja je nastala 2005. godine u Italiji u kafiću Arduino, po kojem je i sama pločica dobila ime.
Zašto je postao toliko popularan?
Originalna Arduino pločica s RS323
Arduino je među prvim pločicama koje su na sebi imale Atmelov mikrokontroler i dio za komunikaciju s računalom, koja je ostvarena preko USB priključka, a prije toga se komunikacija vršila preko serijskog porta RS323. RS323 je „izumro“ još prije 10-ak godina te se nije više ugrađivao na prijenosna, ali ni na stolna računala.
Programiranje takvih mikrokontrolera zadavalo je glavobolju sve dok se nije pojavio Arduino s konverterom RS323-USB. Svojom cijenom od 20-ak eura za model UNO bio je poprilično prihvatljiv za entuzijaste. Open-source platforma tip je platforme u kojem je javno dostupna sva dokumentacija, od shematskih prikaza do programskih kodova.
Što se može s takvom pločicom?
Mogućnosti su neograničene. Dodavanjem raznih senzora možete zaprimati podatke iz okoline poput temperature, vlažnosti zraka, količine svjetlosti, udaljenosti itd. Također možete i upravljati raznim uređajima većih snaga poput rasvjetnih tijela i elektromotora pomoću releja.
Ali dodavanjem raznih shieldova, odnosno dodataka koji se spajaju direktnim dodavanjem na pločicu možete svoj Arduino povezati s vanjskim svijetom preko interneta ili GSM mreže. Također na njemu možete držati i manju web stranicu. WOW! Zbrojivši samo neke od opcija, čini se da je Arduino zbilja neograničen u mogućnostima.
Kako se programira?
Programiranje je poprilično jednostavno i radi se pomoću programa koji je napravila ekipa iz Arduina, a programski jezik malo je modificirana verzija jezika C. Sintaksa je poprilično jednostavna čak i ako se prvi put susrećete s njim. Brojni kodovi već su integrirani u samom programskom jeziku te ih lako možete upotrijebiti iz alatne trake, a odlični su za učenje i razumijevanje.
U tom segmentu ipak je za mrvicu teži od micro:bita jer on, iako se programira u Javi, ima mogućnost odabira blokovskog koda koji se slaže poput lego kockica.
Na početku programskog koda uključujemo biblioteke koje će nam trebati (eng. libraries). One se koriste kod nekih senzora i shieldova jer imaju već unaprijed definirane funkcije koje kasnije možemo pozvati bez potrebe da svaki put pišemo što one rade. Osim biblioteka, na početku koda definiraju se varijable.
Naprimjer, const int LED=2; varijablu LED definirat ćemo da nam to bude digitalni pin 2. Za analogni pin bismo dodali A ispred broja pina, što bi u ovom slučaju bilo A0.
Void loop: je petlja koja se konstantno izvršava u programu dok naš Arduino radi
„Void setup“ izvršava se samo jednom i to prilikom pokretanja programa. U njemu definiramo smjerove naših pinova; pinMode(LED,OUTPUT); ali također i definiramo početak komunikacije, koju može ostvariti na razne načine poput Bluetootha ili direktno s računalom.
„Void loop“ je petlja koja se konstantno izvršava u programu dok naš Arduino radi. Ako stavite ispitivanje vrijednosti analognog ulaza A1, program će to cijelo vrijeme izvršavati u beskonačnoj petlji. Kombinacijom fotootpornika i ledice možete napraviti jednostavan kod koji će ledicu paliti kada ne bude svjetlosti. A kako bi to izgledalo?
Verzije?
Postoje razni klonovi Arduina koji doslovno nemaju nikakve razlike jer su više-manje identično napravljeni te se čak programiraju iz istog programskog koda. Njihova je cijena manja 3-10 puta! Osječka ekipa iz e-radionice napravila je vlastitu verziju Arduina i nazvala ga Croduino.
Cijena je 100 kn za osnovni model i samim time postaje apsolutno prihvatljiva za sve. Iz Kine možete dobiti i za 25 kn, provjereno radi! Većina verzija Arduina pokreće s Atmelovim procesorom 328p, ali ako vam on nije dosta, postoji MEGA. S 54 digitalna ulaza/izlaza i procesorom Atmega2560, svakako će vas zadovoljiti.
Arduino Mega je dobra opcija za veće projekte jer nudi više od Una
Primjena:
Kao što smo već i naveli, mogućnostima nema granica. Prije nekoliko brojeva pokazali smo vam kako napraviti SmartHouse za par stotina kuna. Upravljati trošilima, primati podatke od senzora i sve to pomoću pametnog telefona. Budući da je Arduino open-source platforma, na internetu možete pronaći mnoštvo gotovih projekata. Automatizirano navodnjavanje biljaka, kućanski aparati, CNC strojevi itd. Ako ostanete bez ideje, ne brinite – sigurni smo da ćete na internetu pronaći nešto zanimljivo.
Tehničke specifikacije modela UNO:
Ulazni napon napajanja kreće se u rasponu 6-20 V, dok je radni napon 5 V. Pločica sadrži 14 digitalnih ulaza/izlaza od kojih je 6 PWM izlaza, dok je analognih ulaza/izlaza 6. Maksimalna struja na izlazu je 20 mA, što nije dovoljno da se pokrene relej, nego će se morati koristiti vanjsko napajanje kao i za većinu složenijih senzora.
Iako se navedeni Atmel vrti na 16 MHz uparen s 32Kb FLASH i 2Kb SRAM memorije, ne dajte da vas malene brojke zavaraju. Ovaj procesor može izvršavati i neke zahtjevnije stvarčice, pa i 500-tinjak linija koda. Za primjer ćemo vam dati našu pametnu kuću koju smo izradili prije nekoliko brojeva. Upravljanje rasvjetom i prikupljanje podataka iz senzora Bluetoothom su povezani s pametnim telefonom, a naravno da postoji još hrpa prostora za nadogradnju. Tko bi rekao!
Arduino: Biciklističko računalo sa mobilnom aplikacijom
Kako uz pomoć Arduina napraviti mjerač brzine koji će putem Bluetootha slati vrijednosti na pametni telefon s Androidom.
Pomoću Arduinova „mozga“, Atmelova mikrokontrolera, izradit ćemo pouzdan mjerač brzine koji se može koristiti na biciklima, ali i na motociklima.
U prethodnom broju Vidija pomoću micro:bita smo izradili mjerač brzine za bicikl. Takav mjerač baš i nije pretjerano pouzdan i poprilično je ograničen mogućnostima. Zašto? Prisjetimo se da micro:bit nema integriranu funkciju za brojanje vremena, što je velik minus. Arduino takve naredbe ima i time nam omogućuje brojne pogodnosti s kojima se nudi širok spektar mogućnosti.
Prisjetimo se načina rada mjerača brzine. Kao što smo učili u osnovnoj školi iz fizike, brzina je omjer prijeđenog puta u nekom vremenskom intervalu, a računa se pomoću formule v = s/t. Budući da u Arduinovu programskom jeziku imamo integriranu funkciju brojanja vremena, a prijeđeni nam je put opseg kotača na biciklu/motoru – problem je riješen!
Za vremenski interval uzet ćemo vrijeme potrebno da kotač napravi puni krug, a to ćemo ostvariti pomoću „reed switcha“ ili senzora magnetskog polja. Ako odaberemo senzor, poželjno ga je koristiti s prethodno ugrađenim komparatorom napona, koji će našem Arduinu slati digitalne vrijednosti i olakšati nam život umjesto da uspoređuje analogne vrijednosti koje mogu odstupati. Ili možemo naknadno ugraditi takav komparator napona.
Najosjetljivija komponenta na breadboardu je Red Switch jer ima kućište od stakla
Reed switch je često sićušni prozirni prekidač u obliku otpornika koji unutar sebe sadrži dvije fleksibilne provodljive niti koje se u prisustvu magnetskog polja privuku i zatvore strujni krug. Magnet je potrebno učvrstiti na žbice kotača kako bi prilikom okretanja magnet prošao u neposrednoj blizini senzora.
Programski kod: Inicijalizirat ćemo potrebne varijable, postaviti neke konstantne vrijednosti poput opsega kotača pomoću kojega ćemo računati brzinu iz relacije v=s/t.
U beskonačnoj petlji vrtjet ćemo programski kod koji će mjeriti brzinu između okretanja kotača, izračunavati brzinu i ispisivati je na mobilnoj aplikaciji. Reed switch će nam davati impuls kad god se kotač okrene za puni krug, i to digitalni impuls jer je s njime lakše raditi. Ako je opseg kotača unesen u metrima, a vrijeme mjerimo u sekundama, naša će brzina biti izražena u metrima po sekundi.
Kako bismo dobili što bolji utisak o brzini kretanja, našu brzinu pomnožit ćemo s 3,6 da bismo je izrazili u kilometrima po satu. Zašto 3,6? Budući da kilometar ima 1000 m, a 1 sat ima 3600 sekundi, dijeljenjem jedinica dobit ćemo navedenu konstantu.
Mobilna aplikacija: Mobilnu aplikaciju radit ćemo u nama već dobro poznatom Mit App Inventoru jer je poprilično jednostavan i u njemu se kod piše pomoću naredbi u obliku blokova. Aplikaciju ćemo raditi po uzoru na pametnu kuću koju smo napravili prije nekoliko brojeva, stoga nećemo detaljno objašnjavati čitav proces izrade aplikacije jer ga možete pronaći na Githubu.
Shematski prikaz mjerača brzine
Zaprimljene vrijednosti ispisuju se u labelima. Osim navedenih, postoje još dva dodatna labela, od kojih je jedan na početku, a drugi na kraju. Oni su skriveni jer se u njima upisuju prazne vrijednosti radi sinkronizacije podataka. Razmake ćemo definirati pomoću zareza. Zapis bi trebao izgledati ovako: ,47km/h,
Uparivanje mobitela i mjerača brzine odvija se samo prvi puta, dok se prilikom svakog korištenja aplikacija mora spojiti s Bluetooth modulom na mjeraču brzine.
Brzinu osvježavanja možemo postaviti vrlo nisko, svega 100 ms, jer naš programski kod nema vremenske odgode koje inače moramo dodavati kod većine senzora. Iako je naše rješenje napravljeno uz Bluetooth aplikaciju, umjesto nje možemo dodati i LCD zaslon na kojemu možemo također prikazivati tražene vrijednosti.
Izgled mobilne aplikacije
Dodatak:
Pomoću podataka o brzini možemo računati prijeđeni put, potrošenu energiju i slično. Sve se svodi na matematičke izračune u programskom kodu i nije potrebno dodavanje nikakvih senzora.
Napajanje:
Za vanjsko napajanje koristili smo AA baterije (3 x 1,5 V) spojene u seriju kako bi imale dovoljno električne energije. Za napajanje također možete koristiti i punjive baterije kako biste ih mogli višekratno koristiti.
Upozorenje:
Nemojte savijati nožice na reed switchu jer je kućiste načinjeno od stakla i vrlo lako može doci do pucanja koje će rezultirati totalnim uništenjem komponente.
Arduino: Vremenska stanica sa mobilnom aplikacijom
Vremenska stanica povezana s pametnim telefonom s Androidom na kojem će se ispisivati izmjerene vrijednosti.
Napretkom tehnologije došli smo do razdoblja u kojemu za nekoliko desetaka ili stotina kuna možete izraditi uređaje o kojima ste nekada sanjali. Vremenska stanica kao uređaj koji nam pruža informacije o trenutnom stanju klime i ispisuje na mobilnom telefonu nije više svemirska tehnologija.
Precizni senzori za mjerenje temperature i tlaka zraka renomiranih proizvođača poput Boscha imaju cijenu manju od čokolade, naprosto fascinantno. Ako nekoliko takvih senzorčića veličine nokta spojimo na naš Arduino, možemo dobiti poprilično preciznu vremensku stanicu, a dodavanjem Bluetooth modula možemo ostvariti ispisivanje očitanih vrijednosti na pametnom telefonu.
Zašto biste takve gotove uređaje platili hrpu love kada se možete malo poigrati i napraviti ih sami. Prije nekoliko brojeva pokazali smo kako se može napraviti pametna kuća pomoću Arduina i Bluetootha, a ovog ćemo puta vremensku stanicu napraviti na toj istoj platformi, uključujući kod za Arduino i mobilnu aplikaciju za Android.
Komponente: Za izradu vremenske stanice trebat ćemo Bluetooth modul HC-05, Arduino ili neku od sličnih inačica, senzor tlaka, temperature i vlažnosti zraka, a možemo dodati i neke detektore kiše, količine svjetlosti itd.
Izrada koda: Uz senzor tlaka i temperature zraka BMP180 trebat ćemo i njegovu biblioteku kako bismo mogli koristiti već gotove funkcije. Biblioteke možete naći posvuda. Mi smo se odlučili za e-radionicu jer smo kod njih kupili sve komponente, ali imaju i svoju verziju koda s hrvatskim komentarima, što je odlično za početnike jer su svi detalji objašnjeni.
Shematski prikaz spajanja komponenata s Arduinom
Senzor ima i mogućnost izračuna nadmorske visine – taj dio koda također ćemo pokazati kako biste ga unijeti po vašoj želji.
DHT11 je senzor vlažnosti zraka koji mi nećemo posebno dodavati jer ima poprilično spora očitanja koja iznose 1 s. Postoje poboljšane verzije tog senzora i alternative koje su možda i pametniji izbor. Biblioteke također možete pronaći na stranici e-radionice.
Što se tiče fotootpornika za određivanje količine svjetlosti, možemo koristiti i analogne vrijednosti čije ćemo granice definirati u kodu, ali u tom ćemo slučaju morati i reći koja je vrijednost prijelaz dana i noći, a to će potrajati jer uključuje brojna ispitivanja. Kako bismo si olakšali život, možemo koristiti fotootpornik s komparatorom napona koji već ima ugrađen potenciometar, čijim zakretanjem reguliramo intenzitet svjetlosti dovoljan za slanje impulsa prema Arduinu. Vrlo jednostavno jer u programskom kodu Arduina očitavamo digitalnu vrijednost tog ulaza koja može biti samo 0 ili 1.
Bluetooth je poprilično jednostavna komponenta i neće nam ništa dodatno trebati za nju osim otvaranja komunikacije i definiranje brzine prijenosa. Ime modula možemo promijeniti pristupom AT komandama, no to nećemo sada raditi jer smo već pokazali na primjeru pametne kuće. Na Githubu postoje detaljne upute.
Iako šaljemo samo četiri vrijednosti, mi ćemo ih odvojiti zarezima i na početku i na kraju dodati prazan dio. Zašto? To ćemo objasniti pri izradi aplikacije.
Pri svakom spajanju na vremensku stanicu bit će potrebno mobilnu aplikaciju spajati sa stanicom
Mobilna Aplikacija: Izradit ćemo je u nama već poznatom Mit App Inventoru. Program je poprilično jednostavan i koristi naredbe u obliku blokova. Našu aplikaciju za vremensku stanicu napravit ćemo na temelju pametne kuće koju smo prikazali prije nekoliko brojeva. Komunikacija će biti ostvarena pomoću Bluetootha i na aplikaciji će se ispisivati vrijednosti koje je senzor izmjerio.
Naravno, pri svakom spajanju na vremensku stanicu bit će potrebno aplikaciju spajati sa stanicom, ali uparivanje uređaja radi se samo jednom, i to prvi puta. Iako primamo samo četiri podatka, mi šaljemo šest vrijednosti koje ćemo odvojiti zarezom kako bi aplikacija znala koju vrijednost ispisati u kojem labelu. Zašto šest vrijednosti?
Četiri su nam željeni podaci, a od preostale dvije jednu dodajemo na početku, a drugu na kraju svih podataka. Zapis bi nam izgledao ovako: ,1013hPa,23›C,Dan,240m.n.v.,
Razlog dodavanju dvaju praznih mjesta jest sinkronizacija brzina slanja i osvježavanja aplikacije kako se ne bi miješale zaprimljene vrijednosti. Naravno, koristit ćemo šest labela, od kojih će prvi i zadnji biti nevidljivi jer se u njima neće ispisivati podaci.
Za napajanje vremenske stanice koristili smo pretvarač 230VAC-5VDC, koji se spaja na gradsku mrežu kako biste uvijek imali konstantan dovod električne energije jer je vremenska stanica fiksan uređaj. Također možete koristiti i AA baterije (3 x 1,5 V) spojene u seriju ako želite premještati tu stanicu na neke druge lokacije.
Napomena:
Prilikom prenošenja programskog koda na Arduino, Bluetooth RX i TX moraju biti odvojeni od Arduina! Mobilnu aplikaciju možete prebaciti s računala na mobilni uređaj pomoću USB kabela ili na neki drugi način. Prilikom instalacije aplikacije na Android, otvorit će se poruka koja će vas preusmjeriti u postavke uređaja, gdje morate dopustiti instalaciju aplikacija s nepoznatih izbora. Iako vaše računalo nije nepoznat izvor, mobilni uređaj sve aplikacije koje nisu s Play Storea ne prepoznaje kao pouzdane.