Scratch + Arduino = Megacool!

Programmeren is een computer laten doen wat jij wil. Getallen optellen, geluidjes maken, vierkante mannetjes met een pikhouweel over je scherm laten rennen: allemaal geen probleem voor je gewone laptop. Met de programmeertaal Scratch kan je al deze dingen op een leuke manier zelf bouwen.

Maar soms wil je meer... Wat als je met een motortje het deurtje van de kooi van je kanariepiet wil besturen, zodat hij elke dag om 13u27 een luchtje kan gaan scheppen? Of wat als je een echt lampje wil laten knipperen als er te veel lawaai in de klas is? Je kan niet zomaar een motortje aan je pc aansluiten, of een lampje in je computer stoppen... (Nu ja, je zal altijd wel een gaatje in je computer vinden waarin je een lampje kan proppen, maar de kans dat het lampje ook effectief gaat oplichten is eerder klein in dat geval ;-)

ARDUINO

Je hebt in dat geval een computer nodig waaraan je allerlei leuke spullen kan aansluiten. Een veel gebruikt mini-computertje is de Arduino (spreek uit: 'ardwienoo'). Er bestaan verschillende soorten Arduino computertjes, maar ze hebben allemaal een paar eigenschappen gemeen:

  • Ze zijn gelukkig niet superduur (vanaf zo'n €15 vind je Arduino-compatibele computertjes op e-bay);

  • De software om ze te programmeren is gratis;

  • Ze hebben aansluitingen waaraan je elektronische componenten kan koppelen (Yes! Net wat we nodig hebben!);

  • Ze zijn supercool!

Als je start met Arduino dan zijn de types Arduino Uno of Arduino Leonardo ideaal.

De Arduino Uno is een 'ouder' type en is waarschijnlijk het meest gebruikt, waardoor je ook veel compatible programma's en uitbreidingsbordjes vindt:

Arduino Unp

De Arduino Leonardo is een nieuwer type en is vaak goedkoper te vinden. De Arduino Leonardo heeft als voordeel dat je hem kan programmeren als muis of toetsenbord voor een pc: leuk als je bijvoorbeeld zelf een MaKey MaKey wil maken ;-)

Arduino Leonardo

Een Arduino is dus een mini-computertje zonder muis of toetsenbord. Hoe kan je hem dan programmeren? In Scratch bouw je een programma op je laptop, en voer je het uit op diezelfde laptop. Een Arduino kan wel programma's uitvoeren, maar op een Arduino zelf kan je dus geen programma's bouwen... Hiervoor heb je nog steeds een 'gewone' computer nodig: je bouwt een Arduino-programma op je gewone computer en je stuurt dit programma op naar je Arduino door een usb-kabel.

ARDUINO IDE

Om Arduino-programma's te bouwen heb je de Arduino ontwikkelomgeving nodig. Deze vind je terug op de Arduino website:

    • Ga naar http://www.arduino.cc/

    • Klik op 'Download'

    • Klik onder 'Arduino IDE' op het installatiepakket voor jouw computer. In dit artikel wordt versie 1.0.5 voor Windows gebruikt.

'IDE' staat voor 'Integrated Development Environment' of vertaald 'Geïntegreerde Ontwikkelomgeving'. Veel te moeilijke woorden om gewoon te zeggen 'Programma waar alles in zit om het ding geprogrammeerd te krijgen' ;-)

Als je je Arduino aansluit op je computer dan zal hij een bepaald poortnummer toegewezen krijgen. Vergelijk het een beetje met het kanaalnummer van een walkie-talkie, of het kanaalnummer van een auto op afstandsbediening. Enkel als je computer naar het juiste 'kanaal' berichten stuurt dan zullen deze bij de Arduino aankomen. Het poortnummer van je Arduino vind je terug in het scherm 'Apparaatbeheer (Device Manager)' van Windows:

Arduino Leonardo in Windows Apparaatbeheer

In dit voorbeeld heeft de computer dus een Arduino Leonardo gevonden op poort 'COM7'. LET OP - Je computer zal pas Arduino's herkennen nadat je de Arduino software geïnstalleerd hebt. Naast de ontwikkelomgeving worden immers ook stuurprogramma's geïnstalleerd. Zonder deze stuurprogramma's herkent je computer niet wat je hebt aangesloten.

EEN VOORBEELD ARDUINO-PROGRAMMA

Volgende stap: een programma uploaden naar je Arduino! Dat doe je door de Arduino ontwikkelomgeving op te starten:

Hmm, da's helemaal wat anders dan Scratch... Geen poes en geen leuke blokjes die je aan elkaar kan plakken... Haal je dactylo-boek maar alvast uit de kast, want Arduino programma's maken doe je door programmeertaal in te typen! Instructies geef je dus niet met blokjes maar door speciale woorden in te typen die de Arduino begrijpt. Gelukkig zitten in de Arduino IDE een aantal voorbeeldjes ingebakken:

    • Klik op 'Bestand' > 'Voorbeelden' > '01. Basic' > Blink

    • Je ziet nu hoe een Arduino-programma er uit ziet:

