De Arduino is een opensource board / computerplatform dat is gebouwd rond de ATmega microcontroller familie
van Atmel. Het is een goedkoop board (tussen de 5 en de 30 euro maar gemiddeld 10 a 11 euro), er is veel code
voor beschikbaar, een goed en gratis ontwikkelplatform beschikbaar, veel documentatie en voorbeeld projecten online te vinden en er zijn veel (vaak goedkope) uitbreidingen en sensoren te koop. Dit maakt de Arduino een ideaal platform voor hobbyisten en doordat er zeer veel digitale en analoge invoer en uitvoer pinnen beschikbaar zijn met uiteenlopende functies zoals ADC, PWM, I2C en interrupts is het ook een uitermate geschikt board voor het aansturen van robots. Er zijn (ook redelijk goedkoop) diverse uitbreiding boards voor de Arduino boards te koop zoals schakelaars, lichtsensoren, bewegingsmeters, afstandsmeters, temperatuursensoren, RF en Infrarood afstandbedieningen, USB, Bluetooth en zelfs Wifi of een standaard seriële interface. Door middel van de standaard uitvoer pinnen en uitvoer boards kunt u bijvoorbeeld motoren, lampjes en beeldschermen aansturen. Deze extra invoer en uitvoer boardjes heten ook wel shields en hiervan wordt een ruim assortiment via Internet te koop aangeboden. De diverse Arduino boards zijn ook zeer geschikt voor het aansturen van Robots. Vriendelijke groet, Hein Pragt.
Verschillende uitvoeringen
Het Arduinoplatform kent verschillende uitvoeringen van de hardware rond de Atmega168 of Atmega328 van zeer klein tot zeer uitgebreid, van goedkoop to redelijk duur. De meest gebruikte modules die kant en klaar in Italië worden
gemaakt zijn: de Arduino UNO. Arduino, dit is de meeste bekende versie, de Arduino Mega 2560 met de Atmega 2560-chip, de Arduino Nano en de Arduino mini die zeer klein zijn. Daarnaast zijn er ook Arduino bouwpakketten te koop waarbij zelf alle componenten op een printplaat gesoldeerd moeten worden. Ook is er momenteel een ruim aanbod aan zogenaamde klonen, deze boards zijn (meestal volledig) gelijk aan de originele boards, soms met enkele uitbreiding en meestal een stuk goedkoper. De Arduino is opgebouwd rond de 8 bits microcontroller van de firma Atmel en de twee belangrijkste varianten zijn de Atmel 168 (16 k geheugen 8 bits) en de Atmel 328 (32 K geheugen 8 bits). Deze microcontroller bevat standaard: 14 digitale inputs of outputs of een combinatie daar van, 6 Analoge inputs, 16 of 32 kb flash geheugen, meestal een USB aansluiting en een I2C interface. Wanneer u begint met programmeren in een nieuwe programmeertaal begint u meestal met een eenvoudig “Hello world!” programma, bij de Arduino is het eerste programma een klein programma om een led te laten knipperen. Dit gaat bij de Arduino wel
heel erg eenvoudig omdat op de digitale pin 13 al een LED is aangesloten is. Wanneer u simpelweg een USB kabel aansluit en het voorbeeld programma knipt en plakt, ziet u na het compileren en het doorsturen van de code naar de Arduino dat de LED knippert. Zo eenvoudig is het!
Arduino programmeren

Om een Arduino te programmeren heeft u software nodig, namelijk de Arduino programmeeromgeving. Deze gratis ontwikkelomgeving kunt u hier downloaden , deze omgeving is geschikt voor Windows, Linux en Mac OS X. Wanneer u de computer via een USB kabel aangesloten heeft op het Arduino board kunt u rechtstreeks de programmacode overzetten naar de Arduino. U programmeert dus op uw eigen computer en “upload” de code naar het Arduino board. Het enige wat u hoeft te doen is in het menu het type board te selecteren dat u gebruikt en de poort waarop het board aangesloten is (wanneer er meerdere poorten zijn). Er is eigenlijk maar één programmeertaal populair voor de Arduino en dat is de programmeertaal C en C++. De programmeeromgeving inclusief een grote hoeveelheid standaard bibliotheken voor LCD, Servo, motoren, wifi e.d. is gratis te downloaden. De programmeertaal C is niet de meest eenvoudige programmeertaal, op deze site kunt u ook een eenvoudige beginnerscursus C en C++ vinden. De Arduino C veriant wijkt op een paar punten af van de C standaard en helaas zijn ook niet alle functies aanwezig in de meegeleverde bibliotheken. Het blijft natuurlijk een 8 bits processor en bijvoorbeeld de ondersteuning van double variabelen is een beetje gebrekkig. Daar waar een standaard C programma begint met een main() routine, bestaat een Arduino programma (vaak een schets, genoemd) bestaat uit twee programma blokken, de setup() en de loop(). Aan het begin van het programma staat de “void setup()” en in deze functie staat de initialisatie van het programma zoals initialisatie van I/O pinnen, initialisatie van software libraries en globale variabelen. De setup() functie wordt bij het opstarten van het programma één keer uitgevoerd door de Arduino. Daarna is de loop() functie aan de beurt, deze wordt eindeloos herhaald tot de stroom wordt uitgezet. Vanuit deze loop() functie kunt u weer andere functies aanroepen en zo kunt u een goed gestructureerd programma in elkaar bouwen.
Arduino Uno

