# Arduino

Pilt Arduino IDE-st, mis näitab LED-ide vilgutamise programmi
Arduino mikrokontrolleri suuruse võrdlus
**Arduino** on lihtne avatud lähtekoodiga ühe plaadi mikrokontroller. Arduino riistvara koosneb lihtsast vaba riistvara disainiga trükkplaadist, millel on enamasti Atmel AVR protsessor, ning mugavamaks kasutamiseks välja toodud sisend- ja väljundviigud. Tarkvara koosneb standardsest programmeerimiskeele kompilaatorist ja mikrokontrolleris olevast alglaadimise haldurist.

Arduinot programmeeritakse enamasti Wiring-keelel põhineva programmeerimiskeele abil, kasutades Processing-keskkonnal põhinevat integreeritud arenduskeskkonda. Arduino programmeerimiseks kasutatav keel sarnaneb C++ keelega, mõne muudatuse ja lihtsustusega.

Arduino riistvarast on palju versioone ja neid on võimalik osta kokkupandult. Neile, kes soovivad Arduino riistvara ise luua, on riistvara disaini informatsioon vabalt saadaval. Lisaks itaallaste loodud Arduinole on riistvarast olemas erinevate ühilduvustasemetega teiste tootjate variatsioone. Mõned neist on programmeeritavad tavapärase Arduino tarkvaraga.

Arduino projekt tõsteti esile 2006. aastal Prix Ars Electronica autasustamisel digitaalsete kogukondade kategoorias.

## Ajalugu

Projekt algas 2005. aastal Itaalia Ivrea linnas (arvutifirma Olivetti poolt), et luua seade, millega oleks võimalik sel ajal saadaval olevate süsteemidega võrreldes odavamalt ja lihtsalt kontrollida õpilaste ehitatud disainiprojekte. 2010. aasta veebruariks oli müüdud enam kui 120 000 Arduino plaati. Arduino loojad Massimo Banzi ja David Cuartielles nimetasid projekti Ivrea Arduini järgi, kes oli Ivrea kuulus ajalooline tegelane. Arduino on mehelik itaaliapärane eesnimi, mille tähendus on "tugev sõber".

Arduino loojad võtsid alguses kasutusele avatud lähtekoodiga Wiring platvormi ning hakkasid seda edasi arendama, luues sellega täiesti iseseisva projekti. Wiring loodi Colombia programmeerija ja kunstniku Hernando Barragáni magistritööna. Wiringu kaasloojaks oli Mehhikost pärit elektriinsener Diego Gonzalez Joven. Nende juhendajaks olid Massimo Banzi ja Casey Reas. Wiring põhineb Processingu programmeerimiskeelel, selle integreeritud arenduskeskkonna lõid Casey Reas ja Ben Fry.

## Platvorm

### Riistvara

Arduino plaat koosneb 8-bitisest Atmel AVR mikrokontrollerist koos täiendavate komponentidega, et lihtsustada programmeerimist ja ühilduvust teiste kiipidega. Arduino tähtsaks eripäraks on see, et tema ühendusviigud on kindlaksmääratud paigutusega, lubades mikrokontrolleriga plaati ühendada mitmesuguste vahetatavate lisandmoodulitega, mida nimetatakse kilpideks. Ametlikud Arduinod on kasutanud megaAVR seeria mikrokontrollereid, täpsemalt Atmega8, Atmega168, Atmega328, Atmega1280 ja Atmega2560. Lisaks on kasutatud üksikuid teise platvormiga mikrokontrollereid. Enamus plaate sisaldavad 5-voldist lineaarregulaatorit ja 16 MHz sagedusega kristallostsillaatorit, kuigi mõned disainid, nagu näiteks LilyPad, töötavad 8 MHz taktsagedusega ja ei sisalda plaadi disaini piirangute tõttu toitepinge regulaatorit. Arduino mikrokontrollerisse on eelprogrammeeritud alglaadimise haldur, mille tööks on lihtsustada programmide üleslaadimist mikrokontrolleris olevale välkmälule. Väga paljude teiste mikrokontrollerite korral vajatakse selle jaoks tavaliselt välist programmeerimisseadet.

Põhimõttelisel tasemel programmeeritakse kõik Arduino kontrollerid Arduino tarkvara kasutades RS-232 järjestikliidese kaudu, kuid konkreetne riistvaraline lahendus sõltub riistvara versioonist. Uuemad Arduino kontrollerid on programmeeritavad USB-siini vahendusel, kasutades plaatidele lisatud USB-järjestikliidese adapteri mikroskeeme (näiteks FTDI FT232). Mõned mudelid, nagu näiteks Arduino Mini ja mitteametlik Boarduino, kasutavad eemaldatavat USB-järjestikliidese plaati või kaablit, Bluetooth-ühendust või teisi meetodeid.

