Arduino Uno
Arduino is microcontroller board welke speciaal ontwikkeld is voor hobbyisten om schakelschema’s, programma’s, apparatuur etc. te ontwikkelen. Arduino is open-source en dat betekend dat de broncode voor iedereen inzichtelijk is en aan te passen is aan de hand van de functie die de Arduino moet uitvoeren. Middels een Arduino kunnen digitale en analoge signalen verwerkt worden op de manier zoals jij dat wilt. Een lampje aansturen, motor afstellen, GPRS tracker bouwen het kan allemaal met de Arduino. Voor iedereen die lekker wilt gaan hobbyen met stroom en computers is de Arduino een uitkomt. In deze post gaat we een kijkje nemen naar de Arduino en met name de Arduino Uno.
Hierboven kon je al lezen dat Arduino een microcontroller board is. Een microcontroller wordt vaak verward met een microprocessor. Toch is een microcontroller iets anders. Een microcontroller en een microprocessor zien er vrijwel hetzelfde uit en zijn beide verkrijgbaar in verschillende pin lay-out van 6 tot 100 pinnen. Het grote verschil zit hem erin dat een microprocessor alleen bestaat uit een processor en dus processing power bezit. Een microcontroller is een geheel van CPU (processor), RAM, ROM en andere systemen. Laten we een microcontroller voor het gemak vergelijken met een complete mini computer. De Arduino is dan ook een microcomputer welke geprogrammeerd kan worden om een specifieke taak uit te voeren.
Arduino Terminologie
Als je aan de slag gaat met de Arduino kom je al snel een aantal termen tegen. Dus, “without further ado”, hierbij alvast een paar veelgehoorde Arduino termen:
- IDE – Computerapplicatie waarmee Arduino geprogrammeerd wordt (C-based codering)
- Kit – Een kit is een collectie van onderdelen welke tot 1 geheel gemaakt moet worden maar waarvan de onderdelen separaat verpakt zijn en dus nog door de gebruiker aan elkaar gemaakt moeten worden
- Pin – Een aansluiting op de Arduino of op een component waar een draad verbonden kan worden. Een pin kan zowel mannelijk (pin) als vrouwelijk (gat) zijn.
- Shield – Een shield is een extensieboard welke verschillende sensoren en modules samenvoegt op 1 printplaat. Een Shield is vaak toepasbaar op 1 type Arduino
- Sketch – Een “sketch” is het programma welke in IDE ontwikkeld is voor de Arduino
Soortgelijke Boards
Arduino is medio 2004 opgericht door een team techneuten onder leiding van Massimo Banzi. Arduino is daarmee een Italiaanse uitvinding met als gedachtegoed een goedkoop en eenvoudig open-source board te maken. Uiteraard zijn ze daarin met vlag en wimpel geslaagd. Een van de eerste Arduino’s was de Arduino RS232. Andere bekende Arduino boards zijn de Mini, Nano, Mega en uiteraard de Uno. Succesvolle producten blijven vaak niet alleen op de markt en worden al snel nagemaakt. Dit noemen we ook wel Arduino clones. Er zijn clones welke vaak compatible zijn met de Arduino omdat deze vaak eenzelfde layout gebruiken en een open-source opzet hebben. Daarnaast voegen Arduino clones vaak wat extra’s toe. Mooie Arduino clones zijn o.a. de Diavolino, Freeduino en de Boarduino. Wat uiteraard opvalt is de “duino” in deze namen. Er zijn echter ook Arduino clones die geen “duino” in de naam hebben en meestal iets meer afwijken van de Arduino boards doordat ze niet alleen extra features hebben maar vaak ook kleiner zijn, andere componenten kunnen aansturen etc. Een van deze boards is de “Teensy”. De Teensy is een hele klein USB-gebaseerd microcontroller, in een zeer kleine footprint. Teensy boards zijn vaak iets krachtige en er zijn ontzettend veel add-ons voor te krijgen. Veel sketches ontwikkeld voor een Arduino werken ook op een Teensy. ExtraCore boards vallen op door hun zeer kleine formaat waardoor ze gemakkelijk in de kleinste ruimtes weg te werken zijn. Sparkfun is een bedrijf welke veel Arduino shields maakt maar soms ook hun eigen boards zoals de SparkFun RedBoard. Owja… kijk ook eens naar de Spectacle boards. Spectacle boards zijn gemaakt voor het gemak. Programmeren en aansluiten is dus nog makkelijker gemaakt. Deze boards zijn dus ideaal voor iemand die gaat voor het resultaat en niet de weg ernaartoe.
Er is heel veel keuze aan boards en additionele opties. Voor iedereen die net begint is een Arduino Uno een heel erg leuk board met ontzettend veel mogelijkheden. Laten we eens wat beter inzoomen op de Arduino Uno.
Arduino Uno
De Arduino Uno is al een tijdje op de markt en niet zonder succes. Sterker nog, de Uno is zo succesvol dat er een 2e en 3e revisie gemaakt zijn. De Arduino Uno R3 ziet er als volgt uit en is slechts 68,6 mm lang en 53,4 mm breed.
De Arduino Uno is het best gedocumenteerde board en alleen daarom al ideaal voor iedere starter. De Arduino Uno R3 is voorzien van een ATmega328P microcontroller. De ATmega328P is opgezet volgens de AVR enhanced RISC architectuur. De ATmega328P heeft een 8-bit CMOS (Complementary Metal Oxide Semiconductor) waarmee optimale processingsnelheden gehaald kunnen worden tegen een geringe power consumptie. De ATmega328P haalt 1 MIPS (Millions of Instructions Per Second) per MHz. Deze ATmega328P kent 131 instructies, 16 MHz kloksnelheid, 32 KByte programmeerbaar flash geheugen, 1 KByte EEPROM, en 2 KByte intern SRAM. Naast de microcontroller is de Arduino Uno voorzien van 14 digitale pinnen waarvan 6 PWM (Pulse-Width Modulation) ondersteunen, 6 analoge pinnen. De Uno R3 wordt gevoed en geprogrammeerd middels een USB kabel of alleen gevoed met een externe power supply van 7-12 volt.
Als we het Uno R3 board beter bekijken zien we het volgende:
- USB Plug – Langst deze aansluiting wordt de Arduino gevoed en kan deze geprogrammeerd worden.
- External Power Supply – Dit is een externe power supply voor remote projecten die niet bij je computer plaatsvinden. Er zijn adapters die je kunt kopen, verloopstukjes voor 9X batterijen en zelfs verloopjes naar AA accu’s (met meestal 6 batterijen). Deze AA accu’s hebben de voorkeur boven de 9V verloopjes omdat deze vaak krachtiger zijn (meer mAh) en dus langer mee gaan.
- 16 MHz Crystal – Dit kristal fungeert als een oscillator, dus als iets dat oscillatie creëert (heen en weer slingert). In dit geval hebben we het dus over het heen en weer switchen van spanningen. Een Oscilator kan meerdere soorten golven creëren waaronder sinwaves, vierkantgolf, trianglegolf etc. Oscillators worden altijd gebruikt in elektrische ontwerpen, maar worden meestal gebruikt voor het genereren van radiogolven, toongenerators, het genereren van tellers om de trackingtijd te behouden en het genereren van kloksignalen om de snelheid van de digitale processoren te behouden. Arduino-kristallen worden gebruikt tijdsproblemen te verhelpen, bijvoorbeeld als je een project bouwt dat een schakelaar uitschakelt en na 15 minuten weer inschakeld en schakelaar B, C & D één voor één aanzet met een stap van 20 minuten. We kunnen Arduino-software gebruiken om Arduino te programmeren om dat te doen, maar de Arduino moet de tijd berekenen. Het Arduino kristal welke in de Uno gebruikt wordt is een 16MHz kristal. Dit kristal heeft dus een frequentie van 16.000.000 Hertz en kan dus 16 miljoen cycli per seconde maken. Met behulp van dit concept kan de Arduino tijd berekenen.
- 3.3 Voltage Regulator – Deze regulator zorgt ervoor dat het input voltage (5V bij USB en 7-12V met external power supply) wordt teruggeschroefd naar 3.3 volt voor o.a. de 3.3 volt powerpin.
- Atmel ATmega328P Microcontroller – Dit is de Arduino microcontroller. Zie voorgaande beschrijving voor meer info.
- In-Circuit Serial Programmer – Deze pinnen zijn voor het programmeren van de ATmega328P microcontroller. Deze staan direct in verbinding met de microcontroller. Normaliter zal de input gecontroleerd worden door de bootloader (welke ook aan te passen is) maar via deze pinnen zou direct de ATmega328P microcontroller geprogrammeerd kunnen worden.
- USB to Serial IC – Converteert digitale input naar seriële input.
- RX / TX Leds – Deze ledjes branden wanneer er lees (Rx) of schrijf (Tx) activiteit plaats vindt. Boven deze 2 leds bevindt zich nog een L ledje. Dit led lampje kun je besturen middels een sketch. Het L led lampje is verbonden met pin 13.
- analogReference Power Pins – Deze pinnen zijn de In-Circuit Serial Programmer voor de USB interface. Met deze pinnen kan de USB interface geprogrammeerd worden.
- Reset Button – De reset button is feitelijk hetzelfde als de stroom van het board afhalen en er opnieuw opzetten. Het start de Arduino en je programma opnieuw.
PWM – Pulse-Width Modulation
Voor we zo meteen doorgaan met misschien wel het interessantste onderdeel van de Arduino, namelijk de pin lay-out, is het zinvol om eerst te begrijpen wat PWM ofwel “Pulse-Width Modulation” betekend.
PWM is een techniek om gemiddelde spanning te regelen tussen de 0 en 5 volt. Digitale besturing wordt gebruikt om een blokgolf te maken, een signaal dat wordt in- en uitgeschakeld. Dit signaal wordt verdeeld in een AAN en een UIT blok waarvan de frequentie gelijk blijft. Als het UIT blok de volledige frequentiepuls (breedte van het blok) bevat dan staat deze gelijk aan 0 volt (en de waarde 0) en als het AAN blok de gehele frequentiepuls bevat dan staat dit gelijk aan 5 volt (en de waarde 255). Met PWM wordt het mogelijk om b.v. een ledje te dimmen en niet alleen aan of uit te schakelen. In het Nederlands noemen we deze techniek “pulsbreedtemodulatie”.
Pinnen die op het Arduino board aangegeven zijn met een tilde (~) bieden PWN ondersteuning.
Arduino Uno Pin Layout
De belangrijkste componenten op het Arduino board zijn natuurlijk de pinnen (female). In totaal beschikt de Arduino Uno over 32 pinnen welke verdeeld op het board zijn in een aantal categorieën.
- Digitale input/output pinnen – De digitale pinnen kunnen gebruikt worden als input pinnen om signalen te analyseren die binnenkomen. Deze signalen bestaan uit voltages tussen de 0V (low) en 5V (high). De pinnen kunnen ook als output gebruikt worden wat betekend dat we een signaal van 0V of 5V kunnen uitsturen. De pinnen 3, 5, 6, 9, 10 en 11 hebben echter een tilde op het board staat. Deze pinnen ondersteunen dus PWM (Pulse-Width Modulation). Dit betekend dat deze pinnen voltages tussen de 0Ven 5V kunnen uitsturen.
- Analoge input pinnen – De analoge pinnen zijn “input-only” pinnen en worden gebruikt om analoge signalen te lezen. Deze waardes tussen de 0 en 5 volt worden omgezet naar waardes tussen de 0 en 1023.
- Power pinnen – De power pinnen hebben allemaal iets te maken met “stroom”. Laten we ze allemaal even bekijken, van links naar rechts:
>1 = Niet verbonden. Dit is een loze pin welke niets doet.
>2 = IOREF. Deze pin correspondeert het voltage level waar de Arduino op draait. Deze pin is speciaal voor shields zodat deze weten welk voltage ze kunnen verwachten van de IO pinnen.
>3 = Reset. De reset pin kan gebruikt worden om de Arduino te resetten. Bevestig een draad aan de reset pin en aan de ground pin. Bij contact wordt het circuit geopend waardoor de stroom van het board afgaat.
>4 = 3.3V. 3.3 volt output pin.
>5 = 5V. 5 volt output pin.
>6 = GND. Dit is een zogenaamde “ground” ofwel 0V pin. In een elektrisch circuit is dit het referentiepunt waaruit spanningen worden gemeten of een gemeenschappelijk retourpad voor elektriciteit of een directe fysieke verbinding met de aarde. Ground wordt gebruikt om de stroom te laten stromen. Stel je voor dat je een fontijn hebt en je wilt het water recyclen dan laat je het water terug naar de pomp lopen. Deze verbinding zou je de ground verbinding kunnen noemen. Aangeraden wordt om componenten die in serie geschakeld zijn met dezelfde ground pin te verbinden. Op die manier wordt hebben ze gezamenlijk 1 referentiepunt voor het voltage en wordt stroom optimaal gecirculeerd. Als verschillende circuits aangesloten zijn dan is het aan te raden om deze aan te sluiten op een andere ground pin zodat er geen interferentie plaats vindt tussen de stroomcirculatie van verschillende circuits. Ook is het slim om apparaten die interferentie kunnen veroorzaken op een andere ground pin aan te sluiten dan apparaten die erg storingsgevoelig zijn.
>7 = GND. De 2e ground pin op het Arduino board
>8 = VIN. De VIN pin kan als een voltage input en output pin gebruikt worden. Normaliter wordt de VIN pin als voltage output gebruikt om apparaten en shields te voeden. Stroom vanuit de externe power supply of vanuit de USB aansluiting gaat normaliter via een beschermingsdiode die de spanning iets (0.3-0.4V) omlaag brengt. Als je de pin wilt gebruiken is het aan te raden om de externe power supply te gebruiken. Als je deze gebruikt met USB voeding welke slechts 5V is en welke dan doorgestuurd wordt naar de VIN pin zou ervoor kunnne zorgen dat de 5V regelaar beschadigd. De VIN pin wordt dan gevoed vanaf de supply en zo kan een aangesloten apparaat opereren op zijn eigen krachtbron (direct vanaf de Arduino external power supply).
Dan zijn er nog naast de digitale pinnen nog een aantal andere pinnen aanwezig. Deze zijn:
- PC5 (helemaal links naast de digitale pinnen) – Analoge pin nummer A5. Deze zit dus verbonden met de analoge A5 pin aan de andere kant van het bord en is dus een doorlus.
- PC4 (naast PC5) – Analoge pin nummer A4. Deze zit dus verbonden met de analoge A4 pin aan de andere kant van het bord en is dus een doorlus.
- AREF – Analog REFerence pin. Dit is de analoog-naar-digitaal converter (ADC). Het kan worden gebruikt in plaats van de standaard 5V-referentie voor het bovenste uiteinde van het analoge spectrum. Als je bijvoorbeeld de ADC zou willen gebruiken om een signaal te controleren met een bereik van 0 tot 1,5 volt dan zou je de volledige schaal van de ADC kunnen gebruiken door de AREF te verbinden met een 1,5 V-signaal. Sluit nooit een signaal aan welke hoger is dan 5V!
- GND (digital ground) – De 3e ground pin op het Arduino board
- 0 Rx + 1 Tx – Deze pinnen zijn speciaal voor het aansluiten van andere componenten / shields. De RX- en TX-LED’s op het bord zullen knipperen wanneer gegevens worden verzonden via de USB-naar-seriële chip en USB-verbinding met de computer (maar niet voor seriële communicatie op pinnen 0 en 1. Let op, dit zijn dus geen digitale uitgangen!
De maximale belasting per pin is 40mA. Aanbevolen is echter 20mA. De maximale belasting van alle pinnen tezamen is 200mA.
Arduino Tips
Als je gaat starten met de Arduino dan zijn een aantal tips meer dan welkom. Hierbij de 3 belangrijkste beginner tips:
1. Niet alle sketches op het internet zijn compatible met de software. Probeer een oudere versie van IDE.
2. Verwissel nooit geen draden, componenten of shields terwijl de Arduino gestart is. Dit zal ervoor zorgen dat er kortsluiting in het board ontstaat waardoor deze defect raakt.
3. Tegenwoordig worden de meeste Arduino boards geleverd met een harde plastic onderkant zodat de soldeerverbindingen niet beschadigen als de Arduino op tafel ligt. Mocht je een board hebben waar dit nog niet zo is bevestig dan zelf een paar afstand houdertjes op de onderkant om beschadiging te voorkomen.
Conclusie
Hopelijk heb je een kleine indruk gekregen van de Arduino en met name de Arduino Uno. De Arduino Uno is een mooie microcontroller die je voor een paar tientjes kunt kopen. Je kunt dus al snel aan de slag om je eigen circuits te programmeren en om je eerste toepassingen te bedenken. Voor iedereen die het leuk vindt om met elektriciteit en programmeren bezig te zijn is de Arduino een prachtig board. Nu eens gaan kijken naar de Arduino programmeertaal en ons eerste project… later meer hierover.