Arduino

**Arduino** je otvorena računalna i softverska platforma za kreiranje automatizovnaih elektronskih sklopova, i njihovo eventualno povezivanje s internetom tj. stvaranje interneta stvari.

Hardver se sastoji od jednostavnog otvorenog hardverskog dizajna Arduino ploče sa Atmel AVR procesorom i pratećim ulazno-izlaznim elementima, tačnije, na sebi poseduje mikrokontroler. Softver se sastoji od razvojnog okruženja koje čine standardni kompajler i bootloader koji se nalazi na samoj ploči.

Arduino hardver se programira koristeći programski jezik zasnovan na Wiring jeziku (sintaksa i biblioteke). U osnovi je sličan C programskom jeziku sa izvesnim pojednostavljenjima i izmenama. Integrisano razvojno okruženje je zasnovano na Processing-u.

## Hardver

Arduino ploču čine 8-bitni Atmel AVR mikrokontroler sa pripadajućim komponentama koje omogućavaju programiranje i povezivanje sa drugom elektronikom. Bitan aspekt Arduino projekta je standardizovan raspored konektora koji omogućava lako povezivanje sa dodatnim modulima, poznatijim kao štitovi. Ove dodatne module, štitove, poizvode razni proizvođači širom sveta. Zvanične Arduino ploče uglavnom koriste megaAvr seriju čipova, konkretno ATmega8, ATmega168, ATmega328, ATmega1280 i ATmega2560. Većina ploča poseduje 5V linearni naponski regulator i 16&nbsp;MHz kristalni oscilator (ili keramički rezonator u nekim verzijama). Arduino mikrokontroleri se isporučuju sa programiranim bootloader-om koji pojednostavljuje postupak prebacivanja prevedenog koda u fleš memoriju na čipu. Drugi mikrokontroleri obično zahtevaju zaseban programator.

Arduino i Arduino kompatibilne ploče koriste *štitove*, odnosno zasebne štampane ploče koje se montiraju na Arduino ploču i ostvaruju električni kontakt sa njom preko postojećih pinova-konektora. Ovi štitovi proširuju osnovne mogućnosti Arduino ploče i mogu da obavljaju razne funkcije, npr. kontrole motora, povezivanje senzora, bežične komunikacije itd.

## Softver
Arduino integrisano razvojno okruženje je aplikacija napisana u Java programskom jeziku. Kreirano je tako da uvede u programiranje učenike, studente i ostale početnike koji nisu upoznati sa načinom razvoja softvera. Sastoji se od uređivača koda sa mogućnostima kao što su označavanje koda, uparivanje zagrada, automatsko uvlačenje linija. Ovaj uređivač može da prevede kôd a zatim ga i prebaci u čip jednom komandom. U ovom slučaju nije potrebno podašavati parametre prevođenja koda ili pokretati programe iz komandne linije.

## Arduino ploče

Originalni Arduino hardver proizvodi italijanska kompanija Smart Projects. Neke od Arduino ploča je dizajnirala američka kompanija SparkFun Electronics. Za sada postoji ukupno trinaest zvaničnih Arduino ploča koje se proizvode u komercijalne svrhe:
# Serial Arduino, programira se preko DE-9 serijskog konektora i koristi ATmega8 mikrokontroler
# Arduino Extreme, sa USB interfejsom za programiranje i koristi ATmega8
# Arduino Mini, minijaturna Arduino verzija u SMD tehnologiji sa ATmega168
# Arduino Nano, najmanja, USB Arduino verzija, koristi površinski montirani ATmega168 (ATmega328 u novijim verzijama)
# LilyPad Arduino, minimalistički dizajnirana, koristi se za "elektroniku koja se nosi", koristi površinski montiran ATmega168
# Arduino NG, sa USB interfejsom za programiranje, koristi ATmega8
# Arduino NG plus, sa USB interfejsom za programiranje, koristi ATmega168
# Arduino Bluetooth, sa Bluetooth interfejsom za programiranje, koristi ATmega168
# Arduino Diecimila, sa USB interfejsom za programiranje, koristi ATmega168 u DIL28 kućištu
# Arduino Duemilanove ("2009"), koristi ATmega168 (ATmega328 za novije verzije) a napaja se preko USB/DC napajanja uz automatsko prebacivanje
# Arduino Mega, koristi površinski montiran ATmega1280 za dodatne ulaze i izlaze, kao i dodatnu memoriju
# Arduino Uno, koristi isti ATmega328 kao i Duemilanove model, ali umesto FTDI čipseta za USB, Uno koristi ATmega8U2 programiran kao serijski konvertor
# Arduino Mega2560, koristi površinski montiran ATmega2560, proširujući raspoloživu memoriju na 256&nbsp;kB.  Takođe sadrži i novi ATmega8U2 USB čipset

