!
Docentenhandleiding Arduino Handleiding voor bij de module Arduino UNO kit
!
Beste collega, voor u ligt de docentenhandleiding voor het vak Inleiding Robotica. In deze handleiding vindt u meer informatie met betrekking tot de module Arduino van Informatica Actief. Uitwerkingen zijn er uitgehaald! Deze zijn wel beschikbaar. Nog even een aanvulling: Opdracht is voldoende wanneer deze werkt! Veel succes bij het toepassen van Arduino in uw lessen! Johan Korten (met dank aan VO en i&i collega Remie Woudt voor het meelezen).
V1.0 November 2010 V1.2 Januari 2011 V1.3 Februari 2011 V1.5 Juni 2011
Copyrights: dit werk valt onder de copyrights van Informatica Actief. Delen uit dit werk vallen onder de Creative Commons share alike licentie.
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
Inhoudsopgave 1. Over de Arduino module!
4
1.1 Lessen!
4
1.2 Niveau!
4
1.3 Een Arduino is....!
5
1.4 Leveranciers en hardware!
6
1.5 Software en klasgebruik!
6
2. Opdrachten Verkeerslicht!
7
2.1 Opdracht 1. Een knipperlicht (week 2)!
7
2.2 Opdracht 2. Een verkeerslicht (week 2)!
8
2.3 Opdracht 3. Een voetgangerslicht (week 2)!
9
2.4 Opdracht 4. Een voetgangerslicht met knop (week 3)!
10
2.5 Opdracht 5. Het volledige voetgangerslicht (week 3)!
11
2.6 Opdracht 6: oversteek met auditieve signalering (week 3 extra!)!
12
2.7 Opdracht 7: Een enkele motor aansturen met PWM (week 4)!
13
2.8 Opdracht 8: De lijn detectie sensor (week 4)!
14
3. Bij de eindopdrachten!
14
Bijlage: Inhoud Windesheim Arduino kit (Freeduino.eu)!
15
Bijlage: Lijn volgende robot - voorbeeldcode!
33
! ! !
Weerstand Kleurcodes!
!
!
!
!
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
!
10
!
1. Over de Arduino module Deze module bestaat vooral uit sheets rond het onderwerp “Arduino”, waarmee het lesgeven met hardware opeens simpel, leuk en uitdagend wordt. Niet alleen de harde Informatica leerling, maar ook de meer op design gerichte leerling kunnen we hiermee aan haar of zijn wensen tegemoet komen. De Arduino module is ontwikkeld om meer aandacht te besteden aan de hardware kant van Informatica. We kennen de binnenkant van de computer wel min of meer maar we hebben nog weinig te bieden in de richting van Technische Informatica en Embedded Systemen. De module is ontwikkeld voor klassikaal gebruik en ook als zodanig getest. Uiteraard is het ook een geschikte module voor zaken als een PWS e.d. hoewel de opdrachten dan wel wat verder uitgebreid zouden kunnen. Er zijn geen toetsvragen in de eerste versie. Zodra er een CSE komt, zullen we als Informatica Actief ook vanuit Arduino (microcontrollers) geschikte examenvragen aandragen. 1.1 Lessen De module is gemaakt om leerlingen behoorlijk zelfstandig te laten werken. Zorg dat u een aantal (liefst alle) vingeroefeningen zelf ook al eens gedaan hebt. Via Informatica Actief en vakvereniging i&i kunt u ook kant-en-klaar maaltijdpakketjes Arduino krijgen als voorbereiding (u leert dan bijv. de verkeerslicht opdracht te maken en kunt deze meteen weer in de klas toepassen). Als leerlingen eenmaal begrijpen dat er digitale en analoge pinnen zijn welke als input of output gedefinieerd kunnen worden om waardes naar toe te schrijven of mee uit te lezen, kunnen ze al heel veel leuke projecten uitvoeren. Daarna is krijgen ze lesstof over o.a. PWM. Deze is een wat lastiger maar zeer nuttig concept, niet alleen om motoren mee aan te sturen maar ook om LED’s te ‘faden’, etc. 1.2 Niveau De module is geschikt voor HAVO en VWO. Het is wel handig dat leerlingen basis programmeer concepten al kennen. Het Arduino platform is zeker heel geschikt om basis programmeer vaardigheden aan te leren, maar die insteek hebben we in deze module niet genomen. Talen zoals Python, Pascal, C# of C++ zijn erg geschikt als basis voor deze module, hoewel het met Visual Basic of eventueel iets als PHP ook al wel zou moeten kunnen.
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
1.3 Een Arduino is....
een platform bestaande uit: - Een Atmel AVR microcontroller - Een Arduino bordje waarmee je de chip kunt gebruiken - Een programmeertool + taal waarmee de Arduino wat kan doen! - Het ‘shield’ concept zodat extra functionaliteit in een handomdraai toegevoegd wordt aan de Arduino basis Alternatieven (o.a.): - Freeduino (in varianten) - Seeeduino - Sanguino
Zie ook: http://en.wikipedia.org/wiki/Arduino
Audio Shield
IO Uitbreiding Shield
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
Apple Remote Shield
!
1.4 Leveranciers en hardware Hoewel we niet aan koppelverkoop doen, toch even een paar tips over leveranciers e.d. Ten eerste staat op arduino.cc een lijst van hardware leveranciers (ook voor Nederland). Freeduino.eu heeft kits gemaakt voor een Hogeschool en daar zijn positieve ervaringen mee. Deze werden ook gebruikt door een testgroep leerlingen in het VO. Tevens heeft Freeduino kits voor de i&i conferentie in 2010 geleverd welke door docenten goed werden ontvangen. A-blocks.org heeft handige kits om zonder solderen (of alleen éénmalig solderen) sensoren en actuatoren meerdere malen toe te kunnen passen. Bij andere kits zullen LED’s e.d. bij verkeerd gebruik soms vervangen moeten worden. Het is ook handig om voldoende breadboard draadjes in voorraad te hebben. Deze raken in de praktijk snel op bij opdrachten zoals het verkeerslicht. Soms is het handig als leerlingen bepaalde sensoren (bijv. voor de bumper) solderen. Dit kunt u natuurlijk ook als docent doen. Het is niet absoluut noodzakelijk maar helpt wel fouten voorkomen. Trouwens, voor de LilyPad is borduren / naaien hét geijkte middel om elektrische verbindingen tot stand te brengen (Zie bij Sparkfun de “LilyPad TechStyles Kit”). Zorg ook dat u wat tangetjes, schoevendraaiers e.d. in de klas heeft zodat leerlingen snel aan de gang kunnen! 1.5 Software en klasgebruik Op Arduino.cc is de Arduino omgeving als Open Source te downloaden. Deze is op zich prima als netwerkversie te installeren. Leerlingen moeten soms wel bij de libraries map kunnen als zij bepaalde sensoren willen gebruiken of zelf de bibliotheek willen uitbreiden. Eventueel kunt u ook zelf eerst zo veel mogelijk uitbreidingen doen aan de bibliotheek en deze aan systeembeheer leveren. Arduino is overigens platform onafhankelijk en het uitpakken van de ZIP naar een USB stick is ook al voldoende om Arduino aan de praat te krijgen. Voor Fritzing geldt zo ongeveer hetzelfde qua installatie als voor Arduino. U kunt leerlingen Fritzing laten gebruiken om ontwerpen te maken van de hardware. Daarnaast kunnen ze met Fritzing nieuwe dingen doen zoals ontwikkelen van nieuwe shields.
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2. Opdrachten Verkeerslicht In deze opdrachtenreeks gaat de leerling een aantal belangrijke Arduino concepten leren door te doen. Ze maken een Verkeerslicht. Tips en best practices: - opbouw van het breadboard uitleggen (en dat dus alle draadjes niet verplicht zijn zoals getekend in de module om toch een werkend geheel te krijgen!) - korte poot LED is min (kathode), lange is plus (anode). In Fritzing (programma van de schema’s die wij gebruiken), loopt de positieve poot een stukje schuin. - weerstanden zijn niet verplicht bij een Arduino microcontroller (als je ze maar niet direct tussen de 5V en GND hangt iig. [de microcontroller levert max 20 mA dus ook als je 5V via een output pin op de µC zet gaat het op zich goed (hoewel een weerstand netter is, bepalen met de wet van ohm of voorschakelweerstandcalculator online). - In de Arduino omgeving staan heel veel voorbeelden en handige functies waaronder “Tools | Auto Format”. Gebruik die functie als u leerlingen met vragen helpt (dan leren ze direct het voordeel van inspringen e.d.). - zie ook de onderdelenlijst en spiekbrief voor weerstanden achteraan in dit document - op Informatica Actief staan geregeld verdiepende thema’s in de Arduino module. Deze zijn niet beslist noodzakelijk voor leerlingen, maar helpen wel bij het beantwoorden van vragen als ‘hoe zit dit’ of ‘hoe werkt dat’. 2.1 Opdracht 1. Een knipperlicht (week 2) a. Zorg ervoor dat de Arduino LED van pin 13 gaat knipperen. (Tip! Gebruik het blink voorbeeld uit de software).
b. hier boven is de hardware voor de tweede toepassing te zien. We gebruiken nu pin 9 om een gele LED te laten knipperen. Sluit de voorschakelweerstand (220Ω) aan zoals in het plaatje hier boven (in het schema hier boven is een 150Ω LED gebruikt). (uitwerkingen zie programma onder examples | blink) !Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.2 Opdracht 2. Een verkeerslicht (week 2) a. Sluit ook op pin 8 en pin 10 respectievelijk een groene en een rode LED aan (zie onder).
b. Laat het verkeerslicht afwisselend op rood, geel en groen staan. 5000 milliseconden op groen, 1000 milliseconden op geel en dan 5000 op rood. Dit eindeloos blijven herhalen. (uitwerkingen zie verderop)
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.3 Opdracht 3. Een voetgangerslicht (week 2) a. Sluit op pin 6 en pin 7 respectievelijk een tweede groene en een tweede rode LED aan.
b. Negeer nu voorlopig het (hoofd)verkeerslicht en implementeer het voetgangerslicht:
Rode LED Aan Groene LED Uit
wacht 20 sec
Rode LED Uit Groene LED Aan
wacht 30 sec
7 sec groen
!
!
Stappen:
! ! ! ! !
! ! ! ! !
Stap 1. 20 seconden wachten Stap 2. rode LED uit en groene LED aan Stap 3. 30 seconden wachten Stap 4. dan groene LED 7 seconden laten knipperen Stap 5. weer naar start positie gaan (rood aan, groene uit)
knipperen
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.4 Opdracht 4. Een voetgangerslicht met knop (week 3) a. Breid de schakeling uit opdracht 3 uit met een knop met een pull-down weerstand (zie onder).
b. Breid de code uit zodat deze ook reageert op het voetgangerslicht.
Rode LED Aan Groene LED Uit
knop gedrukt?
Nee
Ja
wacht 20 sec
Rode LED Uit Groene LED Aan
wacht 30 sec
!Stappen: !Stap 0. Rood aan, groen uit. !! Knop ingedrukt, dan stap 1, anders herhaal stap 0 !Stap 1. 20 seconden wachten !Stap 2. rode LED uit en groene LED aan !Stap 3. 30 seconden wachten !Stap 4. dan groene LED 7 seconden laten knipperen !Stap 5. weer naar start positie 0 gaan (rood aan, groene uit)
7 sec groen knipperen
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.5 Opdracht 5. Het volledige voetgangerslicht (week 3) a. We laten de schakeling hetzelfde.
b. We voegen de code van beide verkeerslichten nu samen tot een werkende situatie. Zodra de knop ingedrukt is ga je nu geen 20 seconden wachten (dus op de plaats van wacht 20 sec) maar ga je de hoofdweg 'ontruimen': - paar seconden wachten - dan verkeerslicht op geel/oranje voor paar seconden - tenslotte verkeerslicht op rood - Daarna pas ga je verder door het voetgangerslicht op groen te zetten.
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.6 Opdracht 6: oversteek met auditieve signalering (week 3 extra!) a. We breiden de de schakeling tenslotte uit met een buzzer. Het is beter de buzzer via een weerstand van ca. 1KΩ aan te sluiten. Een 220Ω weerstand is ook prima.
b. Stap 1. Als het voetgangerslicht op rood staat, piep je kort elke twee seconden. Stap 2. Als je het voetgangerslicht op groen zet, laat je de speaker snel achter elkaar piepen. Stap 3. Als je het voetgangerslicht groen laat knipperen doe je steeds twee piepjes, dan seconde wachten, dan weer twee piepjes, etc. tot het voetgangerslicht weer rood is.
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.7 Opdracht 7: Een enkele motor aansturen met PWM (week 4) a. prik het motorshield op de Arduino b. programmeer het motorshield zodat je motor eerst 10 seconden op halve kracht rechtsom draait, dan 10 seconden op halve kracht linksom, tenslotte 10 seconden op volle kracht (linksom of rechtsom) c. zorg dat je de motor commando’s kunt geven vanaf de seriële terminal
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
2.8 Opdracht 8: De lijn detectie sensor (week 4) a. Maak de lijn volg sensor geschikt voor je Arduino b. Sluit de lijn volg sensor aan op je Arduino (zie document op blackboard) c. Programmeer de sensor d. Bekijk het verschil in waardes tussen een witte en zwarte oppervlakte. Noteer de waardes en laat deze opdracht aftekenen. 3. Bij de eindopdrachten Stimuleer leerlingen zo veel mogelijk om zelf een eindopdracht te verzinnen. Er worden (in de eerste fase) twee eindopdrachten aangedragen: - robot karretje als lijnvolger o.i.d. (m.b.v. LEGO basis en motoren of eventuele andere materialen) en huis - wuppie met intelligent gedrag (kunstmatige emoties, sociale robot) Voor het robot voertuigje is een normale Arduino (Duemilanove of UNO) een goede keuze. Voor de wuppie is een Lilypad Arduino met sensoren en actuatoren een betere keuze. De wuppie is een uitdagende opdracht, het zou met een iets groter groepje kunnen want het is meer werk dan een robot karretje. Kosten wuppie: ca 100€ (vooral Arduino Lilypad en sensoren / actuatoren / LiPo batterij / geleidend draad) Kosten robot voertuigje: ca 75€ (motoren, LEGO onderdelen, Arduino, lichtsensoren en overige sensoren, Motorshield). Er zijn tal van andere toepassingen mogelijk, zo bedachten leerlingen uit de testgroep een kubus (gemaakt in een zogenaamd FabLab met Plexiglas) met een acceleratiesensor welke verandert van kleur bij het detecteren van beweging.
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
Bijlage: Inhoud i&i 2011 Arduino kit (Floris.cc) Inhoud starterkit Arduino 1x Arduino UNO
1x USB Cable 1x Breadboard Clear Self-Adhesive. 10x M/M Jumper wires
3x yellow LED5 3x green LEDs 3x red LEDs 5x 10kΩ resistor 5x 1kΩ resistor 5x 330Ω resistor 3x push button 1x buzzer 1x Microswitch - 2 Terminal 1x Mini Photocell
1x doosje om kit in te bewaren
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!
!
(Tip: Google: “resistor color code calculator”)
!Handleiding Arduino - Inleidende opdrachten met Uitwerkingen!