De Arduino Uno (eigenlijk versie 1.0) is het basis microcontroller board die gebaseerd is op de ATmega328 processor. Het board heeft 14 digitale input / output pennen waarvan er 6 gebruikt kunnen worden als PWM outputs en 6 analoge inputs. De processor snelheid is 16 MHz en het board heeft een USB aansluiting, een voedinspanning plug, een ICSP header en een reset knop. De gangbare versie momenteel is revision 3. Dit board is meestal de referentie standaard voor alle ‘compatible’ versies van andere leveranciers.
De Arduino Uno kan een Atmega8, Atmega168, of Atmega328 processor bevatten, recente modellen gebruiken allemaal de ATmega328, de configuratie van aansluitpennen is identiek voor alle drie processors. De voedingsspanning kan geleverd worden via de USB kabel (let wel op de maximale stroom die deze kabel kan leveren) of via een externe spanningsbron. De minimale invoerspanning van de externe voeding is 7 volt en boven de 12 volt zal de spanningsregelaar erg warm worden. De aanbevolen spanning is dan ook tussen de 7 en 12 volt, een 9 volt batterij werkt ook prima. Elk van de 14 digitale aansluitpennen kan gebruikt worden als input of output waarbij de mode softwarematig ingesteld kan worden door middel van pinMode(). Ze werken op 5 Volt en kunnen maximaal 40 mA stroom per pin leveren. Ook kan er een softwarematig een internal pull-up weerstand ingeschakeld worden van 20-50 K Ohm. Sommige pennen hebben ook een dubbele functie: 0 en 1 RX en TX seriele verbinding, 2 en 3 externe interrupts, 3, 5, 6, 9, 10, en 11 kunnen PWM outputs zijn, 10, 11, 12 en 13 kunnen gebruikt worden voor SPI communicatie. Bij bijna elke Arduino zit er een led aan pin 13 en zit er vanaf de fabriek een blink programma ingebakken die deze led laat knipperen. A4 en A5 hebben een dubbel funtie als SDA en SCL pin voor I2C communicatie. Er kan softwarematig gekozen worden welke functie een aansluit pen heeft. Een van de voordelen van een Arduino Uno is dat de processor vaak in DIL uitvoering is en gewoon in een voetje zit en dus te vervangen is wanneer u de processor opgeblazen heeft. Dit is veel goedkoper dan een nieuw board kopen.
| Chip | ATmega328 16 Mhz |
| Voltage | 5 V uitvoering |
| Voltage raw | 7 – 12 Volt |
| Digitale pins | 14 (waarvan 6 PWM) |
| Analoge inputs | 6 |
| Stroom per pin | 40 mA |
| Afmeting | 53.4 mm x 68.6 mm |
| SRAM | 2 KB |
| EEPROM | 1 KB |
| Flash | 32 KB |
Arduino Uno versus Arduino Mega

