Arduino voor dummies

Arduino voor dummies, wat betekent dit juist? Wel, hier proberen wij diegene te helpen die de mogelijkheden van de Arduino willen verkennen, maar niet weten waar te beginnen. Arduino is één van de “talen” om te kunnen programmeren. Oorspronkelijk was Arduino gemaakt voor educatieve doeleinden, de community is echter uit zijn voegen gebarsten! 

Arduino, samen met Python, wordt nu gezien als een volwaardige introductie in het programmeren! En hoewel het educatief begon, zijn er nu slechts weinig projecten die niet gemaakt kunnen worden met arduino. Denk maar aan boot op afstandbediening of een parking met slagboom…

De programmeertaal Arduino:

Een computer leest enkel in binaire waarden, dit wil zeggen: 0 & 1. Om er voor te zorgen dan wij als programmeurs geen immens lange binaire codes hoeven te gebruiken, werden er programmeertalen ontwikkeld. Deze hebben een vast stramien. Bepaalde woord/tekencombinaties worden omgezet naar lange binaire codes die onze computer kan lezen, interpreteren en uitvoeren. Arduino is zo een enorm gebruiksvriendelijke taal die zelf over zijn eigen hardwareonderdelen beschikt.

Hier zullen we samen met jullie over de basis gaan die nodig is om later zelf de meest ingewikkelde programma’s te begrijpen en te schrijven. Deze programma’s lijken niet uitdagend noch belangrijk. Maar zijn in feite de broodnodige fundamenten voor het begrijpen van Arduino. Voor jullie het weten speel je met Arduino en maak je indrukwekkende code’s in een vingerknip. Zonder meer, laten we beginnen!

De basis van elk project:

Bij Arduino voor dummies willen we stilstaan bij de twee delen van een project: het programmeren en de al even belangrijke, hardware componenten. Eerst zullen we een woordje uitleg geven over de twee basis items van elke Arduino schakeling: een Arduino en een breadboard. Hoewel ze in veel diversiteiten voorkomen met elk hun eigenschappen, zal ik het hebben over de Arduino Uno. Dit is de meest frequent gebruikt Arduino en is in staat om al onze codes uit te voeren. Noem dit eigenlijk de verwerker achter elke realisatie.

Het maken van jouw projecten:

Wanneer we denken aan programmeren visualiseren we graag wat we bereikt hebben. Met Arduino is dit zeer gemakkelijk! De community en support rond Arduino heeft gezorgd voor een enorm gala aan gadgets waarmee we onze projecten kunnen maken. Unieke gadgets zijn apart te verkrijgen, maar kunnen soms heel prijzig zijn. Gelukkig worden er ook pakket verkocht! Deze pakketten bezitten alles wat je nodig hebt om onze lessen(en nog zeer veel meer) te maken. En dat voor een prijs dat lager ligt dan wanneer je bepaalde zaken uit dit pakket apart zou kopen! Zou kan een arduino uno apart aankopen al snel €28 kosten… En dan heb je nog geen breadbord, draden en sensoren!

Het brein van Arduino:

De interne werking en de verwerking van het programma zijn zeer complex. Met deze gedachte en de het feit dat deze kennis absoluut onnodig is, zal ik hier geen woorden aan vuil maken. Het volgende is de basis voor het maken van elke schakeling. De Arduino heeft 18 standaard aansluitingen voor bedrading van een component, waarvan 6 strikt digitaal, 6 strikt analoog en 6 poorten die voor beide gebruikt kunnen worden.

Arduino voor dummies

Even verduidelijken: digitaal gaat hand in hand met binair: nullen en enen , aan en uit. Met de digitale poorten is er geen ‘grijze zone’. Er is geen mogelijkheid om halve intensiteit of kracht te werken. Dit is natuurlijk bij veel toepassingen niet nodig. Daar komen analoge poorten aan de pas! Deze poorten kunnen ook op bijvoorbeeld halve kracht werken. De digitale poorten worden weergegeven door een nummer. De analoge door een hoofdletter A en  een nummer. De poorten die voor beide gebruikt kunnen worden staan tussen de digitale poorten, maar hebben een golfje bij hun nummer staan. Deze poorten maken gebruik van PWM.

