Programmeren kun je leren

De RaspberryPi is een perfect platform voor onderwijs in hard- en software. In dit artikel kun je zien hoe je Rasbian installeert op de Rpi en welke tools er allemaal meekomen in de standaard distributie. Naast Scratch, waar ik het in dit artikel met name over ga hebben, kan ik je toch ook SonicPi en Mathematica niet onthouden. Allemaal open source en heel mooie initiatieven om je de belangrijkste “skill” van de eenentwintigste eeuw bij te brengen: programmeren!

New Out Of the Box Software.

Als eerste moet je natuurlijk een OS op je micro-SD kaart installeren. Hiervoor kun je het “New Out Of the Box Software” (NOOBS) image gebruiken, hiermee start je rechtstreeks een installer op je RaspberryPi. Je kunt een SD kaart kopen met NOOBS erop geïnstalleerd maar je kunt het image natuurlijk ook downloaden en vanaf een andere laptop of PC op je SD kaart installeren. In de NOOBS installer kun je via de GUI een aantal opties selecteren en het OS naar keuze installeren.

 

Voor NOOBS heb je wel een volledig aangesloten RaspberryPi nodig, met toetsenbord en scherm.

 

Image op je micro SD kaart installeren.

Voor dit artikel ga je gebruik maken van de Rpi als 'headless' machine. Hiervoor kies je in de sectie downloads bij raspberrypi.org de Rasbian Jessy image op basis van de gelijknamige Debian distro. Nadat je de image hebt gedownload kun je de zip file uitpakken.

 

Je stopt je micro SD card in een SD card adapter zodat je deze in je laptop of PC kunt schuiven. Op mijn Linux Mint 17 laptop wordt de SD card herkend en een file-manager geopend. Deze kun je weer sluiten, we gaan het image via de commandline op de SD card zetten.

 

Als je de zipfile hebt uitgepakt verschijnt er een image file op je disk, in mijn geval '2015-09-24-raspbian-jessie.img'. Nu ga je met 'dd' de image file op je SD kaart installeren. Waarschuwing: Pas een beetje op met dd, je kunt ook het image naar de harde schijf van je laptop of PC kopiëren maar dat is niet de bedoeling!

Stappen:

1) Draai 'df -h' op je commandline. Daarmee kun je zien welke opslagmedia waar zijn gemount.

2) Stop je SD kaart in de lezer en doe 'df -h' nogmaals. Nu kun je de naam van je SD kaart zien verschijnen zodat je weet waar naar toe je de image moet kopiëren straks. Zie afbeelding 2: hierin zie je dat mijn SD kaart staat genoemd onder '/dev/mmcblk0p1', de p1 staat voor de partitie op de SD kaart, als je straks naar de SD kaart gaat schrijven doe je dat naar de hele kaart dus die p1 moet je dan weglaten.

 

 

3) Nu je de naam van de SD kaart kent, kan je de kaart unmounten. Draai 'umount /dev/mmcblk0p1' op de commandline. Vul voor 'mmcblk0p1' de naam in die de SD kaart op jou systeem heeft gekregen (vergeet het partitienummer niet!).

4) Nu kun je het image op de kaart schrijven met dd. Hiervoor heb je het pad naar de image file nodig, en de naam van je SD kaart natuurlijk.

 

               'dd bs=4M if=2015-09-24-raspbian-jessie.img of=/dev/mmcblk0'

 

Het dd commando moet je als root draaien dus als je niet als root bent ingelogd op je systeem (verstandig!) kun je er 'sudo' voor zetten. Het dd commando geeft verder geen meldingen over voortgang dus geduld is een schone zaak. Wil je toch weten of er iets gebeurd, dan kun je in een andere terminal het commando 'sudo pkill -USR1 -n -x dd' draaien, daarmee verschijnt er een aantal log-regels in de terminal waar dd draait (zie afbeelding 3).

 

 

5) Draai 'sync' zodat je zeker weet dat alles naar de SD kaart is geschreven. (Tip: als je een wifi dongle in je Rpi wilt gebruiken kun je de wifi instelling heel handig aanmaken op de SD kaart als deze nog in je laptop zit!)

6) Unmount je SD kaart.

 

Nu kun je de SD kaart uit de lezer halen en in je RaspberryPi stoppen. Verbind de Rpi via een ethernet kabel met je router en stop de stekker erin! Mocht je problemen ondervinden met het kopiëren van het image naar de SD kaart, kijk dan eens op de website (zie link 2), daar vind je uitgebreide documentatie hierover.

 

