Wat is Arduino en waarvoor kun je het gebruiken?

Door: koen-vervloesem | 24 augustus 2019 09:23

How To

De laatste jaren hebben we in Computer!Totaal regelmatig leuke apparaatjes in elkaar geknutseld met het microcontrollerplatform Arduino. In dit artikel doen we weer even een stapje terug: wat is Arduino en wat kun je ermee doen?

Arduino is een populair hardware- en softwareplatform onder makers en hobbyisten, omdat je er eenvoudig slimme apparaatjes mee in elkaar knutselt. Er bestaan diverse officiële Arduino-bordjes met elk andere eigenschappen. En omdat het hardware-ontwerp van al die bordjes open is, kan iedereen de bordjes namaken. Je vindt dan ook talloze goedkopere klonen op Chinese webwinkels zoals AliExpress en Banggood, en op eBay. Daarnaast bestaan er ook allerlei bordjes van derde partijen die compatibel zijn met de Arduino-ontwikkelsoftware.

makercultuur

01 Verschillen tussen de Arduino-bordjes

De Arduino Uno is een geschikt bordje om mee te beginnen, maar er bestaan nog talloze andere bordjes. Op de website van Arduino vind je een vergelijking van de specificaties van alle officiële bordjes.

Een belangrijk verschil zit in het aantal pinnen om andere elektronische componenten op aan te sluiten. Met digitale pinnen kun je digitale signalen (0 of 1) inlezen of uitsturen, terwijl je met de analoge pinnen analoge signalen in de vorm van een spanning kunt inlezen of uitsturen (hoewel uitsturen niet bij de Arduino Uno). Bij enkele van de digitale pinnen staat er een tilde (~) aangeduid. Deze pinnen kun je met pulsbreedtemodulatie (‘pulse width modulation’ of PWM) aansturen, waardoor je een analoog signaal op een digitale manier kunt simuleren. Handig om bijvoorbeeld een aangesloten led te dimmen.

Anatomie van een Arduino-bordje

Het eenvoudigste en populairste Arduino-bordje is de Arduino Uno. Het is een leuk bordje om mee te beginnen, omdat het veel basisfunctionaliteit bevat (maar niets overbodigs) en omdat het goed gedocumenteerd is. We gebruiken de Arduino Uno als voorbeeld om de anatomie van een Arduino-bordje uit te leggen. De Arduino Uno bevat de volgende componenten:

1. Resetknop: herstart de code die in het Arduino-bordje geladen is.
2. Pinheaders: hierop sluit je met jumperdraden elektronische componenten aan.
3. Usb-aansluiting: hiermee upload je de code van je pc naar de Arduino.
4. Voedingsaansluiting: aansluiting voor een voedingsadapter die je Arduino van stroom voorziet.
5. Spanningsregelaar: zet de spanning van de voedingsadapter om naar een geschikte spanning voor de Arduino.
6. TX/RX-leds: deze leds knipperen tijdens het zenden (transmit) en ontvangen (receive) van data tussen de Arduino en je pc.
7. Microcontroller: het brein van de Arduino, dat je code uitvoert.
8. Statusled: brandt zolang het bordje stroom krijgt.

02 Begin eenvoudig

Verder verschillen de bordjes wat betreft de processor, de processorsnelheid en de hoeveelheid eeprom, sram en flashgeheugen. We raden aan om niet onmiddellijk het krachtigste bordje te kopen: je zult ervan versteld staan hoeveel je met de eenvoudigste bordjes al kunt doen! Een laatste verschil tussen de verschillende bordjes is de spanning waarop ze werken: 5 V (zoals de Arduino Uno) of 3,3 V. Dat is belangrijk om te weten als je elektronische componenten gaat aansluiten.

Het is gemakkelijk om het overzicht te verliezen: alleen de officiële bordjes zijn er al meer dan twintig. Wil je beginnen zonder al te veel met elektronische componenten te priegelen, dan is de Arduino Esplora met geïntegreerde sensoren en actuatoren leuk. De Arduino Nano is een kleine versie van de Uno, terwijl de Arduino Due een krachtig bordje is voor complexere projecten. Wil je ingebouwde wifi, dan kies je voor de Arduino MKR WIFI 1010.

03 Elektronische componenten aansluiten

Je kunt elektronische componenten zoals leds, sensoren en dergelijke rechtstreeks op de Arduino aansluiten met jumperdraden, maar dat wordt al gauw wat slordig. Meestal prik je je componenten daarom in een breadboard, dat je via jumperdraden met de Arduino verbindt.

