Alles wat u wilt weten over Arduino
Conrad Electronic is officieel Arduino® verkooppartner sinds augustus 2021. Dit betekent dat wij nu over de beste voorwaarden beschikken voor een optimale en continue beschikbaarheid van goederen.
Want wij krijgen nu het actuele aanbod, de nieuwste producten en ook interessante informatie rechtstreeks uit de eerste hand. Iedereen die Arduino al met succes gebruikt of ermee wil beginnen, zal hier nu van profiteren.
Wat ooit begon als een experimenteel project voor elektronicaliefhebbers, ontpopt zich nu steeds meer als een professionele oplossing voor industriële toepassingen.
Het is dan ook niet verwonderlijk dat veel mensen al van de naam Arduino hebben gehoord. Maar niet iedereen weet precies wat er achter zit.
Wanneer wordt gesproken over microcontrollers, projecten, platforms, sketches, shields en sensoren, is de verwarring groot. Daarom willen we eenvoudig en duidelijk uitleggen wat een Arduino microcontroller is. Daarnaast willen wij laten zien welke schijnbaar onbegrensde mogelijkheden er zijn bij het gebruik ervan. En het mooiste is: het is allemaal veel minder ingewikkeld dan het in eerste instantie klinkt.
Eenvoudig gezegd is Arduino een besturingssysteem waarbij de uitgangen reageren volgens de programmering en afhankelijk van de ingangen. Dit maakt het mogelijk bepaalde processen automatisch te sturen. Dit gaat van een eenvoudige LED-schakeling tot een complex machinebesturingssysteem.
Dergelijke functies zijn bijvoorbeeld nodig in een koffiezetapparaat waar bepaalde processen afhankelijk zijn van sensorwaarden. Het keuzemenu wordt namelijk alleen weergegeven wanneer de kaartscanner of de sensor in de muntencontrole een vrijgave heeft gegeven. De gewenste latte kan echter alleen worden gekozen als de sensor in de koffiebonen en de sensor in de melkcontainer bevestigen dat de containers niet leeg zijn.
Wat in principe vrij eenvoudig klinkt, vereist een Arduino-microcontroller en enige technische knowhow voor de uitvoering. De eerste Arduino met een ATMEL ATmega8 controller werd in 2005 ontwikkeld door Massimo Banzi en David Cuartielles in Italië. De naam "Arduino" is afkomstig van een bar in Ivrea waar de oprichters van het project elkaar ontmoetten.
Een Arduino bestaat in principe uit twee componenten. De ene is de hardware, d.w.z. het Arduino-Board, en de andere is de software (Arduino IDE), waarmee het individuele schakel- of besturingsprogramma (sketch) wordt gemaakt. Aangezien zowel de Arduino boards als de Arduino software open source systemen zijn, kunnen gebruikers beide aanpassen aan hun individuele behoeften.
De naam Arduino verwijst niet naar een specifiek board of controller. Arduino verwijst eerder naar een volledige productfamilie of merk. Met het Arduino Uno board als voorbeeld, willen we eerst de structuur nader toelichten.
De essentiële onderdelen van een Arduino Board
1. USB-aansluiting
Op deze aansluiting wordt een USB-kabel aangesloten om het individuele besturingsprogramma naar de Arduino over te brengen.
2. reset-knop
Deze knop kan worden gebruikt om de Arduino handmatig te resetten als deze niet meer automatisch werkt als gevolg van een storing.
3. ICSP-interface (USB-interface)
Met een ICSP-interface (In Circuit Serial Programming) kan een logische schakeling rechtstreeks in het insteeksysteem worden geprogrammeerd.
4. I²C-bus
Met een I²C-bus worden gegevens verzonden van de master naar de aangesloten slaves via de SCL (Serial Clock) en SDA (Serial Data) lijnen.
5. ingebouwde LED
De LED "L" is intern verbonden met PIN 13 en wordt gebruikt voor testdoeleinden.
6. Digitale ingangen/uitgangen
Deze I/O-pinnen kunnen worden geconfigureerd als digitale in- of uitgangen. Zes daarvan werken indien nodig als PWM-uitgangen met pulsbreedtemodulatie.
7. Display-LED's
De LED's "RX" en "TX" geven de gegevensoverdracht van de PC naar de Arduino UNO visueel aan.
8. Bedrijfsspanning LED
De "ON" LED signaleert de stroomvoorziening van de microcontroller kaart. Het licht op wanneer de printplaat van spanning wordt voorzien.
9. Oscillatorkristal (regelaar)
Het kristal zorgt ervoor dat de oscillator in de controller stabiel en met een constante frequentie oscilleert.
10. ICSP-interface (controller)
Indien nodig kan de controller via deze interface worden geprogrammeerd. Aangezien dit echter reeds in de fabriek werd gedaan, is het meestal niet nodig.
11. Microcontroller
Een microcontroller is een halfgeleiderchip waarin de processor, de randapparatuur en het geheugen zijn gecombineerd. Soms worden ze ook SoC (System-on-a-Chip) genoemd.
12. Analoge ingangen
Indien analoge spanningen van b.v. sensoren als ingangswaarden beschikbaar zijn, moeten deze zes ingangen worden gebruikt.
13. Voedingspinnen
Op deze pennen kunnen spanningen worden geleverd aan de microcontroller kaart of spanningen zoals 3,3 V of 5 V kunnen worden afgetapt.
14. Gelijkrichterdiode
Een gelijkrichterdiode is aanwezig zodat zowel gelijk- als wisselspanning op de voedingsaansluiting kan worden gezet.
15. Laadcondensatoren
De laadcondensatoren egaliseren de voedingsspanning. Eén condensator wordt aangesloten vóór de 5 V-spanningsstabilisator en één condensator erna.
16. Aansluiting stroomvoorziening
Om ervoor te zorgen dat de microcontroller-printplaat na het programmeren ook zonder USB-aansluiting kan werken, moet deze van stroom worden voorzien via een externe voedingseenheid.
17. Spanningsstabilisator
De spanningsstabilisator genereert een stabiele spanning van 5 V uit de voedingsspanning, die tussen 7 en 12 V moet liggen (AC of DC).
18. Oscillatorkristal (USB-controller)
De kwarts zorgt ervoor dat de oscillator in de USB-controller stabiel en met een constante frequentie oscilleert.
19. USB-interface
De USB-interface converteert de signalen die via de USB-interface binnenkomen in een formaat dat geschikt is voor de controller.
In principe heeft elk Arduino-Board een controller met verschillende ingangen en uitgangen. Afhankelijk van welke controller wordt gebruikt, is er een groter of kleiner aantal uitgangen en ingangen of aansluitmogelijkheden. Bovendien zijn de Arduino-Boards zo ontworpen dat extra borden (shields) kunnen worden aangesloten via de headers. Zo ontstaat een stapelbaar systeem dat zonder veel bedrading kan worden opgezet.
Waarschijnlijk het meest populaire Arduino platform is het Arduino Uno board. Maar naast de Arduino Uno zijn er nog vele andere microcontroller boards van Arduino. Omdat de productvariëteit van Arduino microcontroller boards net zo divers is als de verschillende toepassingsscenario's. Voor een gemakkelijk overzicht hebben wij enkele actuele en populaire boards in een tabel samengevat:
Overzichtstabel van de meest populaire Arduino Boards
Micro- Controller |
CPU | Analoge ingangen |
Digitale in- /uitgangen |
Werkgeheugen | Spanning | Afm. (L x B) |
|
---|---|---|---|---|---|---|---|
Arduino Zero | ATSAMD21G18 | 32-bit | 6 | 20 (davon 10 PWM) | 256 kB | 3,3 V | 68,6 x 53,4 mm |
Arduino Uno R3 | ATmega328P | 8-bit | 6 | 14 (davon 6 PWM) | 32 kB | 5 V | 68,6 x 53,4 mm |
Arduino Due | ATmelSAM3X8E | 32-bit | 12 | 54 (davon 12 PWM) | 512 kB | 3,3 V | 101,5 x 53,3 mm |
Arduino Mega 2560 | ATmega2560 | 8-bit | 16 | 54 (davon 15 PWM) | 256 kB | 5 V | 101,5 x 53,3 mm |
Arduino Leonardo | ATmega32u4 | 8-bit | 12 | 20 (davon 7 PWM) | 32 kB | 5 V | 68,6 x 53,4 mm |
Arduino Micro | ATmega32u4 | 8-bit | 12 | 20 (davon 7 PWM) | 32 kB | 5 V | 48,3 x 17,8 mm |
Arduino Nano | ATmega328 | 8-bit | 8 | 22 (davon 6 PWM) | 32 kB | 5 V | 45 x 18 mm |
Er zijn ook verschillende versies van de afzonderlijke types, die verschillen wat betreft constructie en uitrusting. Zo is de Arduino Uno verkrijgbaar in een SMD-versie of met een WiFi-module. Maar er zijn ook verschillende versies van de Micro en Nano met verschillende technische gegevens.
Productaanbevelingen
Arduino MKR
Met Arduino MKR heeft Arduino een eigen Arduino-serie ontwikkeld, speciaal voor Makers.
Naast de diverse schakel- en besturingstaken ligt de nadruk bij Arduino MKR op de communicatiemogelijkheden van de boards en shields.
Deze variëren van SigFox voor IoT-toepassingen en WiFi voor draadloze netwerkintegratie tot het gebruik van het GSM-netwerk.
Arduino PRO
Met Arduino Pro beschikt Arduino over een krachtig systeem dat is ontworpen voor onder meer complexe industriële toepassingen, robotica en intelligente machinebesturing.
De boards zijn navenant uitgebreid en krachtig, zoals de Portenta H7 met een dual-core processor die complexe taken in real time kan verwerken.
In combinatie met de Arduino IoT Cloud is centrale aansturing eenvoudig mogelijk.
Arduino Education
Arduino heeft ook het Arduino® Education-programma gelanceerd voor opleidingsdoeleinden. Met behulp van verschillende projecten kan een snelle en gemakkelijke introductie in het programmeren van Arduino boards worden geleerd.
De onderwijsproducten zijn speciaal ontwikkeld voor middelbare scholen, beroepsscholen en universiteiten. Het universele leerconcept is bedoeld om opvoeders te ondersteunen bij het overbrengen van kennis over de onderwerpen programmeren, elektronica, elektrotechniek en mechatronica met didactisch materiaal en praktische kits.
Daarom worden de onderwijspakketten individueel aangepast aan het leerdoel of de groep leerlingen.
De Arduino IDE-software is vereist voor het programmeren van het Arduino-bord. Enerzijds is de Arduino-software gemakkelijk te gebruiken voor mensen met weinig ervaring en anderzijds biedt zij ervaren mensen de nodige flexibiliteit om de geplande projecten perfect te kunnen uitvoeren. De Arduino-software kan worden gedownload van de officiële Arduino-website voor Windows, iOS of Linux. Als alternatief is ook uitgebreide technische literatuur beschikbaar.
Aan de hand van een kleine opdracht willen we ons verdiepen in de functies van de Arduino Desktop IDE software en een klein en eenvoudig Arduino programma (sketch) maken. Het doel is een automatisch startend looplicht met 10 leds te maken. Door de automatische start is het niet nodig een van de ingangen aan te sluiten.
Opbouw testopstelling
Voordat met programmeren kan worden begonnen, moet de hardware worden ingesteld. Een Arduino Mega 2560 is gebruikt voor ons testvoorbeeld, maar elk ander bord zou ook werken. De digitale ingangen/uitgangen 2 - 11 worden gebruikt om de 10 LED's aan te sturen.
Een klein insteekboard is ideaal gebleken voor de fysieke bouw van de schakeling. Aangezien de LED's niet ontworpen zijn voor een bedrijfsspanning van 5 V, moet met elke LED een weerstand van 220 Ω in serie worden geschakeld om de stroom en dus ook de spanning voor de LED te beperken. Het maakt niet uit of de weerstand voor of na de LED wordt geïnstalleerd.
Alleen in het geval van de LED moet erop worden gelet dat de desbetreffende anode is aangesloten op de digitale in-/uitgang van de printplaat. De gemeenschappelijke massa-aansluiting wordt verbonden met de GND-aansluiting van de printplaat. Hiermee is de constructie van de testkring voltooid.
Aangezien de stroom wordt geleverd via de USB-aansluiting, hoeft voor onze testschakeling geen externe stroomvoorziening te worden aangesloten.
Opstelling van het controleprogramma
Software instellen
Na de installatie van de software moeten de printplaat en de gebruikte interface worden ingesteld onder het menu-item "Tools".
In het menu "File", in de map "Examples", staan enkele schetsen die indien nodig kunnen worden opgeroepen en onmiddellijk naar het Arduino-bord kunnen worden overgebracht.
In ons voorbeeld willen wij echter zelf een klein programma maken.
De benodigde commando's en de bijbehorende uitleg zijn te vinden op de Arduino pagina.
Definitie van de uitgangen
De eerste regel bepaalt hoeveel LED's moeten worden aangestuurd en welke fysieke aansluitingen (pinnen) worden gebruikt om de LED's aan te sturen.
In ons geval zijn de aansluitingen 2 - 11 bedraad.
Het volgende gebied bestaat uit twee kernfuncties, de setup en de loop.
Het setup-gebied wordt slechts eenmaal gelezen en uitgevoerd wanneer het programma wordt gestart.
Het volgende lusgedeelte daarentegen wordt in een steeds terugkerende volgorde uitgevoerd.
Setup
In het setup-gedeelte van de sketch moet worden gedefinieerd dat de pennen 2 tot en met 11 als uitgangspennen fungeren en dat bijgevolg een spanning moet worden uitgevoerd voor de 10 LED's (genummerd 0 - 9).
Dit kan worden gedaan met de commando's
- pinMode (LEDPins[0],Uitgang); voor de eerste LED
- pinMode (LEDPins[1],Uitgang); voor de 2e LED
- pinMode (LEDPins[9],Uitgang); voor de 10e LED
Aangezien dit veel te omslachtig is, werd een "for"-lus gemaakt waarin de variabele "i" werd gedefinieerd voor index met de beginwaarde nul en de eindvoorwaarde minder dan 10. De waarde i++ zorgt ervoor dat de waarde "i" per lus met één wordt verhoogd. Daarna is slechts één regel code nodig om de tien pinnen toe te wijzen:
pinMode (LEDPins[i],Uitgang);
Loop
De "for"-lus wordt ook gebruikt in het lusgedeelte aan het begin, zodat de invoer niet voor elke afzonderlijke LED hoeft te worden gemaakt.
Met de commando's:
digitaal schrijven (LEDPins[i],HIGH);
vertraging(100)
de 10 LED's worden na elkaar gedurende 100 ms ingeschakeld volgens de eerder gedefinieerde lus. Door de vertragingswaarde te veranderen, kan de verlichtingstijd van de LED en dus de snelheid van het looplicht worden bepaald.
De LED's worden met de commando's uitgeschakeld:
digitaal schrijven (LEDPins[i],LOW);
vertraging(0)
De vertragingswaarde 0 schakelt de volgende LED onmiddellijk aan als de vorige uitgaat. Elke waarde voor een lichtpauze kan echter ook worden ingevoerd.
Aangezien het looplicht niet slechts in één richting mag werken, moet de verlichtingsvolgorde in de volgende stap worden omgekeerd. Aangezien de buitenste LED niet tweemaal moet worden aangestuurd bij het veranderen van de looprichting, omvat de lus die nodig is voor het achteruitrijden alleen LED-pennen 8 (i=8) tot 1 (i>0) en schakelt de LED's in omgekeerde volgorde (i--).
De besturing van de LED's met de vertragingstijden geschiedt volgens hetzelfde schema als voor de heenloop.
Overbrengen van het besturingsprogramma naar de Arduino
Tenslotte kan de schets worden overgezet op het Arduino-bord met de ronde knop en de pijl die naar rechts wijst. Tijdens de overdracht knipperen de twee LED's RX en TX op de printplaat en vervolgens begint het looplicht te werken.
Als de schets een fout heeft, wordt dit onmiddellijk aangegeven wanneer een poging tot overdracht wordt ondernomen. Aangezien de lus voortdurend wordt herhaald, blijft het looplicht branden totdat de stroomvoorziening van het Arduino-bord wordt uitgeschakeld.
In ons artikel "Arduino - Functies maken en programmeren" hebben we het 10-kanaals looplicht nog verder uitgebreid en de verschillende functies in detail uitgelegd.
Met ons eenvoudig programmeervoorbeeld hebben wij getracht het ongelooflijke potentieel van programmeerbare microcontrollers aan te tonen. Om recht te doen aan de schijnbaar onbegrensde variëteit van toepassingen, zijn de Arduino boards verkrijgbaar in een groot aantal uitvoeringen met een veelheid aan aansluitmogelijkheden. Door extra modules (shields) met sensoren of voor motorbesturing of een Ethernet shield aan te sluiten, worden de functies in een handomdraai uitgebreid. Zonder ingewikkelde bekabeling resulteert dit in een stapelbaar ontwikkelbord of een compact besturingssysteem. De hardware voldoet dus aan alle eisen voor een doelgerichte en toch flexibele ontwikkelingsomgeving.
De programmeersoftware is al even eenvoudig en flexibel. Zoals uit het getoonde voorbeeld blijkt, volstaan enkele lijnen om een individueel regelbare looplamp met 10 LED's te maken. De uitdaging ligt in het maken van de programmacode (schets). Daarom bieden veel scholen nu al programmeercursussen aan, zodat de leerlingen van vandaag de ontwikkelingsdeskundigen van morgen kunnen worden.
Intussen hebben ook de verantwoordelijken in bedrijven het potentieel ingezien en gebruiken zij steeds vaker Arduino-boards voor besturingsoplossingen. Het grote voordeel is dat jongeren de kennis die zij reeds op school hebben opgedaan over toepassing en programmering onmiddellijk kunnen toepassen op toekomstige projecten.
Maar latere elektronicafans moeten zich niet laten afschrikken om hun eerste ervaringen met programmeerbare controllers op te doen. Starterskits zijn hier ideaal voor. Er zijn ook talloze suggesties op het Internet voor projecten die kunnen worden opgelost met Arduinos of compatibele boards. En in de Arduino-gemeenschap, met meer dan 28 miljoen deelnemende mensen, zijn er genoeg competente mensen die graag helpen met specifieke vragen over Arduino-software, -boards en -sensoren.