Arduino je razvojna ploščica, namenjena hitremu prototypingu enostavnejših sistemov na podlagi AVR mikrokontrolerjev. Same ploščice omogočajo uporabo Atmega8 do atmega32 mikroprocesorjev, ti se razlikujejo predvsem po količini programskega pomnilnika (Flash) in RAMa.
Mogoče najprej besedo o tem zakaj sploh Atmelovi AVR-ji. AVR so Risc mikroprocesorji, ki z majhnim naborom ukazov zmorejo delovati pri precej visoki frekvenci (MIPS). Poleg osnovnih ukazov imajo mnogi AVRji integrirane tudi precej uporabne podsisteme, kot so ADC, timerji, PWM, USART, USI.
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
Po majhnosti in integriranosti podsistemov so dokaj konkurenčni tudi Microchip-ovi PIC mikrokontrolerji. AVRje od njih loči predvsem enostavnost izdelave domačega serijskega programatorja (za LPT programator so zadosti le žice, za COM pa še par uporov in diod), ter njihova cena in dobavljivost v Sloveniji. Pri nabavi iz tujine so sicer cene AVR in PIC zelo podobne.
Prednost razvojnega sistema je poleg osnovnega napetostnega regulatorja za napajanje tudi že na osnovni ploščici prisoten RS232 krmilnik (nekateri imajo še rs232<->USB konverter) za komunikacijo in del programa – bootloader. Ta poskrbi, da lahko kar preko RS232 porta, brez drugega zunanjega programatorja v čip vpisujemo programsko kodo. To zelo poenostavi in pohitri postopek razvoja programske opreme. Enostavna dostopnost pinov oz. portov procesorja pa hkrati omogoči tudi preprost razvoj strojne opreme, predvsem kadar gre za standardno in ne preveč kompleksno nalogo.
Projekt Arduino pa vsebuje še compiler in prirejen programski jezik C. Gre za običajen C, ki so mu dodane nekatere strutkure in funkcije, ki uporabniku močno olajšajo samo delo z mikrokontrolerjem. Tu gre naprimer za funkcije, kot so nastavljenje konfiguracije portov, postavljanje izhodov, branje vhodov, uporaba interne periferije. Poleg teh pa so v paketu tudi funkcije, ki nam omogočajo lažjo komunikacijo z zunanjim svetom, npr. ps2 keyboard driver, LCD display driver in podobno…