Verder bestaan er ook Arduino-shields. Dit zijn printplaatjes die je rechtstreeks in de pinheaders van je Arduino prikt, waardoor je de functionaliteit van je Arduino-bordje eenvoudig uitbreidt.

04 Arduino IDE-ontwikkelomgeving

De makers van Arduino produceren ook de ontwikkelsoftware om er je eigen code op te draaien: de Arduino IDE. Die bestaat zowel voor Windows, Linux als macOS. Download de nieuwste versie. Voor Windows heb je de keuze tussen een exe- en een zip-bestand. De eerste is gemakkelijker, omdat dit een installatieprogramma is dat onmiddellijk ook de juiste driver voor de usb-verbinding met je Arduino installeert. De standaardinstellingen van het installatieprogramma zijn oké.

05 Schetsen

Open het programma Arduino IDE. De ontwikkelomgeving opent standaard een bijna lege pagina, met de volgende inhoud:

void setup() {

// put your setup code here, to run once:

}

void loop() {

// put your main code here, to run repeatedly:

}

Een ‘schets’ of ‘sketch’ is de naam die Arduino geeft aan een programma. Elke Arduino-schets bestaat uit twee functies: setup en loop. In die eerste zet je de code die je Arduino-bordje één keer dient uit te voeren, vlak nadat de microcontroller opgestart of gereset is. Daarna wordt de functie loop continu herhaald. De code die je in deze functie zet, draait dus telkens opnieuw.

05 Een typische Arduino-schets in de Arduino IDE.

06 Commentaar

Arduino IDE komt standaard al met talloze voorbeeldschetsen. Klik in het menu Bestand op Voorbeelden en kies dan in de categorie 01.Basics voor Blink. De code begint met een groot blok tekst tussen regels die beginnen met /* respectievelijk */. Daarmee geef je aan dat de tekst hiertussen commentaar is: Arduino IDE negeert dit, zodat je hier uitleg kunt typen. De makers van de voorbeeldschets leggen hier uit wat de schets doet. Het is aan te raden om je eigen Arduino-schetsen ook te beginnen met commentaar.

Daarna komen de twee verplichte Arduino-functies, setup en loop. We zien hier ook regels die beginnen met // en we zien ook in het midden van regels // met een tekst erachter. Dit is een tweede manier om commentaar in een Arduino-schets op te nemen: de Arduino IDE negeert alles vanaf // tot het einde van de regel. Het is niet de bedoeling dat je bij élke regel code commentaar zet, maar maak er wel een gewoonte van om wat complexere regels code van uitleg te voorzien.

06 Arduino IDE komt met talloze voorbeeldschetsen die je leren programmeren met Arduino.

07 Setup en loop

Laten we even naar de code van het voorbeeld Blink kijken. In de functie setup is er maar één regel code nodig:

pinMode(LED_BUILTIN, OUTPUT);

Hiermee stellen we de digitale pin met de naam LED_BUILTIN in als uitvoerpin, zodat we er later in de code een 0 of 1 naar kunnen schrijven. De naam LED_BUILTIN verwijst op alle Arduino-bordjes naar de ingebouwde led op het printplaatje, meestal pin 13. Door de voorgedefinieerde naam LED_BUILTIN te gebruiken, hoef je je code niet aan te passen als je ze op een ander bordje wilt draaien waar de ingebouwde led een ander pinnummer heeft.

In de functie loop willen we de ingebouwde led doen knipperen. Eerst schrijven we HIGH naar de juiste digitale pin:

digitalWrite(LED_BUILTIN, HIGH);

Omdat het om een digitale pin gaat, kunnen we twee mogelijke waardes naar de pin schrijven: HIGH (overeenkomend met 1) of LOW (overeenkomend met 0). Waarom heet de waarde hier HIGH en niet 1? Omdat dit de spanning is die op de pin gezet wordt: hoog. Je vindt de spanning van jouw Arduino-bordje in de tabel met de specificaties in het begin van de kolom Operating/Input Voltage. Als jouw Arduino-bordje op 5 V werkt, komt HIGH hier overeen met een spanning van 5 V. Het gevolg? Er vloeit stroom door de ingebouwde led, die begint te branden.

Daarna wachten we een seconde met:

delay(1000);