PWM-signalen:
Arduino voor dummies

PWM of Pulse Width Modulation is een manier om via digitale inputs toch analoge signalen te versturen. Het PWM-signaal werkt op een frequentie van ongeveer 500 hertz. Door deze hoge frequentie zullen we het nooit merken, maar we krijgen geen constante spanningsgrafiek. Er wordt afwisselend 5V ( of 3.3V ) en 0V ( ground ) geleverd. Hierdoor krijg je een resulterende spanning die zich bevindt tussen de twee uiterste waarden. Deze resulterende spanning is de spanning die we zullen meten en zien bij bijvoorbeeld een LED. De resultante van de PWM wordt beïnvloed door de lengte van de top waarde in elke cyclus.

Zo hebben we voor analogWrite(0); een constante grafiek bij de ground. Dit is dezelfde grafiek die we zouden krijgen bij digitalWrite(LOW);. Ook bij analogWrite(255); en digitalWrite(HIGH); zien we horizontale rechte, een constante ter hoogte van de maximale waarde. Echter bij analogWrite(64), analogWrite (127); en analogWrite(191); hebben we een afwisseling tussen maximale en minimale waarden. Als we dichter bij de waarde 255 komen zien we de lengte van de top-waarde in de cyclus groter worden. Zo stijgt de resulterende spanning in waarde.

Notities:

Standaard staat de maximale waarde van de PWM, digitale en analoge signalen op 5V. Dit is ook de maximale waarde die de arduino kan leveren. De maximale waarde van de signalen kan echter worden aangepast door gebruik te maken van het commando analogReference();. Dit wordt echter bijna nooit verandert, omdat er juist vaker gewerkt wordt met hogere spanning in plaats van lagere. Om te werken met een hogere spanning is er een externe chip nodig die de de communicatie doet tussen de arduino en een externe energiebron, vaak een batterij.

Naast de standaard aansluitingen hebben we 3 GROUND’s, een 5V en een 3.3V pin. Deze pinnen zijn niet programmeerbaar! Wanneer een component aangesloten is om een 5V en een GROUND, een gesloten circuit, dan zal deze blijven branden, ongeacht de code die verwerkt wordt. De 3.3V wordt vanzelfsprekend gebruikt voor componenten die een operationele spanning van 3.3V hebben in plaats van 5V.

Pinnen met een unieke functie:

Arduino heeft nog 5 andere pinnen, deze pinnen hebben een unieke functie die vaak verbonden is met een commando! Deze pinnen worden dan slechts gebruikt in speciale codes. De AREF-pin wordt gebruikt voor analogReference();, men kan op deze pin een externe spanning tussen 0 en 5V aansluiten. Arduino zal, wanneer gevraagd, de maximale waarde van de PWM-signalen dan gelijkstellen aan deze spanning. IOREF is een extra spanningsbron. De waarde van deze spanning hangt af van het bord die men gebruikt. Bij onze Arduino Uno is dat 5V, bij de Arduino Due zal dat 3.3V zijn. De VIN pin kan gebruikt worden om de arduino te schakelen aan een batterij.

De laatste 2 : de RX en TX.  Deze poorten maken het mogelijk om communicatie te maken met andere apparaten. Niet enkel andere Arduino’s, maar ook bijvoorbeeld je gsm. Met de RX, recieve, en de TX, transmit, kan je bijvoorbeeld een bluetooth-module schakelen. Hier later meer over. Verder hebben we nog een 5V en een 3.3V poort met natuurlijk een nulgeleider, ook gekend als de ground. Deze poorten zijn de plus en min voor items die naast hun poorten ook een werkspanning nodig hebben.

De RESET-pin:

Zoals de naam al doet vermoeden kan je met deze pin de arduino volledig resetten. Dit wordt vaak gebruikt met een externe drukknop, zo krijg je een noodstop. Maar ook in de software kan je een reset zo programmeren.De pin werkt als volgt: wanneer de pin merkt dat het met een ground verbonden is, 0V dus, dan zal deze activeren.