Heel wat anders dan die leuke Scratch blokjes, maar op zich valt het allemaal nog wel te snappen:

    • De grijze tekst is niet belangrijk voor de Arduino: dit is extra uitleg die de programmeur er heeft bijgeplaatst om beter te begrijpen hoe het programma werkt. Net hetzelfde dus als het toevoegen van commentaar in een Scratch script door op de rechtermuistoets te klikken.

    • Het lijntje "int led = 13" betekent "maak een variabele met de naam 'led' en geef hem de waarde 13". Makkelijk, variabelen kennen we immers ook van scratch! Het woordje 'int' heeft geen tegenhanger in Scratch: dit betekent dat de variabele enkel gehele getallen mag bevatten, dus geen kommagetallen of tekst.

    • Dan krijg je een stukje met de naam 'setup'. Alles wat tussen de accolades achter 'setup' geplaatst wordt zal de Arduino 1 keer uitvoeren als hij opstart. Vergelijk het gerust met het blokje dat uitgevoerd wordt als je in Scratch op het groene vlaggetje drukt. In dit voorbeeld zal de Arduino één ding doen als hij opstart: de aansluiting (pin) met nummer 13 configureren als een uitgang (output). Met aansluiting 13 zullen we dus dingen kunnen gaan aansturen!

    • Een tweede stuk heeft de naam 'loop', opnieuw een speciaal Arduino-woord: alles wat tussen de accolades achter 'loop' komt te staat zal eindeloos door de Arduino herhaald worden. Net hetzelfde als een scratch herhaal-blokje dus!

    • In het loop blok gebeurt het volgende:

      • Zet uitgang 13 aan;

      • Wacht 1000 milliseconden (1 seconde dus);

      • Zet uitgang 13 uit;

      • Wacht opnieuw 1 seconde.

    • Dit wordt gans de tijd herhaald. Als we een lampje aansluiten aan uitgang 13 hebben we dus een knipperlicht! Nog beter nieuws: de Arduino heeft een ingebouwd ledje aangesloten aan uitgang 13, dus we hoeven enkel maar dit programma op te sturen naar de Aurduino om een ledje te laten knipperen!

Het programma naar de Arduino opsturen doe je als volgt:

    • Zorg er eerst voor dat het juiste type Arduino ingesteld is. Dit doe je door op 'Extra' > 'Board' te klikken en het juiste type uit de lijst te selecteren.

    • Je dient ook het juiste poortnummer in te stellen. Dit doe je door op 'Extra' > 'Seriële Poort' te klikken en het juiste poortnummer te selecteren.

    • Het ingestelde Arduino-type en poortnummer vind je rechts onderaan terug:

Je kan nu het programma opsturen door op de upload knop te klikken. Een paar seconden later zou het uploaden voltooid moeten zijn:

De Arduino zal automatisch herstarten en het programma beginnen uitvoeren waardoor het ingebouwde ledje begint te knipperen. Cool, ons eerste 'echte ding' dat we aansturen! Om dit programma uit te voeren heeft je Arduino de computer niet meer nodig, ook als je hem aansluit aan een gsm-lader of aan batterijen zal hij opnieuw opstarten en het ledje laten knipperen!

MAAR IK VIND BLOKJES PLAKKEN LEUKER...

Allemaal leuk zo'n Arduino, maar betekent dit nu dat we die ingewikkelde Arduino-taal moeten leren om een kanariepietenkooiopener te maken? Neen! Je kan je Arduino ook aansturen vanuit Scratch! Hiervoor dien je wel een paar dingen te installeren, zowel op je Arduino als op je computer:

Je Arduino voorbereiden

    • Open de Arduino IDE, en klik op 'Bestand' > 'Voorbeelden' > 'Firmata' > 'StandardFirmata'

    • Klik op de knop 'Uploaden'

    • Klaar! Op je Arduino draait nu een programma dat continu wacht op instructie die via de usb kabel gestuurd kunnen worden.

Java installeren

    • Vaak staat Java al geïnstalleerd op je computer, vaak ook niet... Indien Java nog niet geïnstalleerd is kan je dit doen vanaf http://java.com/nl/download/. Let op: standaard tracht Java ook nog wat onnodige toolbars ed. te installeren, dus vink dit uit bij de installatie-opties.