De 1000 staat voor 1000 milliseconden. In de volgende regel schrijven we LOW naar de digitale pin. Dat komt overeen met een spanning van 0 V. Daardoor vloeit er geen stroom door de ingebouwde led, die daarop uitdooft. Daarna wachten we weer een seconde. We komen nu aan het einde van de functie loop, die daarna weer herhaald wordt: het knipperen begint weer van voren af aan.

08 Code uploaden

Om de led echt te zien knipperen moet de code geüpload worden. Ga eerst via arduino.cc naar de website van Arduino en klik op de link die bij je bordje hoort om te zien hoe je het bordje eenmalig installeert. We leggen je kort uit hoe dit verloopt met de Arduino Nano. Sluit het bordje met de usb-kabel aan op je pc. Klik in het menu Hulpmiddelen van Arduino IDE op Board en selecteer in het submenu Arduino Nano. Controleer of er bij Poort een seriële poort vermeld staat, zoals COM1 op Windows of /dev/ttyUSB0 op Linux. Als alles correct lijkt, klik dan linksboven op het knopje met het pijltje naar rechts.

Arduino IDE compileert nu je schets naar machinecode en uploadt je code naar het bordje. De voortgang krijg je in het zwarte tekstveld onderaan te zien. Als alles goed gaat (en je dus geen foutmeldingen in rode letters te zien krijgt) begint de ingebouwde led van je Arduino te knipperen. Dat werkt ook als je naderhand je Arduino rechtstreeks via een voedingsadapter van stroom voorziet.

09 Werken met Arduino-bibliotheken

Met de ingebouwde functies kun je al leuke dingen doen, maar voor complexere schetsen heb je extra functionaliteit nodig. Arduino kent daarom net als andere programmeeromgevingen bibliotheken. Een bibliotheek (library) is een verzameling code met specifieke functionaliteit. De Arduino IDE-ontwikkelomgeving heeft standaard al enkele bibliotheken geïnstalleerd. Bij deze standaardbibliotheken kun je er dus van uitgaan dat ze op elk systeem met Arduino IDE staan en je kunt ze dus zonder zorgen in je code gebruiken.

Zo gebruik je de standaardbibliotheek Wire als je met aangesloten elektronische componenten via het I²C-protocol wilt communiceren en de SPI-bibliotheek als die componenten het SPI-protocol gebruiken. Een servomotor stuur je dan weer aan met de bibliotheek Servo.

09 Standaardbibliotheken zoals Servo importeer je eenvoudig in Arduino IDE.

10 Bibliotheek importeren

Als je een bibliotheek wilt gebruiken, moet je die bibliotheek eerst ‘importeren’ door in het menu Schets op Bibliotheek gebruiken te klikken. Klik op de bibliotheek die je nodig hebt, waarna Arduino IDE bovenaan in je schets een opdracht toevoegt die de bibliotheek beschikbaar maakt. Voor de bibliotheek Servo is dat bijvoorbeeld:

#include <Servo.h>

Na een tijdje weet je wel hoe zo’n include-opdracht er uitziet. Let op: zet die altijd helemaal in het begin van je schets. Van elke standaardbibliotheek vind je op de website van Arduino documentatie en voorbeeldcode. Die voorbeeldcode vind je ook in het menu Bestand / Voorbeelden.

11 Extra bibliotheken toevoegen

Soms zul je extra bibliotheken willen installeren die niet in de standaardinstallatie aanwezig zijn. Klik je in het menu Schets / Bibliotheek gebruiken op Bibliotheken beheren, dan open je het bibliotheekbeheer (Library Manager). In het zoekveld rechtsboven kun je filteren op een zoekterm en met de uitklapmenu’s ernaast toon je alleen de bibliotheken van een specifiek type of onderwerp. De bibliotheek installeren gaat eenvoudig door de bibliotheek te selecteren en rechts op Installeren te klikken. Na de installatie verschijnt naast de naam van de bibliotheek de aanduiding INSTALLED. De meeste bibliotheken voegen ook voorbeeldschetsen toe in het menu Bestand / Voorbeelden.

11 Met het bibliotheekbeheer installeer en update je eenvoudig bijna tweeduizend Arduino-bibliotheken.

12 Een zip-bestand toevoegen

Soms heb je een bibliotheek nodig die (nog) niet in bibliotheekbeheer te vinden is, bijvoorbeeld omdat die nog vrij nieuw is. De ontwikkelaar verspreidt zijn bibliotheek normaal gesproken dan als een zip-bestand. Pak dit zip-bestand niet zelf uit. Open in Arduino IDE het menu Schets / Bibliotheek gebruiken en klik dan op .ZIP Bibliotheek toevoegen. Selecteer het zip-bestand dat je gedownload hebt. Arduino IDE pakt het zip-bestand uit en plaatst de inhoud ervan op de juiste locatie.

