Arduino

Från Wikipedia
Hoppa till: navigering, sök
En Arduino med RS-232 seriell databuss (upp till vänster) och en Atmel ATmega8 mikrokontroller (svart, ner till höger). De 14 digitala in- och utgångarna kan ses mot överkanten, och 6 analoga ingångar i underkant.

Arduino är ett mikrokontrollerkort som är öppen hårdvara. Det är en ättling till den öppna utvecklingsplattformen Wire[1][2] ämnad 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 programmeringsspråk, kompilator och en bootloader som körs på kortet.[3]

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

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 har mottagit ett hedersomnämnande i Digital Communities vid 2006 års Prix Ars Electronica.[4][5]

Historia[redigera | redigera wikitext]

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

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.[8]

Arduino byggdes runt Wiringprojektet av Hernando Barragan. Wiring var Hernandos avhandlingsprojekt vid Interaction Design Institute Ivrea. Det var menat att vara en elektronisk version av programmeringsspråket Processing som använde vår utvecklingsmiljö och formgavs efter Processingsyntaxen. Det övervakades av mig och Massimo Banzi, en av Arduinos grundare. Jag tror inte Arduino skulle finnas om det inte varit för Wiring, och jag tror inte Wiring skulle funnits om det inte varit för Processing. Och jag är säker på att Processing definitvt inte skulle existera utan programmeringsspråket Design By Numbers och John Maeda.[1]

I maj 2011 beräknas mer än 300 000 Arduino vara i omlopp.[9] Felipe på baligena.com kallar Arduinon "nästa datorvåg för tjugoförsta århundradet".

Platform[redigera | redigera wikitext]

Hårdvara[redigera | redigera wikitext]

En officiell Arduino Duemilanove (rev 2009b).
En Gameduinosköld staplad ovanpå en Arduino Uno

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 get å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 använder inte 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[redigera | redigera wikitext]

Arduino Processor Frekvens Spänning Flash
kB
EEPROM
kB
SRAM
kB
Digitala I/O
pins
...med
PWM
Analoga
ingångar
USB
typ
Annan
I/O
Dimensioner Släppdatum
ADK ATmega2560 16 MHz 5 V 256 4 8 54 14 16 8U2 MAX3421E
USB Host
Mall:Convert/x
BT (Bluetooth) ATmega328 16 MHz 5 V 32 1 2 14 4 6 Ingen Bluegiga WT11 Bluetooth
Diecimila ATmega168 16 MHz 5 V 16 0.5 1 14 6 6 FTDI Mall:Convert/x
Due[10] AT91SAM3X8E 84 MHz 3.3 V 512 0[11] 96 54 12 12 16U2
+ native host[12]
2 DAC Mall:Convert/x
Duemilanove ATmega168/328P 16 MHz 5 V 16/32 0.5/1 1/2 14 6 6 FTDI Mall:Convert/x
Ethernet ATmega328 16 MHz 5 V 32 1 2 14 4 6 Ingen Wiznet Ethernet
Fio ATmega328P 8 MHz 3.3 V 32 1 2 14 6 8 Ingen Mall:Convert/x
Leonardo Atmega32u4 16 MHz 5 V 32 1 2 14 6 12 32u4 Mall:Convert/x
LilyPad ATmega168V or ATmega328V 8 MHz 2.7-5.5 V 16 0.5 1 14 6 6 Ingen Mall:Convert/in ⌀
Mega ATmega1280 16 MHz 5 V 128 4 8 54 14 16 FTDI Mall:Convert/x
Mega2560 ATmega2560 16 MHz 5 V 256 4 8 54 14 16 8U2/16U2 Mall:Convert/x
Nano ATmega168 or ATmega328 16 MHz 5 V 16/32 0.5/1 1/2 14 6 8 FTDI Mall:Convert/x
Uno ATmega328P 16 MHz 5 V 32 1 2 14 6 6 8U2/16U2 Mall:Convert/x
Micro ATmega32u4 16 MHz 5 V 32 1 2.5 20 7 12

Mjukvara[redigera | redigera wikitext]