Suurem osa mikrokontrolleri sisend-väljundviikudest on Arduino kontrolleril eraldi välja toodud. Näiteks kontroller Diecimila ja uuem Duemilanove pakuvad 14 digitaalset sisend-väljundviiku, millest kuut saab kasutada pulsilaiuse modulatsiooniga signaalide genereerimiseks ja lisaks veel kuut analoogsisendit. Need viigud asuvad kontrolleriplaadi ülemisel poolel ning on esitatud standardsete 2,5 mm sammuga pesadena. Arduino Nano ja Arduinoga kokkusobivatel Bare Bones Boardi ja Boarduino kontrolleritel on plaadi alumisel küljel välja toodud 2,5 mm sammuga pistikud.

### Arduino kontrollerite mudelid

| Arduino | Protsessor | Flash KiB | EEPROM KiB | SRAM KiB | Digitaalne I/O viik |  PWMga viigud | Analoog sisend viik | USB-liidese tüüp | Mõõtmed tollides | Mõõtmed mm |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Diecimila  | ATmega168 | 16 | 0,5 | 1 | 14 | 6 | 6 | FTDI | 2,7 " × 2,1 " | 68,6 mm × 53,3 mm |
| Due | ATMEL SAM3U | 256 | 0 | 50 | 54 | 4 | 16 |  |  |  |
| Duemilanove  | ATmega168/328P | 16/32 | 0,5/1 | 1/2 | 14 | 6 | 6 | FTDI | 2,7 " × 2,1 " | 68,6 mm × 53,3 mm |
| Uno | ATmega328P | 32 | 1 | 2 | 14 | 6 | 6 | ATmega8U2 | 2,7 " × 2,1 " | 68,6 mm × 53,3 mm |
| Leonardo | Atmega32u4 | 32 | 1 | 2 | 14 | 6 | 12 | Atmega32u4 | 2,7 " × 2,1 " | 68,6 mm × 53,3 mm |
| Mega | ATmega1280 | 128 | 4 | 8 | 54 | 14 | 16 | FTDI | 4 " × 2,1 " | 101,6 mm × 53,3 mm |
| Mega2560 | ATmega2560 | 256 | 4 | 8 | 54 | 14 | 16 | ATmega8U2 | 4 " × 2,1 " | 101,6 mm × 53,3 mm |
| Fio | ATmega328P | 32 | 1 | 2 | 14 | 6 | 8 | Puudub | 1,6 " × 1,1 " | 40,6 mm × 27,9 mm |
| Nano | ATmega168 või ATmega328 | 16/32 | 0,5/1 | 1/2 | 14 | 6 | 8 | FTDI | 1,70 " × 0,73 " | 43 mm × 18 mm |
| LilyPad | ATmega168V või ATmega328V | 16 | 0,5 | 1 | 14 | 6 | 6 | Puudub | 2 " ⌀ | 50 mm ⌀ |

### Tarkvara

Arduino integreeritud programmeerimiskeskkond on tarkvaraplatvormist sõltumatu Javas kirjutatud rakendus, mis on tuletatud Processing-programmeerimiskeele ja Wiring projekti integreeritud programmeerimiskeskkondadest. Integreeritud programmeerimiskeskkond on disainitud nii, et seda saaksid kasutada tarkvaraarenduses vähekogenud inimesed. Keskkond sisaldab koodiredigeerijat, mille iseärasusteks on näiteks süntaksi esiletoomine ja sulgude kokkuviimine. Ka koodi kompileerimine ja mikrokontrolleri programmeerimine toimuvad ühe hiireklõpsuga.

Arduino programmeerimiskeskkonnaga on kaasas C/C++ teek Wiring, mis muudab paljud tavalised sisend-väljundoperatsioonid palju lihtsamaks. Arduino programmid on kirjutatud C/C++-s, kuid kasutajad peavad töötava programmi jaoks defineerima ainult kaks funktsiooni:

* setup() – funktsioon, mis töötab korra programmi alguses ning seadistab mikrokontrolleri parameetrid
* loop() – funktsioon, mis kutsutakse korduvalt esile, kuni plaat välja lülitatakse

Väga lihtne mikrokontrolleri programm võib lihtsalt vilgutada LED-i. Selline programm Arduino keskkonnas võib välja näha umbes niisugune:

```
# define LED\_PIN 13 // defineeri

void setup () {
 pinMode (LED\_PIN, OUTPUT); // sea viik 13 digitaalseks väljundiks
}

void loop () {
 digitalWrite (LED\_PIN, HIGH); // pane LED põlema
 delay (1000); // oota üks sekund (1000 millisekundit)
 digitalWrite (LED\_PIN, LOW); // kustuta LED
 delay (1000); // oota üks sekund
}

```

