Arduino

Arduino är ett mikrokontrollerkort som är öppen hårdvara. Det är utvecklat från den öppna utvecklingsplattformen Wire med målet att göra elektronikanvändning mer tillgänglig. Hårdvaran består av en enkel och öppen kretsdesign med en Atmel AVR och stöd för in- och utgångar. Mjukvarustödet består av ett programspråk, kompilator och en bootloader som körs på kortet.

Arduinohårdvaran programmeras med ett Wire-liknande språk som liknar C++ med vissa förenklingar och en Processingbaserad integrerad utvecklingsmiljö.

Nuvarande versioner kan köpas färdigbyggda, men hårdvaruspecifikationen finns tillgänglig för de som vill bygga en Arduino för hand.

Arduinoprojektet fick ett hedersomnämnande i Digital Communities vid 2006 års Prix Ars Electronica.

Historia 
Ett projekt påbörjades 2005 i Ivrea, Italien (där datorföretaget Olivetti har sitt högkvarter) med målet att skapa en enhet för att kontrollera elevbyggda projekt för en billig penning jämfört med andra tillgängliga prototypsystem. Grundarna Massimo Banzi och David Cuartielles namngav projektet efter Arduino av Ivrea, en lokalt viktig historisk gestalt. "Arduino" är också ett italienskt mansnamn med betydelsen "modig vän".

Arduinoprojektet är en förgrening av den öppna Wiringplattformen. Den colombianska programmeraren Hernando Barragán skapade Wiring som en avhandling vid Interaction Design Institute Ivrea under översikt av Massimo Banzi och Casey E.B. Reas. Wiring baserades på programmeringsspråket Processing och dess integrerade utvecklingsmiljö som skapades av Reas och Ben Fry.

I maj 2011 beräknades antalet tillverkade Arduinodatorer till mer än 300 000.
Felipe på baligena.com kallar Arduinon "nästa datorvåg för tjugoförsta århundradet".

Plattform

Hårdvara 

Ett Arduinokort består av en 8-bitars Atmel AVR mikrokontroller med ytterligare hårdvara för att möjliggöra programmering och inbyggnad i andra kretsar. En viktig del av Arduino är att kopplingar görs med standardiserade och enkelt tillgängliga kopplingspunkter, vilket låter utvecklare koppla in allehanda tredjepartsenheter och dessutom standardiserade moduler som kallas sköldar (eng. shields). Sköldmodulerna pluggas in till Arduinokorten via kopplingspinnarna. Vissa sköldar kommunicerar direkt med Arduinokortet medan andra sköldar får åtkomst via seriebussen I²C, vilket medger att många sköldar kan staplas och användas parallellt. Officiella Arduinokort använder megaAVR-serien, specifikt ATmega8, ATmega168, ATmega328, ATmega1280 och ATmega2560. En handfull andra processorer används av kompatibla kort. De flesta kort använder en 5 V spänningsregulator och en 16 MHz kristalloscilator (eller keramisk resonator i vissa implementationer), även om vissa designer (såsom Lilypad) körs på 8 MHz och inte använder spänningsregulator på grund av restriktioner på formfaktorn. Mikrokontrollern på Arduinokort har en bootladdare förinstallerad, vilket förenklar uppladdningen av kod till flashminnet på chippet, jämfört med andra typer av mikrokontrollers som i allmänhet kräver en hårdvaruprogrammerare.

Konceptuellt sett kommunicerar alla moduler som använder mjukvarustacken via RS-232 seriekommunikation. Arduinokort som använder seriekommunikation använder en enkel inverterare för att konvertera signaler från RS-232 till TTLnivåer. Nyare Arduinokort programmeras via USB och har implementerat ett USB-till-seriekommunikationschip liknande FTDI FT232. Vissa varianter, såsom Arduino Mini och en inofficiella Boarduino, använder en avtagbar USB-till-serieomvandlare, Bluetooth eller andra metoder.

Arduinokortet exponerar de flesta av mikrokontrollerns in- och utgångar för att underlätta koppling till andra kretsar. Diecimila, Duemilanove och Uno har 14 digitala in- och utgångar varav sex kan producera PWM-signaler och sex analoga ingångar. Dessa pinnar har monterats på kortets översida och använder standardiserade 0,1" (2,54 mm) avstånd.

Arduino Nano, Arduinokompatibla Bare Bones Board och Boarduino har stift på undersidan som tillåter att de kan användas på lödlösa kopplingsbrädor.

Arduinomodeller

Mjukvara 

Arduinos IDE är en multiplattformsapplikation skriven i Java och är utvecklat från projekten Processing och Wiring. En målsättning har varit att underlätta programmering för de som inte är vana vid mjukvaruutveckling. Utvecklingsmiljön inkluderar ett kodredigeringsverktyg med färgkodade nyckelord, markering av parenteser och klamrar och automatisk indentering av kodrader. Verktygen tillåter även kompilering och uppladdning med ett enda klick. Normalt sett behöver utvecklaren inte redigera makefiler eller använda kommandoradskommandon, men det kan göras vid behov.

Arduinos IDE levereras med ett C/C++-bibliotek som kallas Wiring (från projektet med samma namn), vilket förenklar in- och utmatningsoperationer mycket. Arduinoprogram skrivs i C/C++, men det är bara två funktioner som krävs för att kunna köra ett program:
 setup() – en funktion som körs en gång i början av programmet - valfritt, men kan användas för att initiera variabler
 loop() – en funktion som anropas kontinuerligt medan Arduinon är påslagen

I Arduinomiljön kan ett enkelt program som får en lysdiod att blinka se ut så här:
#define LED_PIN 13

void setup () {
    pinMode (LED_PIN, OUTPUT);     // Sätt upp stift 13 för digital utmatning
}