Ervan uitgaande dat je RaspberryPi nu netjes is opgestart kan je verbinding zoeken met de Pi. Dit kun je op twee manieren doen, via de terminal met ssh, of via een remote desktop client via RDP. Maar dan heb je natuurlijk het IP-adres van de RaspberryPi nodig, zelf gebruik ik hiervoor al een tijdje een handige Android app op mijn telefoon genaamd 'fing', zie screenshot afbeelding 4.

 

 

Nu je het IP-adres van de Rpi kent, kun je als check inloggen met de standaard gebruiker 'pi' via ssh.

 

               'ssh Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken. '

 

Je wordt gevraagd om het passwoord in the typen (standaard “raspberry”) en de sha-key voor deze host te accepteren als 'trusted' host.

 

Als het goed is ben je nu ingelogd met ssh op de RaspberryPi als gebruiker 'pi'.

 

Om een remote desktop verbinding met de Rpi op te zetten heb je een RDP server nodig. Deze kan je installeren met het volgende commando:

 

'sudoapt-get install xrdp'

 

Xrdp zal worden gestart als service en er is verder geen configuratie nodig. Kies nu je favoriete RDP client (voor mij is dat Remnia) en vul de gegevens in voor een RDP sessie. Vul voor de server het IP-adres van je Rpi in, user is 'pi' paswoord is 'raspberry' en je kunt inloggen op de GUI.

 

Nu kan het echte werk beginnen.

 

De RaspberryPi 2 is een stuk sneller dan zijn voorganger, zelfs Libre Office is beschikbaar! En de web browser is nu qua snelheid zeer acceptabel voor dagelijks gebruik. Je kunt de locale naar Nederlands zetten via Menu > Preferences > RaspberryPi Configuration, tabblad “Localisation”.

 

 

De menu balk is verplaatst naar boven en linksboven zit het start-menu. Rasbian OS heeft standaard al een aantal software pakketten voor onderwijs geïnstalleerd. Naast Scratch is ook SonicPi erg de moeite waard. De ontwikkelaar van SonicPi (Sam Aaron) ziet de RaspberryPi en meer specifiek de kunst van het programmeren, als een nieuw muziek instrument. Welk kind leert nu nog een viool of klarinet bespelen? Niemand meer toch? SonicPi is hét muziekinstrument van de kinderen van deze eeuw! En naast het leren bespelen van een muziekinstrument leer je ook nog eens programmeren, twee vliegen in één klap! Zijn TEDx praatje is zeer de moeite waard (zie link 7).

 

Scratch

Scratch is een platform waarmee je visueel kunt leren programmeren. Het is ontwikkeld door MIT en vrij beschikbaar om interactieve animaties en spelletjes mee te maken. Er is een uitgebreide online community waar je vragen kunt stellen en projecten kunt delen. Je kunt scratch ook online gebruiken, maar voor dit artikel maak ik natuurlijk gebruik van Scratch op de RaspberryPi!

 

Een Scratch project bouw je op rond een zogenaamde Sprite, dit is je animatie figuurtje. Dit figuurtje kun je besturen op je scherm, in een vorig artikel (LM4) heb ik laten zien hoe je met de BrickPi deze Sprite echt tot leven kunt laten komen met een LEGO robot. Nu ga ik wat dieper in op de bouwstenen van Scratch.

 

Voor een beginners tutorial kun je online een handleiding downloaden (zie link 4).

 

Hier volgt een zeer beknopte introductie. De gekleurde componenten geven ieder een bepaalde groep van functies weer. Bewegen, besturen, uiterlijk, waarnemen, geluid, functies, pen en variabelen zijn de basis onderdelen van jouw Scratch project. In afbeelding 6 zie je een “Hallo Wereld!” voorbeeld van een programmaatje dat met behulp van drie blokken de Sprite “Hallo Wereld!” laat zeggen.

 

“Event-driven” programmeren

Event-driven betekent dat de stroom van het programma wordt bepaald door de gebeurtenissen zoals muisklikken, ingedrukte toetsen en/of berichten tussen de verschillende delen van het programma (1 of meerdere Sprites of interactie met de achtergrond). Laat ik als voorbeeld een project nemen dat online beschikbaar is (zie link 5): Event-driven basics. Hierin wordt perfect uitgelegd hoe informatie stroomt tussen de verschillende scripts die ieder wachten op voor hun relevante berichten en interacties met andere onderdelen van het programma. Als je op “Bekijk van binnen” klikt kom je in een online variant van Scratch terecht. Hierin kun je duidelijk de verschillende scripts zien die ieder wachten op een of meerdere “events”, zie afbeelding 7.

