De Raspberry Pi is bij Junior IOT erg populair. Deze lessenserie helpt je bij je kennismaking met de Raspberry Pi. We kijken naar ‘software dingen’ en ‘server dingen’ waarvoor wij dit apparaat graag inzetten. Voor andere toepassingen gebruiken we vaak andere apparaten.
Voor leerkrachten adviseren we als extra ondersteuning het boek ‘Raspberry Pi en het Internet of Things’ van Krijn Hoogendorp, ISBN 978-90-5752-394-6. De hoofdstukken over GPIO projecten en programmeren slaan we in deze lessenserie echter over – daarvoor gebruiken we immers een aanpak met de Arduino.
Sectie 1 – Unboxing en aansluiten
Wanneer kiezen we bij Junior IOT voor de Raspberry Pi
De Raspberry Pi is een heerlijk apparaat om mee te werken. In het voorjaar van 2018 hebben de juniors bijvoorbeeld al een draadloze train-cam gemaakt. Onze groep heeft voor onze werkplaats ook de wireless security cam met motion eye gemaakt. En onze netwerk share is met een Raspberry Pi gebouwd.
Er zijn natuurlijk meerdere soorten hardware die je kunt kiezen als je een project gaat bouwen. Welke hardware past bij welk project? Wij komen in onze projecten bij Junior IOT vaak tot deze keuze:
- Eerste lessen in programmeren met leds en hardware –> Arduino Nano.
- Eerste lessen in programmeren met animaties en scheet geluiden –> Scratch (is niet echt ons ding).
- Lora IOT sensors en communcatie –> Arduino Lora32u4.
- Afstand bestuurbare hardware, leds, effecten –> ESP8266 of ESP32.
- Battlebot Challenge, Lasergame Challenge –> ESP8266 of ESP32.
- Robotica en robotarmen –> Arduino Nano.
- Server hardware, shares, camera streaming –> Raspberry Pi.
De Raspberry Pi kan héél veel, geeft veel rekenkracht, en vooral de beschikbaarheid van de vele distributies en software op Linux maakt het een aantrekkelijke keuze voor complexere projecten.
De verschillende uitvoeringsvormen Raspberry Pi
We zien meerdere vormen. Het is goed om de voor- en nadelen van elk van deze tegen elkaar af te wegen. Zie ook https://www.raspberrypi.org/documentation/faqs/ en https://en.wikipedia.org/wiki/Raspberry_Pi
- Raspberry Pi 1 B (2012) – power via micro usb, ethernet.
- Raspberry Pi 1 A (2014) – power via micro usb (geen wifi, geen ethernet, geen bluetooth).
- Raspberry Pi 2 (2015) – power via micro usb, ethernet.
- Raspberry Pi Zero (2015) – $5, mini formfactor, power via micro usb, ethernet.
- Raspberry Pi Zero W (2017) – mini formfactor, power via micro usb, ethernet, wifi, bluetooth.
- Raspberry Pi 3B+ (2018) – power via micro usb, ethernet, wifi, bluetooth, USB boot, network boot.
- Raspberry Pi 4B (2019) – power via USB-C, gigabit ethernet, wifi, bluetooth, dual hdmi 4k.
- Raspberry Pi Nano – geheel andere architectuur, bijna aqlsof merknaam op Arduino Nano is geplakt.
Voor je gewone projecten adviseren we nu de Raspberry Pi 3B+. Versie 2 is bijna niet meer te koop. De Zero is ontzettend gaaf voor kleine projecten. De versie 4, met alle extra features en mogelijkheden stelt hogere eisen aan de randapparatuur en de voeding en is daarmee lastiger. Lees meer op: https://www.seeedstudio.com/blog/2019/09/30/raspberry-pi-4-vs-pi-3-all-the-major-differences/
Lees de specificaties van de Raspberry Pi 3B+ even door: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/
Hoe werken we in het ICT Lab
In het ICT Lab willen we elkaar helpen en wordt ons gevraagd om netjes samen te werken. Samenwerken geeft natuurlijk wat geluid, maar zorg dat je elkaar daar niet mee lastig valt.
Omdat we best veel willen doen is het belangrijk om als groep de uitlegstem van de leerkracht te volgen. Als groep ben je dan stil. Mocht je het niet goed horen dan kan je na de uitleg met elkaar overleggen.
Het is de bedoeling dat je elkaar helpt. Als je samenwerkt in een oefening, dan zorg je dat je ook een deel van de oefening uitvoert. Voor je examen moet je alles ook zelf kunnen doen.
Wat heb je nodig
We nemen de Raspberry Pi 3B+ als voorbeeld voor onze verkenning. Elke andere vorm kan ook zolang je rekening houdt met de verschillen.
Wat hebben we nodig
- Raspberry Pi 3B+
- Micro SD kaart van 8GB of meer
- Micro usb kabel
- Usb toetsenbord, muis
- HDMI kabel, monitor
- –> Internet aansluiting, bij voorkeur bekabeld
- Power via USB voeding (1A of meer) of via een laptop of PC aansluiting
- Laptop of pc met internet en met aansluiting voor micro SD kaart om images te flashen
- Raspberry Pi camera of USB camera
- Optiomeel: USB harddisk of USB stick
En voor het IOT gedeelte:
- Breadboard
- m-m jumpers (15 tot 20 stuks)
- f-f jumpers (15 tot 20 stuks)
- m-f jumpers (15 tot 20 stuks)
- Leds (vooral blauw)
- Afstandsensor RC-SR04
- Micro servo
- Optioneel: motor controller met één of twee motors
Unboxing – de Raspberry Pi 3B+
De Raspberry Pi wordt geleverd in een klein doosje. Kijk eens naar het apparaatje.
- Valt het je op dat er helemaal geen kastje omheen zit? Dit betekent dat we voorzichtig moeten zijn waar we het neerleggen als we er mee werken.
- Het apparaat is ook gevoelig voor statische elektriciteit –> wat is dat?
- Bedenk eens wat we nodig hebben om het aan te zetten.
Denk eraan dat je moet oppassen met statische elektriciteit. Raak af en toe het metalen deel van je tafel aan om statische elektriciteit kwijt te raken als je met open printplaten werkt.
We kijken nu eerst even naar de details, wat zit er allemaal op het bordje? Wijs de volgende onderdelen aan:
- Power in (dat staat er in kleine letters bij)
- Toetsenbord aansluiting
- HDMI –> waar is dat voor
- Netwerk
- GPIO –> waar is dat voor
- Micro SD
- Bluetooth en wifi
- CPU
- PoE pins –> wat is dat
- Camera flatcable aansluiting
- Display cable aansluiting
Zoek eens via google naar de beschrijving van de GPIO.
Wat is een Raspberry Pi
Als het goed is vraagt iedereen zich nu af wat een Raspberry Pi eigenlijk is. Ik kijk bij deze uitleg vaak eerst waar de interesse van mijn publiek ligt. Met het dingetje kan je namelijk best veel.
Het is eigenlijk een kleine, goedkope computer. Het is een mooi voorbeeld van de chips en het besturingssysteem welke in veel apparaten zit die je in je dagelijkse leven tegen zult komen; je modem-router thuis, maar ook veel andere kleine connected devices.
Een voorbeeld: de 3D mensenscanner van Reproshape
Je kunt er heel veel mee. We geven een voorbeeld. Reproshape, het bedrijf van Tijl Bouwman, heeft een 3D mensenscanner gebouwd. Deze werkt met 128 camera’s die op exact hetzelfde moment een foto nemen van een persoon. Vanuit deze 128 foto’s maak je dan makkelijk een 3D animeerbare avatar, of een beeld wat geprint kan worden voor op de koffietafel.
Op de website https://reproshape.nl/ zie je hoe de 128 camera’s verdeeld zijn over een aantal pilaren van 2 meter hoog. In elke pilaar zit een aantal Raspberry Pi’s met camera, een power unit, een converter om de power naar de usb aansluiting van de Raspberry te brengen.
De foto wordt eerst op de Raspberry Pi opgeslagen. Dat gebeurt dan op de SD kaart, want dat is de enige plek waar het apperaat kan schrijven of lezen. Er staat dus niets op het bordje zelf!
Alle Raspberry Pi’s in deze 3D mensenscanner zitten aan elkaar in het netwerk, om in één keer de foto’s naar een centrale computer te brengen. Wow, we hebben dus 128 netwerk kabels nodig, dat is meer dan in een stevig bedrijf!
Als je dit apparaat zou maken met 128 laptops, dan wordt dit best duur. De Raspberry Pi is precies de juiste keuze, en is bovendien veel goedkoper. Jullie zien straks ook dat installeren van software op een Raspberry Pi ook veel makkelijker gaat dan bij een laptop; we hoeven alleen de SD kaart te verwisselen.
De foto hieronder zie je een stukje van één van de pilaren van het apparaat. Van links naar rechts: De kunststof buis die er omheen schuift, de power unit, de 5V voeding, en de Raspberry Pi. Al deze onderdelen zitten netjes op een DIN rails geklikt die je thuis ook vindt in je meterkast.
Aan de slag met de Raspberry Pi
Na deze introductie is het nu tijd om onze spullen klaar te gaan maken.
Aanraken – voorzichtig!
De Raspberry Pi is gevoelig voor statische electriciteit. Je weet wel, die vonken die uit je vingers schieten als je stevig met je trui over je haar wrijft. We merken dat vooral de netwerkpoort daar snel last van heeft, het dike blok aan de voorkant van de Raspberry Pi.
De Rpi hou je daarom vast bij de twee rondjes aan de achterzijde van het bordje. Zo zit één van je vingers vanzelf ook op de metalen ‘ground’ van de micro usb aansluiting voor de voeding.
Je kan de Raspberry neerleggen op zijn eigen kartonnen doosje, of gewoon op tafel. Zorg dat er geen metalen dingen of zilverkleurige zakjes in de buurt liggen.
Een camera bordje is extra gevoelig. Hou deze altijd vast aan de zijkant van het groene printplaatje. Nooit aan de metalen delen of het uiteinde van de strip.
Stuk is stuk. Dat kan gebeuren en dat hoort er soms bij. Je kunt de Raspberry Pi of de camera dan alleen niet meer gebruiken.
Software ophalen
Onze mini computer heeft nu nog een operating system en software nodig. Deze moeten we dan eerst op de micro SD kaart zetten. We volgen voor een deel de tips van https://projects.raspberrypi.org/en/projects/raspberry-pi-getting-started
Op een PC gebruiken we SD kaart flasher software. We proberen twee keuzes, als je met meerdere mensen werkt, dan gaat de eerste helft met de eerste keuze aan de slag, en de rest met de tweede keuze.
- Raspberry Pi Imager –> https://www.raspberrypi.org/downloads/
Balena Etcher –> https://www.balena.io/etcher/
Gebruik de Raspbian Distributie
- Raspbian Buster with recommended software –> https://www.raspberrypi.org/downloads/raspbian/
Maak je SD kaart klaar met deze distributie.
Bespreek de verschillen tussen deze twee SD flashing software.
Aansluiten en opstarten
Sluit nu je muis, toetsenbord, scherm aan. Doe de SD kaart in de Raspberry Pi. Controleer dat er niets van metaal tegen de printplaat van de Raspberry Pi ligt. Pas als alles op zijn plek zit ga je verder… Je Raspberry heeft stroom nodig, en daarvoor gebruiken we de micro usb kabel. Sluit deze nu aan.
- Als je dit nog eens in plaatjes wilt zien, kijk dan op https://projects.raspberrypi.org/en/projects/raspberry-pi-getting-started/3
Je Raspberry Pi zal nu opstarten en een beginscherm laten zien.
Werkt het niet?
De echte ICT kennis ontwikkel je als dingen niet werken. Help elkaar om te ontdekken wat er mis is.
Raspbian instellen – eenvoudig wachtwoord
Zodra je bent opgestart kan je de settings invullen en zal je ook de wifi instellen. Per distributie kan dat verschillend zijn. Omdat we de SD kaarten ook in andere klassen gebruiken gebruiken we een eenvoudig wachtwoord: kies hiervoor de naam van je school, aangevuld met 321, begin met een hoofdletter. Bijvoorbeeld “Martinus321”. Onthou dat je dan geen persoonlijke gegevens moet opslaan.
Controle – een reboot
Mooi dat het werkt. Om zeker te zijn dat alles klopt start je de Raspberry Pi opnieuw op.
Rondkijken in het OS
Verken eens wat je op je scherm ziet. Gebruik daarvoor https://projects.raspberrypi.org/en/projects/raspberry-pi-getting-started/5
Om je raspberry pi klaar te maken voor een volgende oefening, volg je de beschrijving. Zo maak je een file op de Desktop, met een specifieke naam. Vermeld in deze file een geheim, bijvoorbeeld je favouriete kermisattractie.
Internet browsen op de Raspberry
Open via het scherm van de Raspberry Pi de browser en zoek eens naar de specificaties van de Raspberry Pi 3B+.
En maak nog eens de verdere opdrachten af die volgen op https://projects.raspberrypi.org/en/projects/raspberry-pi-getting-started/5
Raspberry Pi Camera – optioneel
Als er nog tijd over is dan kan je aan de slag met de camera. Niet iedereen heeft een Raspberry Pi camera, dus soms moet je samenwerken. Volg deze instructie: https://projects.raspberrypi.org/en/projects/getting-started-with-picamera
Dit is een leuke oefening om kennis te maken met python en de camera.
Sectie 2 – netwerk
De Raspberry Pi’s zijn nu ingeregeld, en gebruiken allemaal hetzelfde netwerk. Mocht je aan het begin van deze les niet zeker zijn dat je SD kaart in orde is, begin dan weer met een schone image.
Ter inspiratie kijk je naar hoofdstuk 11 in het boek.
Staan alle Raspberries aan in het netwerk?
In ons netwerk krijgt elk apparaat een IP nummer. Wat is jouw ip nummer? Kan je eens kijken of alle Raspberry Pi’s aan staan?
Gebruik hiervoor bijvoorbeeld https://learn.pimoroni.com/tutorial/raspberry-pi/finding-your-raspberry-pi
We gaan vandaag geen IP scanner gebruiken. In plaats daarvan lees je goed door wat ze met de instructie bedoelen. Schrijf wel je IP nummer op.
Vanaf een andere Raspberry Pi – SSH
Om je Raspberry op afstand te bedienen kan je SSH instellen –> https://www.raspberrypi.org/documentation/remote-access/ssh/
Je kan hem nu ook vanaf een andere Raspberry bedienen…
Vanaf je windows laptop open je een ssh connectie naar je rpi. Dit doe je door op je laptop de cmd te openen. In dit voorbeeld is het ip nummer van de raspberry pi 192.168.100.11. In de commandprompt op je laptop typ je daarom: ssh [email protected]
cd Desktop
ls
cat mijnfile.txt
Probeer dit commando ook eens van de commandprompt op je raspberry pi, naar een rpi van iemand anders. Kan je het favouriete woord ook aanpassen? Een linux text editor is bijvoorbeeld nano.
Vanaf een andere Raspberry Pi – VNC
Je kunt ook het grafische scherm bedienen- daarvoor moet je een aantal dingen installeren.
–> https://www.raspberrypi.org/documentation/remote-access/vnc/
Probeer zelf even of je deze instructie kunt volgen.
Sectie 3 – netwerk en camera (pittige opdracht)
Raspberry Pi als netwerk camera
Bij deze opdracht moet je best veel uitzoeken en doorlezen. We doen deze oefening niet in de klas, maar als je wilt kun je hem proberen in je eigen tijd.
Maak van jouw Raspberry Pi een beveiligingscamera. Daarbij komen meestal de volgende vragen:
- De opdrachtgever wil van afstand mee kunnen kijken met wat er in zijn winkel gebeurt.
- Achteraf wil de opdrachtgever ook kunnen terugkijken, maar alleen stukken waar wat verandert in het beeld.
Zoek zelf op het internet naar een instructie om Motion Eye te gebruiken. Dit is een pittige uitleg: https://github.com/ccrisan/motioneye/wiki/Install-On-Raspbian
Omdat je nu jouw ip nummer weet kan ie ook iemand met jouw camera mee laten kijken. Zoek samen uit hoe dat werkt.
Zoek ook eens naar de Motion Eye OS, wat is het verschil met wat jij hebt gedaan?
Sectie 4 – Storage server en VPN
Ook bij deze oefeningen moet je zelf best nog veel uitzoeken. We doen deze niet in de klas, maar je kunt het natuurlijk best even proberen in je eigen tijd. Je kunt hiervoor goede instructies vinden op het internet.
Tot nu toe heb je de Raspberry Pi gebruikt als een werkstation, ongeveer zoals je een PC gebruikt. Je hebt er oom een netwerk apparaat van gemaakt om video te streamen. Maar nu willen we enkele server functies proberen.
Fileserver en media server
Om een fileserver te bouwen kan je de software op Raspbian installeren. Maar het is veel handiger om een ready-made OS te installeren.
Open WRT gateway server
Zoek eens welke mogelijkheden in de Open WRT distributie zitten. Is deze geschikt voor deze versie Raspberry Pi?
Sectie 5 – dingen aansturen
Jullie hebben nu ontdekt dat de Raspberry Pi werkt als een kleine computer. En je hebt gezien dat ze ook goed zijn in netwerken – het zijn echte connected devices.
Maar voor IoT, ofwel Internet of Things, willen we nog iets meer interactie zien met de wereld er omheen. Dat is waar het gebruik van de Rasperry Pi echt voordelen biedt boven een gewone laptop of PC.
Bij de ontwikkeling van zulke nieuwe hardware wordt vaak een custom printplaat gemaakt. Bij nieuwe ontwikkelingen gebruiken we toch graag het prikbordje. We kennen ook een tussenvorm met de handige connectors van Seeed: https://junioriot.nl/grove-introductie/
In de volgende oefeningen gaan we verschillende dingen aansluiten op de Raspberry Pi.
GPIO programmeren – Blink met Python
Om randapperatuur aan te sturen gebruiken we de GPIO pinnen. Je hebt al eerder in deze les opgezocht hoe je de informatie kunt opzoeken over welke afkortingen er bij deze pinnen horen. Maar wat kunnen we er echt mee?
Tip: om als gebruiker de Raspberry Pi te gebruiken moet je soms nog extra rechten hebben. De standaard user ‘pi’ heeft meestal voldoende rechten. Rechten aanpassen doe je met de opdracht ‘usermod’. Deze opdracht moet je wel uitvoeren als super user, daarvoor is de opdracht ‘sudo’ (super user do). Rechten toekennen aan een andere user om de GPIO te gebruiken doe je dan zo:
sudo usermod -a -G gpio <username>
We gaan nu een Python programma maken om een led te bedienen met jouw Raspberry Pi. Volg de toelichting, en kies dan voor ‘GPIO with Python’ op deze pagina: https://www.raspberrypi.org/documentation/usage/gpio/
Let op: we gaan leds aansluiten op de GPIO pinnen. Voor het maken van de verbinding gebruiken we een breadboard en gekleurde jumper cables. Hoe dat werkt zie je hier: https://junioriot.nl/breadboard/
Op de GPIO layout zien we dat pin 1 de 3V3 is, en pin 9 is een GND.
-
- Pak een rode m-f jumper en zet deze op pin 1.
- Op het breadboard verbind je de rode naar de bovenste rode strip om deze de 3V3 aansluiting te maken.
- Plaats een zwarte m-f jumper op pin 9.
- De zwarte jumper naar de onderste blauwe strip; dit wordt dan de GND strip.
In het programma voor de led zien we dat poort 17 wordt gebruikt. Zoek op waar GPIO 17 zit; is dit pin 11, naast de zwarte aansluiting?
-
- Plaats een oranje m-f jumper op pin 11.
- Prik deze in een witte strook op het breadboard
- Zoek een blauwe of witte led. Bij een led hoor je een weerstand te gebruiken. Maar de blauwe en witte leds werken bij een iets hoger voltage en blijven zo ook zonder weerstand best een tijdje werken bij 3V3.
- In deze zelfde strook prik je het lange pootje van een blauwe of witte led. Het korte pootje gaat in de strook ernaast.
- Prik een m-m in de strook van het korte pootje, en in de GND strip.
Open nu bij ‘programming’ de Thonny Python IDE. Plak daar het programma. Save de file op je desktop als ‘blink.py’. Run.
-
- Waar vind ik het programma? Kijk bij LED op deze pagina: https://www.raspberrypi.org/documentation/usage/gpio/python/README.md
- Maak de blink nu eens sneller?
Meten met de GPIO – afstandsensor in Python
We willen in onze fabriek een sensor bouwen die een waarschuwing geeft als de inkt voorraad in de takns van de drukpersen te laag wordt. We doen dit door de afstand te meten. Hiervoor is het nodig om een proof-of-concept te maken: kunnen we afstand meten met de Raspberry Pi?
Hiervoor doen we deze oefening: https://tutorials-raspberrypi.com/raspberry-pi-ultrasonic-sensor-hc-sr04/
In die uitleg zie je een schema waarbij weerstanden en extra draden worden gebruikt. We doen het makkelijker, omdat onze afstandsensor prima werkt met een 3V3 voeding. Verbind de vier pinnen van de ultrasound module met de Raspberry:
- VCC naar GPIO pin 1 (3V3)
- GND naar pin 6 of 9 (GND)
- TRIG naar pin 12 (GPIO18)
- ECHO naar pin 18 (GPIO24)
Let op: In het voorbeeld gebruiken ze pin 2 met 5V en een weerstand. Wij blijven echter pin 1 vebruiken, 3,3V waardoor geen weerstand nodig is. Let op dat je pin 1 gebruikt en niet pin 2.
Met deze foto lukt het niet om het schema na te bouwen zonder de tekst te lezen. Dit doen we expres, omdat je bij een toets of examen ook de instructie als tekst moet kunnen volgen.
Bij de link van de oefening zie je een instructie hoe je de software programmeert. Dit moet op de commandprompt, want blijkbaar is dat de manier om echt output te zien. Tips:
- De GPIO pinnen staan in een link hierboven.
- Ook de link naar de oefening zag je hierboven: https://tutorials-raspberrypi.com/raspberry-pi-ultrasonic-sensor-hc-sr04/)
Beweging met de GPIO – een servo bedienen met je Rpi
Om een servo te bedienen gebruiken we dit voorbeeld: https://tutorials-raspberrypi.com/raspberry-pi-servo-motor-control/
De Servo sluiten we aan via het breadboard.
Op de GPIO layout zien we dat pin 1 de 3V3 is, en pin 9 is een GND.
-
- Pak een rode m-f jumper en zet deze op pin 1.
- Op het breadboard verbind je de rode naar de bovenste rode strip om deze de 3V3 aansluiting te maken.
- Plaats een zwarte m-f jumper op pin 9.
- De zwarte jumper naar de onderste blauwe strip; dit wordt dan de GND strip.
In het programma voor de besturing van de servo zien we dat poort 17 wordt gebruikt. Zoek op waar GPIO 17 zit; is dit pin 11, naast de zwarte aansluiting?
-
- Plaats een oranje m-f jumper op pin 11.
- Prik deze in een witte strook op het breadboard.
- Nu sluit je de servo aan op het breadboard.
- Met een m-m jumper verbind je de zwarte pin van de servo kabel met je GND strip
- Met een andere m-m jumper verbind je de rode aansluiting met je 3V3 strook.
- De oranje aansluiting is de data. Verbind deze met een m-m jumper aan je witte strip waar de pen naar je Rpi zit.
Open nu bij ‘programming’ de Thonny Python IDE. Plak daar het programma. Save de file op je desktop als ‘servo.py’. Run. Beweegt de servo?
Rijden met GPIO – de motor controller (lastig)
Dit is een lastige opdracht omdat je veel zelf moet uitzoeken.
De motorcontroller bedien je met de aan/uit signalen, zoals je deze ook voor de led hebt gebruikt. Het verschil is nu dat je deze signalen naar vier pootjes stuurt. Deze zijn dan verbonden met de motor controller en je bedient:
- Motor 1 linksom.
- Motor 1 rechtsom.
- Motor 2 linksom.
- Motor 2 rechtsom.
De motor power voed je via een aparte aansluiting. Je kunt er ook een ander apparaat mee bedienen in plaats van je motor. De motorcontroller werkt met een H-brug. Hoe meer koelribben je ziet op de motorcontroller, hoe meer power je kunt aansturen.
Andere dingen: een OLED display
Kijk ook eens op: https://raspberrytips.nl/oled-display-128×32-i2c/