void loop () {
    digitalWrite (LED_PIN, HIGH);  // Slå på lysdioden
    delay (1000);                  // Vänta 1 sekund (1000 millisekunder)
    digitalWrite (LED_PIN, LOW);   // Slå av lysdioden
    delay (1000);                  // Vänta 1 sekund (1000 millisekunder)
}
De flesta Arduinokort har en lysdiod och en lastresistor mellan trettonde stiftet och jord vilket medger ett behändigt test för enkla funktioner. Eftersom ovanstående kod inte utgör giltig standard C kod kopierar IDE:n koden till en temporär fil där main()-funktionen och diverse headerfiler läggs till innan kompilering kan ske.

Arduinoverktygen använder utvecklingsverktyg från GNU-projektet och AVR Libc för kompilering. Programmet avrdude används för att ladda upp den kompilerade koden till Arduinokortet.

Eftersom Arduinoplattformen använder Atmels mikrokontrollers kan deras utvecklingsmiljö, AVR Studio eller Atmel Studio, också användas för utveckling.

I utbildningssyfte kan ett tredjepartsprogram kallat Miniblog användas (tillgängligt under en open source-licens).

Tillämpningar 
 Xoscillo - open-source oscilloskop
 Öppen hårdvara för vetenskaplig utrustning.

Officiell hårdvara

Den ursprungliga Arduinohårdvaran tillverkas av det italienska företaget Smart Projects.  Några kort med Arduinonamnet har designats av det amerikanska företaget SparkFun Electronics.

Fjorton versioner av Arduinohårdvaran har tillverkats kommersiellt till dags dato:
 Serial Arduino, programmeras via DE-9 seriekoppling och använder en ATmega8.
 Arduino Extreme, med ett USB-interface för programmering av en ATmega8.
 Arduino Mini, en miniatyrversion av Arduino med en ytmonterad ATmega168.
 Arduino Nano, en ännu mindre Arduino med en ytmonterad ATmega168 eller, i nyare versioner, en ATmega328.
 LilyPad Arduino, a minimalistisk design för bärbar teknologi som använder en ytmonterad ATmega168.
 Arduino NG, med USB-interface för programmering av en ATmega8.
 Arduino NG plus, med USB-interface för programmering av en ATmega168.
 Arduino Bluetooth, med Bluetooth-interface för programmering av en ATmega168.
 Arduino Diecimila, med USB-interface för programmering av en ATmega168 i ett DIL-28paket
 Arduino Duemilanove ("2009"), med ett USB-interface för programmering av en ATmega168 eller, i nyare versioner, en ATmega328.
 Arduino Mega, med USB-interface för programmering av en ytmonterad ATmega1280 för utökat minne och I/O.
 Arduino Uno, använder samma ATmega328 som nyare Duemilanove, men istället för chipsettet FTDI använder Uno en ATmega8U2 som seriekonverterare.
 Arduino Mega2560, använder en ytmonterad ATmega2560 med ett totalt minne på 256 kB.  Version 3 av kortet använder även ATmega16U2 som chipset för USB-kopplingen.
 Arduino Leonardo, använder ett ATmega32U4 chip som eliminerar behovet av USB-kopplingen för programmering och kan istället använda ett virtuellt tangentbord och mus.

Öppen hårdvara och öppen mjukvara 
Arduinohårdvarans referensdesigner distribueras under Creative Commons licens Attribution Share-Alike 2.5 och finns tillgängliga på Arduinos webbplats. Layout och produktionsinformation finns även för vissa modeller av korten. Källkoden för utvecklingsmiljön och biblioteken finns tillgängliga under GPLv2.

Hårdvarutillbehör  

Arduino och Arduinokompatibla kort använder sköldar, vilket är kretskort som monteras ovanpå en Arduino och kopplas in via förmonterade kopplingsplintar. Det finns många funktioner som dess sköldar erbjuder såsom Ethernetfunktion, motorkontroll och trådlöst nätverk.

En lista på Arduinokompatibla sköldar finns på Arduino Shield List. Ett antal sköldar kan även byggas för hand.

Arduinokompatibla kort 
Det finns en stor mängd Arduinokompatibla och Arduinoderiverade kort. Vissa av dem fungerar precis som en Arduino och kan användas istället för en Arduino. Många använder i stort sett samma design som Arduino men med ytterligare utmatningsmetoder, ofta för utbildningsändamål för att bygga små robotar och bilar. Andra har samma funktion men använder en annan formfaktor. Andra kort använder olika mikrokontrollers med varierande kompatibilitet som följd.

Emedan hårdvaru- och mjukvarudesign finns fritt tillgängliga under copyleftlicenser har utvecklarna begärt att namnet "Arduino" ska användas exklusivt för den officiella produkten och inte för kopior och derivatprodukter. Den officiella policydokumentationen om användningen av namnet Arduino lägger stor vikt vid att projektet är öppet och mycket väl kan implementera arbete från andra personer. Det finns ett flertal Arduinokompatibla kommersiellt tillgängliga produkter som undviker namnet Arduino, men behåller ändelsen "-duino".

Utvecklingsgruppen 
Arduinos kärngrupp av utvecklare består av Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis och Nicholas Zambetti. Massimo Banzi intervjuades den 21 mars 2009 (avsnitt 61) på FLOSS Weekly på nätverket TWiT.tv. Banzi diskuterade historien och målen med Arduinoprojektet. Han talade även vid konferensen TEDGlobal 2012 där han gav exempel på ett flertal användningsområden för Arduinokort världen över.

Referenser

Vidare läsning

Externa länkar 

Arduino project main page
Arduino project forum

Datorteknik
Mikroprocessorer