GPIO

Een mooie toepassing voor de RaspberryPi is de mogelijkheid om via de RaspberryPi GPIO te koppelen met de echte wereld! GPIO staat voor “General Purpose Input/Output” en hiermee kun je dus interfacen met andere elektronica zoals LEDs, servo's en andere output devices. Je kunt ook input sensors zoals temperatuur of ultrasone afstandsmeters of een kompas implementeren. Er zijn veel “breakout” boards beschikbaar, zoals het al eerder genoemde BrickPi board. Een goed startpunt om te gaan experimenteren met de GPIO op de RaspberryPi via Scratch kun je vinden op de weblog Cymplecy (zie link 6).

 

Let op! De GPIO werkt met 3.3V. Als je gaat spelen met de GPIO en dingen verkeerd aansluit kun je je Rpi kapot maken! Je bent gewaarschuwd!

 

Een simpel projectje van deze weblog voor de GPIO interface waarmee je kunt starten is het projectje waarin je een LED via een weerstand aansluit op de GPIO poort en deze LED aan en uit laten knipperen via Scratch. Hiervoor moet je de installer van de weblog gebruiken, er worden dan twee nieuwe icoontjes aan je desktop toegevoegd waarmee de link tussen Scratch en de GPIO poort wordt gelegd. Als je Scratch nu via die icoontjes opstart kun je de GPIO poorten via Scratch aansturen (output) of uitlezen (input). Het schema voor dit projectje kun je vinden in afbeelding 8.

 

 

De GPIO heeft natuurlijk een aantal ingangen en uitgangen. De PIN ordening is niet heel duidelijk maar PIN (11, 12, 13, 14, 15, 16 en 18) zijn de uitgangspoorten. PIN (22, 7, 3, 5, 24, 26, 19, 21, 23, 8 en 10) zijn de ingangspoorten.

Als eerste kun je de weerstand (van tenminste 330 Ohm) met de LED op PIN 1 en 6 aansluiten. PIN 1 is de voeding(van 3.3V) en PIN 6 de Grond (van 0 V), als het goed is gaat de LED branden, zo niet kun je de LED diode andersom proberen. Als je zeker weet dat de LED werkt kun je PIN 1 omzetten naar PIN 11.

Nu kun je Scratch opstarten met de GPIO modus door het icoontje te gebruiken dat met de installer op je desktop is aangemaakt. Bij het opstarten van Scratch met GPIO krijg je de melding “Sensorverbindingen met elders zijn ingeschakeld”. Klik <OK>.

Het voorbeeld is beschikbaar in de Scratch folder onder de projectnaam blink11. Open dit project (zie afbeelding 9), klik op de groene vlag en de LED zou moeten gaan knipperen!

 

In dit artikel heb je kunnen zien hoe je Scratch gebruikt op je RaspberryPi. Je kunt Scratch op heel veel platformen en zelfs direct online gebruiken. Het leuke van het draaien van Scratch op de RaspberryPi is dat je via de GPIO ook hardware kunt aansturen of uitlezen. 

 

Links:

 

[1] https://www.raspberrypi.org/downloads/raspbian/

[2] http://elinux.org/RPi_Easy_SD_Card_Setup

[3] http://scratchweb.nl/

[4] http://fromscratched.nl/index.php/scratch-beginnershandleiding-beschikbaar-in-het-nederlands/

[5] https://scratch.mit.edu/projects/19413882/

[6] https://cymplecy.wordpress.com/

[7] https://youtu.be/TK1mBqKvIyU

NEDLINUX FORUM

Het nederlandse linuxforum
Voor beginners en pro’s

 

 

 

 

E-mailadres



 

 

Nieuwste editie:

Linuxmag op Facebook

@linuxmagnl op Twitter

linuxmagNL Ook de Red Hat Forum BeNeLux 2017 mag je dit jaar niet missen. 10 oktober 2017, zet het in je agenda! https://t.co/niY9UdK3Ov
linuxmagNL Mis het niet en save the date! Red Hat Tech Day, 13 juni 2017. https://t.co/qlMiphMT0l