Houd je bibliotheken up-to-date

Eén keer een bibliotheek installeren is niet voldoende. De ontwikkelaars brengen immers waarschijnlijk regelmatig een nieuwe versie uit. Gebruik je het bibliotheekbeheer, dan krijg je normaal gesproken regelmatig een melding dat er nieuwe versies beschikbaar zijn. Je kunt ook zelf in het bibliotheekbeheer bij het keuzeveld Type de optie Bij te werken kiezen om te zien welke van je geïnstalleerde bibliotheken een nieuwe versie hebben. Voor bibliotheken die je via een zip-bestand hebt geïnstalleerd, dien je zelf regelmatig naar updates te zoeken. Let op: je dient ook je schetsen opnieuw te compileren en naar je Arduino te uploaden om van de nieuwe versie van de bibliotheek gebruik te maken in je code.

13 Ondersteuning voor andere microcontrollers toevoegen

Wil je een bordje met wat meer processorkracht of aansluitingsmogelijkheden gebruiken, dan zet je waarschijnlijk de Arduino Due of een van de bordjes uit de MKR-familie in. Deze hebben een ARM Cortex-processor die niet standaard ondersteund wordt. In het bordbeheer dat je opent via het menu Hulpmiddelen / Board / Board Beheer voeg je die ondersteuning eenvoudig toe. Je zoekt eerst in de lijst welke kern je Arduino-bordje ondersteunt. Voor de Arduino Due is dat bijvoorbeeld Arduino SAM Boards (32-bits ARM Cortex-M3). Klik op Installeren en wacht even tot Arduino IDE de kern geïnstalleerd heeft.

Daarna kun je het bordbeheer sluiten en is je bordje beschikbaar in de lijst in het menu Hulpmiddelen / Board. Als je je bordje gekozen hebt, bekijk je via de site van Arduino hoe je met dit bordje werkt en welke instellingen je het best gebruikt in het menu Hulpmiddelen.

13 In het bordbeheer van de Arduino IDE voeg je eenvoudig ondersteuning voor extra Arduino-bordjes toe.

14 Extra kernen in het bordbeheer

De kernen die je in het bordbeheer vindt, zijn niet de enige. Je kunt bijvoorbeeld zelf ondersteuning voor de populaire microchips ESP8266 of ESP32 toevoegen. Klik je in het menu Bestand op Voorkeuren, dan zie je onderaan een tekstveld Additionele Board Beheer URLs. Hier kun je een url voor extra bordondersteuning invullen. De url’s voor de ESP8266 en ESP32 zijn respectievelijk:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

https://dl.espressif.com/dl/package_esp32_index.json

Voeg ze toe en bevestig je wijzigingen met OK. Open nu het bordbeheer opnieuw. Onderaan de lijst verschijnen nu de kernen esp32 van Espressif Systems en esp8266 van ESP8266 Community. Installeer je deze kernen, dan zijn de ondersteunde bordjes zoals de NodeMCU daarna beschikbaar in de lijst in het menu Hulpmiddelen / Board. Kies je bordje, kies de instellingen zoals de poort en uploadsnelheid en je kunt je schets naar je bordje uploaden.

14 Met url’s voor bordondersteuning geef je Arduino IDE toegang tot extra microcontrollerbordjes zoals de ESP8266 en ESP32.

Extra bibliotheken voor je bordje

Als je een Arduino-kern voor je bordje geïnstalleerd hebt, dan werkt de standaard Arduino-code en meestal ook de standaardbibliotheken en de bestaande voorbeeldschetsen. Een kern voegt vaak ook extra voorbeeldschetsen en bibliotheken toe die specifieke functionaliteit van het bordje gebruiken. Third-party Arduino-bibliotheken ondersteunen niet altijd alternatieve bordjes. Soms gaan ze immers uit van de pin-out op een officieel Arduino-bordje. Controleer daarom in de beschrijving van een Arduino-bibliotheek altijd of ze jouw ESP8266- of ESP32-module ondersteunt.

Daarnaast vind je in het bibliotheekbeheer ook een heleboel bibliotheken die specifiek voor de ESP8266 of ESP32 geschreven zijn.

0 Reactie(s) op: Wat is Arduino en waarvoor kun je het gebruiken?

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • Er zijn nog geen reacties op dit artikel.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.