Physical Computing Workshop 23 en 30 november 2010, 09.00 – 13.00 uur en 13.00 – 17.00 uur Lennart Herlaar – V2.0 (aangepast voor de tweede serie workshops)
Programma van de workshop 1. 2. 3. 4. 5. 6. 7. 8. 9.
Uitdelen workshop kits en handouts, aftekenen lijst. Uitpakken workshop kits en controleren inhoud. Toelichting onderdelen, werkwijze, schakelingen. Bouwen van een breadboard Arduino. Testen van de breadboard Arduino met enkele eenvoudige schakelingen. Solderen van de RBBB kit (kan ook later). Testen van de RBBB. Bouwen van diverse schakelingen, onder andere uit de ARDX handleiding. Indien er tijd over is: kies een sensor/toepassing uit de meegebrachte voorraad en probeer die uit. Of bedenk een nieuwe toepassing voor de onderdelen in de workshop kit en werk die uit.
Het is prettig als je aan het einde van de eerste workshop het programma tot en met onderdeel 7 doorlopen hebt. Je beschikt dan over een werkende RBBB waarmee je tijdens de tweede workshop zonder solderen schakelingen kunt bouwen. Je kunt pauze nemen wanneer je wilt. Je kunt naar wens in- en uitlopen. De programmaonderdelen zijn suggesties; als een schakeling je niet interesseert, kun je ‘m overslaan. En uiteraard kun je altijd vragen stellen. Veel plezier!
Programmaonderdelen in detail Bouwen en testen van een breadboard Arduino Bouw het schema zoals beschreven op pagina 5 in de RBBB handleiding in de handout, maar dan op het breadboard. 1. Bouw eerst het voedingscircuit en test dit met de 9V of 12V adapter. Voer voor het aansluiten van de adapter een cross check uit met een andere deelnemer! 2. Brandt de groene led? Meet je een spanning van ongeveer 5V over de led en weerstand? So far, so good! 3. Bouw vervolgens het volledige circuit. Gebruik de lange 6-pin male header voor de FTDI-TTL232R cable port. Daar sluit je straks de USB-BUB op aan. Sluit een rode led (het lange pootje is de plus) met een 220 Ohm weerstand in serie aan op D13 (plus) en GND (min). Onderaan dit document vind je een tabel voor het lezen van de kleurcodes van de weerstanden. Test het geheel met de 9V of 12V adapter. Doe weer eerst een cross check met een andere deelnemer voor je de adapter aansluit! 4. Knippert de rode led? Werkt de reset knop? Gefeliciteerd, je breadboard Arduino werkt! 1
5. Om de volgende stap uit te kunnen voeren, moet eerst een header op de USB-BUB gesoldeerd worden. Vraag hierbij om hulp (demonstratie!) of probeer het zelf (zie onder “solderen van de RBBB kit” voor een toelichting). 6. Koppel de USB-BUB aan de breadboard Arduino via de 6-pin header; let daarbij goed op de oriëntatie (GND op GND)! Test het geheel met de USB-BUB op de 6-pin header en de USB kabel tussen de USB-BUB en een adapter met USB aansluiting (sluit de USB-BUB nog niet aan op de PC). Kijk of de rode led weer knippert en de reset knop nog werkt. Zo ja, dan werkt ook de voeding via de USB poort en ben je klaar voor de laatste stap: communicatie met de PC. 7. Installeer de software zoals beschreven in de ARDX handleiding in de handout. Haal de USB kabel uit de adapter en plug ‘m in de PC. Onder Windows wordt de USB-BUB vanzelf herkend. 8. Werk CIRC-01 door uit de ARDX handleiding (kijk ook onder Making it Better). De 560 Ohm weerstand kun je vervangen door een 220 Ohm weerstand. In plaats van een 10 mm led gebruik je een 5 mm led met een kleur naar keuze. Werkt het allemaal naar behoren? Gefeliciteerd, je hebt je eerste stappen in de wereld van Physical Computing gezet! 9. Zet voor je gaat solderen de basis-code van CIRC-01 (File > Examples > 1.Basics > Blink) weer op de breadboard Arduino. Solderen van de RBBB kit Als je Fading hebt uitgeprobeerd (CIRC-01 onder Making it Better) en alles werkt naar behoren, kun je gaan solderen (per 2 personen; dan kun je van elkaar leren en elkaar behoeden voor fouten). Als er geen soldeerstation vrij is, kun je verder gaan op het breadboard en solderen zodra er een soldeerstation vrij is. Je mag ook een opgebouwde RBBB lenen en daarmee werken tot je je eigen RBBB gesoldeerd hebt. 1. Indien je nooit eerder gesoldeerd hebt, kun je uitleg vragen en even oefenen met een experimenteer-printplaat. Zie ook de RBBB handleiding voor een korte toelichting. 2. Voordat je de RBBB gaat solderen, kun je de headers op de USB-BUB en het LCD display solderen; dat moet namelijk ook gebeuren en het is een mooie oefening. Je LCD display kun je testen met de LCD tester. Vraag daar even naar. 3. Volg de RBBB handleiding. Vergeet niet de punt telkens schoon te maken met de vochtige spons! 4. Na het solderen van de RBBB kun je jumper wires aan de twee contactpunten van de motor solderen; dat is nodig voor één van de schakelingen. Soldeer ook twee jumper wires aan de binnenste pootjes van het relais, met de jumper wires naar buiten gericht (haaks op het relais). (Na afloop van de workshop kun je eventueel je RBBB nog schoonmaken met isopropanol om eventuele flux-resten te verwijderen.) Was je handen na het solderen i.v.m. het lood in het soldeertin!
2
Testen van de RBBB Na het solderen van de RBBB kit is het verstandig de RBBB weer te testen met CIRC-01 (Blink). Gebruik eerst de 9V of 12V adapter en daarna een USB adapter via de USB-BUB. Tenslotte kun je de RBBB via de USB-BUB aan de PC koppelen. Let op: de labels op de RBBB bevinden zich boven de pinnen! Bouwen van diverse schakelingen Probeer achtereenvolgens de volgende schakelingen uit. Wees niet te bang om te experimenteren, zowel voor wat betreft de hardware als de software. Maar let wel op: alles kan stuk! Kijk bij elk circuit uit de ARDX handleiding ook naar de suggesties onder Making it Better. 1. Sluit de RGB led aan en werk CIRC-01 opnieuw door met de RGB led (de RGB led kun je zien als 3 leds in één met een gemeenschappelijke min). Het langste pootje is de min. Vergeet de 3 weerstanden van 220 Ohm niet! Kun je een fading moodlight bouwen? 2. Breid je code uit met text output: laat het programma de actuele kleurwaardes aan de PC doorgeven via de seriële poort. Gebruik hiervoor de Serial library en de Serial monitor van de Arduino IDE. 3. Werk CIRC-02 door uit de ARDX handleiding. Gebruik diverse kleuren leds. Vervang telkens de 560 Ohm weerstand door een 220 Ohm weerstand. 4. Werk nogmaals CIRC-02 door, maar gebruik nu het 7-segment display in plaats van losse ledjes. Zie de datasheet van het 7-segment display in de handout voor de aansluitingen. Vergeet niet de weerstanden! Kun je het display van 0 tot 9 laten tellen? 5. Werk CIRC-05 door. Gebruik weer diverse kleuren leds en vervang weer de 560 Ohm weerstanden door de 220 Ohm weerstanden. 6. Werk nogmaals CIRC-05 door, maar gebruik nu het 7-segment display in plaats van losse ledjes. Kun je het display weer van 0 tot 9 laten tellen? 7. Leen het 7-segment display, het 74HC595 IC en de benodigde 220 Ohm weerstanden van een andere deelnemer. Bouw samen met de andere deelnemer een 2-cijferig 7-segment display met behulp van de twee 74HC595 ICs, in serie geschakeld volgens de Shifting-Out handleiding in de handout. Kun je het display van 0 tot 99 laten tellen? 8. Werk CIRC-03 door. Vervang de transistor door de BC548B. Zie de BC548B datasheet in de handout voor de aansluitingen. Pas op dat je niet de LM335AZ gebruikt; die ziet er hetzelfde uit! Vervang de diode door de 1N4007. Controleer je schema goed voordat je e.e.a. onder spanning zet; elektronica werkt namelijk op rook; als de rook eruit is, is het stuk! ☺ 9. Werk CIRC-04 door. Gebruik de lange 6-pin header om de servo op het breadboard aan te sluiten. 3
10. Neem CIRC-01 als uitgangspunt. Gebruik deze keer echter geen led met een weerstand in serie, maar sluit de piezo buzzer aan. De piezo buzzer is voorzien van een stickertje en aan de bovenzijde (onder het stickertje) een plusteken. Vervang daarna de piezo buzzer door het piezo element. Het piezo element heeft een plusteken aan de zijkant. Kun je het verschil verklaren? 11. Werk CIRC-06 door. Gebruik weer eerst de piezo buzzer en daarna het piezo element. Kun je het verschil verklaren? 12. Open het Knock voorbeeld onder File > Examples > 6.Sensors in de Arduino IDE. Bouw het schema zoals aangegeven in het commentaar bij de code. Gebruik naar keuze de piezo buzzer of het piezo element. Stel de treshold in op 10. 13. Werk CIRC-07 door. De 560 Ohm weerstand vervang je weer door een 220 Ohm weerstand. 14. Werk CIRC-08 door. Gebruik weer een 220 Ohm weerstand en gebruik de 5 kOhm potmeter. 15. Werk CIRC-09 door. De 560 Ohm weerstand vervang je weer door een 220 Ohm weerstand. 16. Werk CIRC-10 door. Let op: we gebruiken een LM335AZ! Deze component wijkt (flink) af van de TMP36 uit de ARDX handleiding. Zo zijn de aansluitingen anders (!) en is ook de output range anders. Zie de datasheet van de LM335AZ in de handout voor details. Bouw de Basic Temperature Sensor schakeling op pagina 6 van de datasheet. R1 heeft een waarde van 2.2 kOhm. Merk op dat de plus van de LM335AZ het middelste pootje is. De GND van de LM335AZ is – van bovenaf met de platte zijde naar je toe gezien – het rechter pootje. Het linker pootje gebruiken we niet. De temperatuur in graden Celsius laat zich afdrukken met: Serial.println((analogRead(temperaturePin) * 500L / 1023L) - 273L); Kun je de formule voor het converteren van de uitlezing naar graden Celsius verklaren? 17. Bouw het circuit uit de Reading a Thermistor handleiding in de handout. Vergelijk de waardes die je krijgt met de vorige schakeling. Kun je een uitspraak doen over het verschil tussen beide sensoren in termen van eenvoud, gebruiksgemak en benodigde rekenkracht? 18. Werk CIRC-11 door. Vervang de transistor door de BC548B. Vervang de diode door de 1N4007. Vervang de 560 Ohm weerstand door een 220 Ohm weerstand. Vervang de 2.2 kOhm weerstand door een 10 kOhm weerstand. Het schema (bodemaanzicht) van het relais vind je hiernaast. NO is pin 10, NC is pin 1 en com is pin 5 en 6. De spoel bevindt zich tussen pin 2 en pin 9. Prik het relais op het breadboard met de middelste pinnen, waar de jumper wires aan vastgesoldeerd zijn, in de sleuf. Het relais is geen DPDT relais. Controlling Motor Direction uit Making it Better is dan ook niet mogelijk. 19. Sluit het LCD display aan zoals beschreven in de LCD tutorial in de handout. Je kunt de backlight zonder weerstand aansluiten (pin 15 is 5V, pin 16 is GND). Probeer de voorbeelden onder File > Examples > LiquidCrystal. Sluit vervolgens de backlight 5V pin aan op een vrije pin van de RBBB. Het is dan verstandig om de stroom die de RBBB pin moet leveren te beperken door een aantal 4
weerstanden (bijvoorbeeld 4 stuks) van 220 Ohm parallel te schakelen en die als geheel in serie te zetten met de backlight pin. Je maakt dan een weerstand van 55 Ohm (= 220/4). Een enkele weerstand van 220 Ohm kan ook, alleen zie je dan weinig meer van de backlight. Een alternatief is de backlight dimmen met analogWrite via een PWM pin (bijvoorbeeld pin 9). Schakel de backlight in en uit vanuit de code. Kun je een circuit bouwen waarmee de LCD de actuele temperatuur weergeeft en het aantal seconden uptime? Voeg een button toe waarmee je het display en de backlight voor 5 seconden kunt inschakelen, waarna het display en de backlight vanzelf weer uitschakelen. (Let op: omdat de backlight nogal wat stroom trekt, kan het zijn dat de temperatuursensor vreemde waardes aan gaat geven als de backlight ingeschakeld is. ☺) 20. Koppel twee RBBBs aan elkaar en laat ze met elkaar communiceren via I2C zoals beschreven in de I2C communication tutorial in de handout. Gebruik twee weerstanden van 2.2 kOhm als pullup weerstanden op de I2C bus. Zorg ervoor dat je de 5V en GND van beide RBBBs deelt: sluit na het individueel programmeren van de RBBBs slechts 1 RBBB aan met de USB-BUB en verbindt een 5V en GND pin van deze RBBB door met een 5V en GND pin van de andere RBBB. Gebruik de Wire library en de master/slave voorbeelden in de tutorial. Indien er tijd over is... Een paar suggesties voor als de tijd het toelaat: 1. Probeer enkele andere voorbeelden onder File > Examples in de Arduino IDE uit. Of kijk eens in de Earthshine Design Arduino Starter Kit Manual (zie onder Documentatie). 2. Experimenteer met intervallen (zie ook de BlinkWithoutDelay en Debounce voorbeelden onder File > Examples > 2.Digital in de Arduino IDE) en interrupts. 3. Bedenk zelf een nieuwe toepassing voor de onderdelen in de workshop kit en werk die uit. 4. Overleg welke sensor/toepassing je zou willen uitproberen en bouw daar een circuit mee. Nunchuk? BlinkM? RFID reader?
Documentatie In de handout 01 - RBBB Instructions http://cdn.shopify.com/s/files/1/0038/9582/files/RBBB_Instructions_06.pdf 02 - ARDX Experimenters Guide http://ardx.org/src//guide/2/ARDX-EG-OOML-WEB.pdf 03 - Datasheet 7-segment display http://pdf1.alldatasheet.com/datasheet-pdf/view/229999/EVERLIGHT/ELS-515SYGWA.html 04 - Serial to Parallel Shifting-Out with a 74HC595 http://www.arduino.cc/en/Tutorial/ShiftOut
5
05 - Datasheet BC548B http://www.datasheetcatalog.org/datasheet/fairchild/BC548B.pdf 06 - Datasheet LM335AZ http://www.national.com/ds/LM/LM135.pdf 07 - Reading a Thermistor http://www.arduino.cc/playground/ComponentLib/Thermistor2 08 - LCD tutorial http://www.arduino.cc/en/Tutorial/LiquidCrystal 09 - I2C communication between two Arduino boards http://absences.sofianaudry.com/en/node/10 10 / 11 - Cheatsheets http://sites.google.com/site/mechatronicsguy/arduinocheatsheet http://tinyurl.com/arduinocheatsheet Niet in de handout All things Arduino http://www.arduino.cc 01 - USB-BUB Instructions http://cdn.shopify.com/s/files/1/0038/9582/files/USB_BUB_instructions.02.pdf 02 - Breadboard Arduino Compatible Assembly Guide http://oomlout.com/BBAC/BBAC-Assembly-Guide.pdf 03 - How to Build an Arduino-compatible Physical Computing Platform on a Solderless Breadboard http://tinyurl.com/bbarduino 04 -Build Your Own Arduino http://www.kristiankarlsen.net/programmer/byoa.pdf 05 - Earthshine Design Arduino Starter Kit Manual http://www.earthshineelectronics.com/files/ASKManualRev4.pdf 06 - Kleurcodes weerstanden http://www.elexp.com/tips/clr_code.gif Website leverancier van de belangrijkste onderdelen van de workshop kit http://jeelabs.org Overzicht inhoud workshop kit http://jeelabs.org/wk102 Verder: Google is your friend...
Zwart Bruin Rood Oranje Geel Groen Blauw Paars Grijs Wit
0
1
2
3
4
5
6
*1
*10
*100
*1k
*10k *100k *1M
7
8
9
*10M -
-
Kleurcodes weerstanden Zie de tabel hiernaast.
Voorbeelden: Rood-Rood-Bruin = 22*10 = 220 Ohm, Bruin-ZwartGroen = 10*100k = 1 MOhm 6