Het werkt eigenlijk heel simpel! Er is zelfs geen code voor nodig. Je moet dus geen aanpassing maken aan je code wanneer je een noodstop wil toevoegen!

arduino voor dummies

In de software kunnen we dit ook programmeren. Dit kan bijvoorbeeld handig zijn wanneer je je noodstop wil automatiseren. Omdat de reset geactiveerd wordt wanneer hij verbonden is met de GROUND, moeten we allereerst onze pin HIGH coderen.

const int resetPin = 12;

const int sensor = 11;

int sensorWaarde ;

void setup() {

digitalWrite ( resetPin, HIGH);

pinMode ( resetPin , OUTPUT);

pinMode ( sensor, INPUT);

}

void loop() {

sensorWaarde = analogRead ( sensor);

if ( sensorWaarde > 800){

digitalWrite ( resetPin, LOW);

// dit zal nooit gelezen worden

}

Schakeling:

arduino voor dummies

De arduino werkplaats:

Het tweede item is het breadboard. Hierop worden de schakelingen gemaakt. Hier is belangrijk dat je de layout van het breadboard begrijpt. Het is in feite één grote verzameling van geleiders. De twee gecentreerd vakken zijn van elkaar gescheiden, er is dus geen geleiding tussen beiden. Intern zijn de gaatjes loodrecht ten opzichte van de de scheiding met elkaar verbonden. De lijnen die evenwijdig lopen met de scheiding zijn dus ‘onbestaande’ terwijl de loodrechte lijnen wel geleiden. Dit is zeer belangrijk , want men kan niets schakelen zonder van loodrechte lijn te veranderen. Noch een ledje noch een weerstand noch… Dit is waarom: een weerstand over een geleider wordt overgeslagen in de stroomkring.

De twee paar buitenste evenwijdige lijnen volgen deze trend echter niet. Even verduidelijken: de twee paren zijn onderling niet verbonden, maar zijn wel intern hetzelfde. De ene is voorbehouden voor de plus , de 5V of 3V poort , de andere voor de min, de ground. In tegenstelling tot de andere zijn hun evenwijdige wel in geleiding , hun loodrechten niet.

Voorbereiden doe je niet alleen:

We hebben voor jullie 12 lessen gemaakt als introductie tot arduino. Na deze 12 lessen zal je de basis van Arduino onder de knie hebben. Met de basis kun je echter al veel projecten realiseren! Je zult namelijk merken dat vele dingen terugkeren en dat veel meer logica zal vinden in de codes die je maakt. Met andere woorden: met een sterke basis is de stap naar gevorderd programmeur zo gemaakt!

De lessen zijn zo opgebouwd dat je steeds leert werken met een bepaald basiscommando in Arduino. De schakelingen van deze lessen zijn er op gedoeld dat je code visueel voorgesteld wordt. Je leert dus steeds een fundamenteel commando gebruiken en ziet waarvoor het gebruikt kan worden. Vaak zijn deze commando’s alom aanwezig, tot in de meest geavanceerde codes. Ze zijn de ruggengraat van de code!

En als kers op de taart:

Tot slot hebben we twee pagina’s waar we wat extra info geven over specifieke zaken die je kunnen helpen in je projecten. Op de pagina “programmeeromgeving” vindt u uitleg over de werking van de Arduino software, de mogelijke functies die gebruikt kunnen worden en de soorten integers. Info over de verschillende commando’s vindt je op onze pagina “commando’s van Arduino”. 

Dit betreft onze uitleg over de basis items die je beslist zult nodig hebben omtrent Arduino. Als jullie dit begrijpen zijn jullie zeker klaar om te beginnen aan het programmeren zelf! We hopen jullie te kunnen blijven vergezellen op reis door de wondere wereld van programmeren!

Als u vragen zou hebben, aarzel dan zeker niet om een mailtje te sturen via supp.goeroe@gmail.com. Wilt u een bepaald onderwerp behandelt zien worden? Stuur ons uw probleem en wij bedenken samen met u een oplossing.