Arduino Software
Arduino Uno logo.png

Arduino dani2.png

Utvecklare Arduino Software
Skriven i Java
Operativsystem Multiplattform
Licens LGPL or GPL license
Webbplats arduino.cc (gå till)

Arduinos IDE är en multiplattformsapplikation skriven i Java och är ett derivat från projekten Processing och Wiring. Det är ämnat att introducera programmering till de som inte är vana vid mjukvaruutveckling. Det inkluderar ett redigeringsverktyg med färgläggning av nyckelord i koden, markering av parenteser och klammrar 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, vilket kan göras om behov finnes.

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 initialisera variabler
  • loop() – en funktion som upprepat kallas medan Arduinon är påslagen
Den integrerade lysdioden på stift 13

Ett mycket enkelt program för en mikrokontroller blinkar en lysdiod. I en Arduinomiljö kan ett sådant program se ut som följer:[13]

#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 Arduinobord har en lysiod och en lastresistor mellan trettonde stiftet och jord vilket utgör ett behändigt test för enkla funktioner.[13] Eftersom ovanstående kod inte utgör giltig standard C kod kopierar IDEn 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. [14] [15]

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

Applikationer[redigera | redigera wikitext]

Officiell hårdvara[redigera | redigera wikitext]

Arduino LilyPad har designats att vara flexibel så att den ska kunna inkluderas i klädplagg.

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

Fjorton versioner av Arduinohårdvaran tillverkas kommersiellt till dags dato:[3]

  1. Serial Arduino, programmeras via DE-9 seriekoppling och använder en ATmega8.
  2. Arduino Extreme, med ett USB-interface för programmering av en ATmega8.
  3. Arduino Mini, en miniatyrversion av Arduino med en ytmonterad ATmega168.
  4. Arduino Nano, en ännu mindre Arduino med en ytmonterad ATmega168 eller, i nyare versioner, en ATmega328.
  5. LilyPad Arduino, a minimalistisk design för bärbara teknologi som använder en ytmonterad ATmega168.
  6. Arduino NG, med USB-interface för programmering av en ATmega8.
  7. Arduino NG plus, med USB-interface för programmering av en ATmega168.
  8. Arduino Bluetooth, med Bluetooth-interface för programmering av en ATmega168.
  9. Arduino Diecimila, med USB-interface för programmering av en ATmega168 i ett DIL-28paket
  10. Arduino Duemilanove ("2009"), med ett USB-interface för programmering av en ATmega168 eller, i nyare versioner, en ATmega328.
  11. Arduino Mega, med USB-interface för programmering av en ytmonterad ATmega1280 för utökat minne och I/O.[18]
  12. Arduino Uno, använder samma ATmega328 som nyare Duemilanove, men istället för chipsettet FTDI använder Uno en ATmega8U2 som serieconverterare.
  13. 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.
  14. 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[redigera | redigera wikitext]

Arduinohårdvarans referensdesigner distribueras via licensen Creative Commons Attribution Share-Alike 2.5 och finns tillgängliga på Arduinos webbplats. Layout och produktionsinformatino finns även för vissa modeller av korten. Källkoden för utvecklingsmiljön och biblioteken finns tillgängliga under GPLv2.[3]

Hårdvarutillbehör[redigera | redigera wikitext]

En prototypsköld monterad på en Arduino

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.[3]

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

Arduinokompatibla kort[redigera | redigera wikitext]

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" exklusivt används för den officiella produkten och inte för kopior och derivataprodukter. Den officiella policydokumentationen om användningen av namnet Arduino lägger stor vikt på att projektet är öppet och mycket väl kan implementera arbete från andra personer.[3] Det finns ett flertal Arduinokompatibla kommersiellt tillgängliga produkter som undviker namnet Arduino, men behåller ändelsen "-duino".[22]

Utvecklingsgruppen[redigera | redigera wikitext]

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.[23] Han talade även vid konferensen TEDGlobal 2012 där han gav exempel på ett flertal användningsområden för Arduinokort världen över.[24]

Se även[redigera | redigera wikitext]