Dizajn hardvera se distribuira pod CC licencom i dostupan je na Arduino zvaničnom sajtu. Raspored komponenata kao i fajlovi neophodni za proizvodnju pojedinih verzija su takođe na raspolaganju. Izvorni kôd za integrisano razvojno okruženje i biblioteke su dostupne i distribuiraju se pod GPLv2 licencom.

## Upotreba

Interfejs za upravljanje je mikrokontroler. Na ulaze ovog kontrolera moguće je dovesti tastere, prekidače, gotove tastature, različite senzore (temperature, pritiska, protoka, IC senzore…), dok se izlazi mogu povezati na širok spektar izvršnih uređaja – LED diode, sijalice, zujalice, motore, ekrane za prikaz podataka… Proizveden je veliki broj gotovih dodatnih štitova (shields) i modula, a osim gotovih moguće je napraviti i sopstvene.

Arduino UNO je najbolja hardverska verzija za početnike. To je mikrokontrolerska ploča koja se bazira na ATMEGA328 integrisanom kolu. Ima 14 digitalnih I/O pinova, od kojih 6 mogu da se koriste kao PWM izlazi, 6 analognih ulaza, kristalni oscilator od 16&nbsp;MHz, USB konektor, priključak za napajanje, ICSP konektor i taster za resetovanje.

## Programiranje

Arduino integrisano razvojno okruženje dolazi sa C/C++ bibliotekom zvanom "Wiring" koja čini uobičajene ulazno-izlazne operacije veoma jednostavnim. Arduino programi se pišu u C/C++ programskom jeziku. Arduino programski kod sastoji se od 2 osnovna dela:

* setup() - funkcija koja se izvršava jednom na početku i služi za početna podešavanja
* loop() - funkcija koja se izvršava u petlji sve vreme dok se ne isključi ploča

Funkcija setup() predstavlja deo kojim se vrši podešavanje kontrolera (ulaza i izlaza, komunikacije sa računarom ili nekim drugim uređajem i slično), dok je loop() deo koda koji Arduino stalno ponavlja. Tipičan prvi program samo pali i gasi LED diodu i izgleda otprilike ovako:


```c
#define LED_PIN 13

void setup () {
    pinMode (LED_PIN, OUTPUT);     // definiši pin 13 kao digitalni izlaz
}

void loop () {
    digitalWrite (LED_PIN, HIGH);  // uključi LED
    delay (1000);                  // sačekaj jedan sekund (1000 milisekundi)
    digitalWrite (LED_PIN, LOW);   // isključi LED
    delay (1000);                  // sačekaj jedan sekund
}
```

Da bi ovaj kôd ispravno radio, anoda LED diode mora biti povezana na pin 13 a katoda na uzemljenje (u ovom slučaju negativni deo napajanja). Ovaj primer standardni C++ prevodilac ne bi smatrao ispravnim programom, međutim kada se izda naredba za prevođenje, ovom kodu se dodaje izvesno zaglavlje i `main()` funkcija čime postaje ispravan.

Arduino rzvojno okruženje koristi GNU toolchain i AVR Libc za prevođenje programa.

## Primena

S obzirom na veoma jednostavnu upotrebu i male, bezbedne napone napajanja, Arduino može poslužiti kao odlično nastavno sredstvo na časovima informatike ili tehničkog i informatičkog obrazovanja u višim razredima osnovne škole.
Potrebno je izabrati i povezati određene komponente, priključiti uređaj preko USB-a na računar, u programskom okruženju podesiti osnovne podatke (tip ploče, naziv serijskog porta preko kojeg se vrši komunikacija) i krenuti sa pisanjem programskih linija.
Arduino može biti korišćen i na časovima informatike i programiranja u gimnazijama i srednjim sručnim školama.

## Reference

## Vanjske veze

* Glavna stranica Arduino projekta 
* Rad sa senzorima 
* Kontrola Ultrazvučnog senzora HC-SR04 pomoću Arduino platforme