Selle koodi töötamiseks on vaja, et LED-i positiivne viik pool oleks ühendatud 13 viiguga ja LED-i negatiivne viik elektrilise maaga. See programm ei oleks standardse C++ kompilaatori jaoks sobilik programm. Kui kasutaja vajutab arenduskeskkonnas nuppu "Lae I/O plaadile", kirjutatakse koodi koopia ajutisse faili, lisatakse vajalikud päised ja väga lihtsa main()-funktsiooni lõppu, et muuta see C++ programmiks.

Arduino arenduskeskkond kasutab programmide kompileerimiseks GNU tööriistu ja AVR Libci teeke, programmide kirjutamiseks mikrokontrollerisse on kasutusel programm avrdude. Kuna Arduino platvorm kasutab Atmeli mikrokontrollereid, siis võib nende programmeerimiseks kasutada ka Atmeli arenduskeskkondi AVR Studio või Atmel Studio.

Hariduseesmärkideks on kasutatav teiste tootjate toodetud graafiline avatud koodi litsentsiga arenduskeskkond Minibloq.

## Ametlik riistvara

Arduino Lilypad
Arduino originaalriistvara toodab Itaalia firma Smart Projects. Mõned Arduino tootemärgiga plaadid on disainitud Ameerika firma SparkFun Electronics poolt.
Tänase päevani on toodetud tööstuslikult 13 Arduino riistvara versiooni.

1. Serial Arduino – programmeeritud kasudates DE-9 jadaühendust ja sisaldab ATmega8 mikrokontrollerit.
2. Arduino Extreme – USB-liidesega programmeerimiseks ja ATmega8 mikrokontrolleriga.
3. Arduino Mini – miniatuurne Arduino versioon, mis kasutab pindmonteeritult paigutatud ATmega168 mikrokontrollerit.
4. Arduino Nano – veel väiksem versioon kui Arduino Mini. USB-toitega Arduino, mis kasutab pindmonteeritult paigutatud Atmega168 (uuematel versioonidel ka ATmega328) mikrokontrollerit.
5. Lilypad Ardunio – minimaalse disainiga kaasaskantav rakendus, mis kasutab pindmonteeritult paigutatud ATmega168 mikrokontrollerit.
6. Arduino NG – USB-liides programmeerimiseks ja ATmega8 mikrokontroller.
7. Ardunio NG plus – USB-liides programmeerimiseks ja ATmega168 mikrokontroller.
8. Arduino Bluetooth – Bluetooth-liides programmeerimiseks ja ATmega168 mikrokontroller.
9. Arduino Diecimila – USB-liides ja kasutab ATmega168 mikrokontrollerit DIL28 pakendis.
10. Arduino Duemilanove – kasutab ATmega168 (ATmega328 uuemates versioonides) mikrokontrollerit ja on automaatselt valitava USB- või välise alalistoitega.
11. Ardunio Mega – kasutab pindmonteeritult paigutatud ATmega1280 mikrokontrollerit lisasisendite ja -väljundite ning suurema mälu jaoks.
12. Arduino Uno – kasutab Atmega328 ja ATmega8U2 seeria muundurina.
13. Arduino Mega2560 – kasutab pindmonteeritult paigutatud ATmega2560 ja ATmega8U2 mikrokontrollereid USB-liidesega.

## Arduinoga ühilduvad kontrollerid

Arduino platvormi suure populaarsuse ja avatud riistvara litsentsi tõttu on olemas palju erinevaid Arduinoga ühilduvaid ja Arduinost tuletatud plaate. Mõned on funktsionaalselt Arduinoga samaväärsed ja neid saab kasutada samades olukordades. Paljud neist on lihtsad Arduinod mõne igapäevase väljund-draiveriga, mida kasutatakse tihti koolitasemel hariduses, et lihtsustada väikeste robotite ehitamist. Mõned variatsioonid aga kasutavad täiesti teisi mikrokontrollereid erinevate ühilduvuse tasemetega.

Kuigi Arduino riistvara ja tarkvara disainid on tasuta saadaval ja kaetud Copylefti litsentsidega, siis Arduino arendajad on palunud, et nimi "Arduino" oleks ainuõiguslik ametlikule tootele ning seda ei kasutataks tuletatud teoste puhul ilma loata.

## Arendusmeeskond

Arduino arendusmeeskonnas on Massimo Banze, David Cuartielles, Tom Igoe, GInaluca Martino, David Mellis ja Nicholas Zambetti.

## Vaata ka

* Mikroprotsessor
* Mikrokiip

## Välislingid

* Arduino projekti koduleht
* Arduino The Documentary
* [ IMDB: Arduino the Documentary (2011)
* Mõni sõna Arduinost ja sellele koodi kirjutamisest