Referenser[redigera | redigera wikitext]

Den här artikeln är helt eller delvis baserad på material från Engelska Wikipedia
  1. ^ [a b] Shiffman, Daniel (September 23, 2009). ”Interview with Casey Reas and Ben Fry”. Rhizome.org. http://rhizome.org/editorial/2009/sep/23/interview-with-casey-reas-and-ben-fry/. 
  2. ^ "Wiring". wiring.org.co
  3. ^ [a b c d e f] ”Project homepage”. arduino.cc. http://arduino.cc. 
  4. ^ ”Prix Ars Electronica 2006 — Digital Communities — ANERKENNUNGEN — listing” (på German). http://90.146.8.18/de/archives/prix_archive/prix_year_cat.asp?iProjectID=13638&iCategoryID=12420. Läst 18 februari 2009. 
  5. ^ ”Prix Ars Electronica 2006 — Digital Communities — ANERKENNUNGEN — description” (på German). http://90.146.8.18/de/archives/prix_archive/prix_projekt.asp?iProjectID=13789#. Läst 18 februari 2009. 
  6. ^ Lahart, Justin (2009-11-27). ”Taking an Open-Source Approach to Hardware”. The Wall Street Journal. http://online.wsj.com/article/SB10001424052748703499404574559960271468066.html. Läst 2012-03-24. 
  7. ^ ”View Name: Arduino”. Behind the Name. http://www.behindthename.com/name/arduino. Läst 15 september 2012. 
  8. ^ Reas, Casey; Fry, Ben (2010). Getting Started With Processing. Sebastopol: O'Reilly. ISBN 978-1-4493-7980-3 
  9. ^ Phillip Torrone (2011-05-12). ”Why Google Choosing Arduino Matters and Is This the End of “Made for iPod” (TM)?”. makezine.com. http://blog.makezine.com/archive/2011/05/why-google-choosing-arduino-matters-and-the-end-of-made-for-ipod-tm.html#comment-202890947. Läst 1 januari 2012. 
  10. ^ Chirgwin, Richard (2011-09-20). ”Arduino to add ARM board this year”. The Register. http://www.theregister.co.uk/2011/09/20/arduino_goes_arm/. Läst 20 september 2011. ”Arduino [...] showed off the new version in time for the New York Maker’s Faire, with a 96 MHz clock speed, 256 KB of flash memory, 50 KB of SRAM, five SPI buses, two I2C interfaces, five UARTs and 16 12-bit analog interfaces.” 
  11. ^ atmel.com
  12. ^ atmel.com
  13. ^ "Using Atmel Studio for Arduino development"
  14. ^ "Using AVR Studio for Arduino development"
  15. ^ Pearce, Joshua M. 2012. “Building Research Equipment with Free, Open-Source Hardware.Science 337 (6100): 1303–1304.open access
  16. ^ Smart Projects. Retrieved from http://smartprj.com/.
  17. ^ ”ArduinoBoardMega”. Arduino.cc. Arkiverad från originalet den 30 March 2009. http://web.archive.org/web/20090330012608/http://arduino.cc/en/Main/ArduinoBoardMega?. Läst 26 mars 2009. 
  18. ^ "Shields fuer Arduino wenig Aufwand Selbst Bauen". web.de.
  19. ^ "Arduino breadboard shield: US$10 & 10 mins". todbot.com.
  20. ^ Igoe, Tom (April 4, 2006). "Arduino Shields for Prototyping". tigoe.net
  21. ^ ”Freeduino Open Designs”. Freeduino.org. http://www.freeduino.org/freeduino_open_designs.html. Läst 3 mars 2008. 
  22. ^ "FLOSS Weekly Episode 61 - Arduino" (ljudfil, MP3). Twit.tv. March 21, 2009.
  23. ^ Banzi, Massimo. ”How Arduino is open-sourcing imagination”. TED. http://www.ted.com/talks/massimo_banzi_how_arduino_is_open_sourcing_imagination.html. 

Vidare läsning[redigera | redigera wikitext]

Externa länkar[redigera | redigera wikitext]