Er zijn behoorlijk wat verschillen tussen de Arduino Uno en de Arduino Mega waarvan sommige verschillen voor de
hand liggen maar sommige verschillen zijn ook iets mee geniepig zoals pinnen op andere plekken (zoals I2C pinnen) en bijvoorbeeld andere mapping van interne registers voor bijvoorbeeld PWM frequentie en uitvoer pinnen. Maar de meeste van deze aanpassing zijn redelijk eenvoudig door te voeren waardoor de meeste Arduino Uno projecten ook werken op een Arduino Mega. Omgekeerd zal vaak wat moeilijker zijn omdat de Arduino Mega nu eenmaal meer functionaliteit heeft dan de Arduino Uno. Door het grote aantal I/O pinnen wordt de Arduino mega ook gebruikt in het Retroshield project om allerlei oude processoren te laten werken op een Arduino mega die dan als ram / rom en I/O emulator werkt.
Een duidelijk zichtbaar verschil is dus het aantal I/O pinnen, de Arduno Uno heeft 20 I/O pinnen en de Arduino Mega 70 I/O pinnen wat een behoorlijk verschil is. Het aantal analoge pinnen is ook redelijk groot, de Arduino Uno heeft er 6 en de Arduino Mega 16. Natuurlijk is het altijd mogelijk om met externe IC’s te multiplexen op de Arduino Uno maar dit vergt wel extra code en extra hardware. In dit opzicht is de Arduino Mega dus duidelijk in het voordeel. Ook het beschikbare geheugen is behoorlijk verschillend, de Arduino Uno heeft 32 KB flash geheugen (voor het programma), 2 KB SRAM (werkgeheugen) en 1 KB EEPROM, terwijl de Arduino Mega 256 KB flash geheugen, 8 KB SRAM geheugen en 4 KB EEPROM aan boord heeft.
De Arduino Mega heeft vier hardware seriële poorten tegenover één seriële poort voor de Uno, maar meestal is één ook voldoende. Maar bij het aansluiten van meerdere seriële apparaten kun de extra hardwarematige seriële poorten wel handig zijn. Ook is het mogelijk om bijvoorbeeld één seriële poort te gebruiken voor de applicatie en de andere om debugging informatie te verzamelen. Ook is het aantal PWM (Pulse Width Modulation) pinnen verschillend, de Arduino Mega heeft er 14 en de Arduino Uno 6 pinnen. Dit is zeer handig voor het aansturen van bijvoorbeeld motoren of servo’s. Het kan natuurlijk ook softwarematig via andere pinnen maar hardwarematig is toch stabieler en gebruikt veel minder kostbare CPU tijd.
Er zijn ook wel nadelen aan de Arduino Mega, het board is duurder dan de Arduino Uno (dubbel zoveel onderdelen) en de |CPU chip zit er op gesoldeerd terwijl deze bij de Arduino Uno in een voetje zit. Bij de Arduino Uno kun je dus de chip nog vervangen, bij de Arduino Mega is dit dus niet meer mogelijk en moet een compleet nieuw board gekocht worden. Ook is de meeste software (en hardware) nog ontwikkeld voor de Arduino Uno en zijn er vaak (kleine) aanpassingen nodig om het werkend te krijgen op een Arduino Mega board. Toch wint de Arduino Mega het voor mij van de Arduino Uno in mijn Robot project waar de uitbreidingen de e Arduino Mega heeft erg welkom zijn.
| Chip | ATmega1280 16 Mhz |
| Voltage | 5 V uitvoering |
| Voltage raw | 7 – 12 Volt |
| Digitale pins | 54 (waarvan 15 PWM) |
| Analoge inputs | 16 |
| Afmeting | 53 mm x 101 mm |
| SRAM | 8 KB |
| EEPROM | 4 KB |
| Flash | 128 KB |
*) ATmega2560 model heeft 256 KB flash geheugen!
Arduino Nano

De Arduino Nano is ook een heel klein Arduino boardje dat speciaal geschikt is om op een zogenaamd breadboard te gebruiken omdat de aansluitpinnen aan de onderkant zitten. Hierdoor kan het board eenvoudig in een breadboard geprikt worden. Het board is gebaseerd op de welbekende ATmega328 (Versie 3.x) of ATmega168 (Versie 2.x). Er zit geen voedingsplug op het board, wel voedinspanning pinnen. Het board kan gevoed worden door middel van de Mini-B USB aansluiting, 6 tot 12V spanning op de raw input of 5V gestabiliseerde voeding op pin 27. De spanningsbron zal automatisch geselecteerd worden uit de beste van de drie. De Arduino Nano kan worden geprogrammeerd via de ingebouwde USB poort. Het board kan met de standaard Arduino programmeer IDE geprogrameerd worden, u kunt het board en de poort eenvoudig in het dropdown menu selecteren. De mogelijkheden van de kleine board zijn erg groot maar het ontwerp is wel speciaal voor gebruik op een experimenteerboard (breadboard) gemaakt. Ik gebruik zelf vaak een Arduino Nano omdat deze zo compact is en ook in veel retro computer boards (zoals de Apple 1 replkica) gebruikt men de Arduino Nano als I/O emulator.
| Chip | ATmega328 / ATmega168 16 Mhz |
| Voltage | 5 V uitvoering |
| Voltage raw | 7 – 12 Volt |
| Digitale pins | 14 (waarvan 6 PWM) |
| Analoge inputs | 8 |
| Afmeting | 45 mm x 18 mm |
| SRAM | 1 KB (ATmega168) of 2 KB (ATmega328) |
| EEPROM | 512 bytes (ATmega168) of 1 KB (ATmega328) |
| Flash | 16 KB (ATmega168) or 32 KB (ATmega328) |
Arduino download en links
Hier staan een aantal externe links naar pagina’s en documenten die handig en nuttig zijn wanneer u begint met het Arduino board.