Het hulpprogramma 'scratch4arduino' installeren

    • Het programma 'scratch4arduino' vormt een bruggetje tussen Scratch en de Arduino: het ontvang instructies van Scratch en stuurt deze door naar de Arduino;

    • Ga naar https://github.com/cbecc/scratch4arduino;

    • Klik op 'Download zip', bewaar het zip bestand en pak het uit;

    • In de uitgepakte map zal je een aantal 'bat'-bestanden terugvinden om het hulpprogramma te starten met het juiste poortnummer (COM2, COM5,...);

    • Staat jouw poortnummer er niet bij? Kopieer dan 1 van deze bestanden en bewerk het met 'Kladblok (Notepad)' om het juiste poortnummer in te stellen:

  • Dubbelklik op het 'bat' bestand. Als alles goed gaat zal het hulpprogramma opstarten en verbinding maken met de Arduino:

    • Het hulpprogramma is nu klaar om instructies te ontvangen vanuit Scratch en deze verder te sturen naar de Arduino!

Extra blokjes in Scratch laden

Om vanuit Scratch instructies te sturen naar het hulpprogramma heb je speciale blokjes nodig. Deze tover je als volgt tevoorschijn (LET OP - Dit kan enkel in de offline versie van Scratch, en dus niet in de website-versie van Scratch):

    • Houd de 'SHIFT' toets (de toets met het pijltje omhoog die je gebruikt om hoofdletters te typen) ingedrukt en klik op het menu-item 'Bestand'. Je merkt nu een geheime optie 'Import Experimental Extension'. Klik hierop:

    • Ga naar de 'scratch4arduino'-map, selecteer het bestand 'A4S.s2e' en klik op openen:

    • Bij 'Meer blokken' verschijnen nu extra blokjes waarmee we de Arduino kunnen aansturen:

Het groene 'lampje' geeft aan dat Scratch nu verbonden is met het hulpprogramma. Als het lampje rood zou zijn, dan is er iets mis... We zijn nu klaar om ons eerste Scratch-Arduino programma te bouwen.

+++ Belangrijk +++ Belangrijk +++ Belangrijk +++

Het aansturen van externe hulpprogramma's en toestellen wordt nog niet officieel ondersteund, en wordt daarom nog experimenteel genoemd. Er zitten ook nog verschillende foutjes (bugs) in Scratch waardoor Scratch durft vast te lopen! Daarom deze tips:

    • Bewaar heel regelmatig je programma, zo verlies je niet veel werk als Scratch vastloopt en herstart dient te worden;

    • Sluit eerst je Arduino aan op je computer, start daarna het hulpprogramma en start pas als laatste Scratch op;

    • Sluit steeds eerst Scratch af, sluit daarna pas het hulpprogramma en ontkoppel daarna pas je Arduino;

    • Zodra je extra blokje inlaadt werkt het groene vlaggetje niet meer... Je dient dus je scripts op een andere manier te starten, bijvoorbeeld door ergens op te klikken en een signaal 'start' uit te sturen;

Hopelijk lost het Scratch team snel deze fouten op, de fouten zitten zeker nog in de huidige versie v385.

+++ Belangrijk 2+++ Belangrijk 2+++ Belangrijk 2+++

Door foute dingen of dingen fout aan te sluiten aan je Arduino kan je hem stukmaken. Zorg dat je steeds begeleid wordt door iemand met voldoende elektronica-kennis, of gebruik enkel het ingebouwde ledje van de Arduino.

Je Scratch programma bouwen.

Eindelijk is het zo ver: Scratch blokjes puzzelen om een ledje aan sturen! Dit is super-eenvoudig:

    • Gebruik eerst een blokje 'Configure pin' om een aansluting te configureren als uitgang (output). Een uitgang (output) dient om dingen aan te sturen (bijvoorbeeld om ledjes te laten branden of om een motortje te laten draaien). Een ingang (input) dient om dingen te meten (hoe licht het is, of een knop ingedrukt werd,...) Om een ledje te laten knipperen hebben we dus een uitgang (output) nodig;

    • Zet in een herhaal blokje telkens de uitgang aan (high) en weer uit (low), telkens met een wachtblokje tussen;

    • Je programma ziet er dan als volgt uit:

Merk op dat in dit voorbeeld het ledje begint te knipperen door op de spatiebalk te drukken (het groene vlaggetje is immers stuk...)

WAT NU?

Als je een beetje van technologie houdt vind je uiteraard een ledje laten knipperen als supercool! Uiteraard kan je nog veel coolere dingen bouwen met een Arduino: haal je beste Google-truks boven, en je zal niet weten wat eerst te bouwen! Wellicht vind je later op deze site ook nog wat project-ideetjes terug...

EXTRA LINKS

http://www.coderdojoarduino.tk/

https://drive.google.com/folderview?id=0BxJHvnjGv9_gYlM2T3pWQnhZNEU&usp=sharing

https://plus.google.com/u/0/communities/113072852683384555015

Nederlandstalige info over Arduino, door een CoderDojo Belgium Coach

http://s4a.cat/ - Een aangepaste 'oude' versie van scratch waarmee je ook je Arduino kan aansturen. De info op de website werkt enkel met de Arduino Uno,

http://snap.berkeley.edu/ - Een ander Scratch-achtig programma waarin je eigen blokjes kan gebruiken. Er zijn op het internet ook blokjes voor Snap te vinden om een Arduino aan te sturen