In deze opdracht ga je aan de slag met physical computing en de BBC micro:bit. Physical computing houdt in dat je met programmeerbare hardware de fysieke wereld meet en aanstuurt – je schrijft code die invloed heeft op echte lampjes, motoren, sensoren, enzovoort. Denk aan automatische deuren die opengaan via een bewegingssensor, slimme thermostaten die temperatuur meten en de verwarming regelen, of parkeersensoren in auto’s. Dit zijn allemaal voorbeelden van physical computing in het dagelijks leven. Je leert in dit project hoe hardware en software samenwerken om zulke real-world toepassingen mogelijk te maken
In dit project ga je met de micro:bit een automatisch slagboomsysteem voor een parkeergarage ontwerpen. We combineren hierbij verschillende onderdelen (sensoren en actuatoren) om een realistische simulatie te maken van een slagboom die reageert op een auto. Het idee is als volgt:
Er staat een gesloten slagboom (houten of kartonnen arm, aangedreven door een klein servomotortje op de micro:bit). Naast de slagboom brandt een rood LED-lampje om aan te geven dat de ingang dicht is.
Een “radar” sensor (in werkelijkheid een ultrasone afstandssensor) detecteert of er een auto voor de slagboom staat te wachten.
Als er een auto gedetecteerd wordt vlak voor de slagboom, moet jouw systeem dat merken. Vervolgens moet de slagboom open gaan (de servo motor draait de boom omhoog) én het groene LED-lampje gaat branden om de automobilist groen licht te geven. Tegelijk gaat het rode lampje uit.
Na een korte tijd (wanneer de auto gepasseerd is) sluit de slagboom automatisch weer (servo draait terug omlaag) en gaat het rode lampje weer aan (groen uit). Dan is het systeem klaar voor de volgende auto.
Deze opstelling bootst dus een slim parkeergarage-toegangssysteem na. Hieronder zie je een voorbeeld van een micro:bit met een ultrasone sensor (“radar”) en LED-lampjes aangesloten, vergelijkbaar met wat je gaat bouwen (in dit voorbeeld zijn drie LED’s gebruikt als afstand-indicator)
: Voorbeeld van een micro:bit met een ultrasone afstandssensor (de “ogen”) en LED-lampjes op een breadboard. De micro:bit is hier op een uitbreidingsprint geklikt en krijgt stroom via een batterijpack. In dit project gebruik je een soortgelijke opstelling met een microservo voor de slagboom (niet afgebeeld).
Je gaat de volgende onderdelen gebruiken voor dit project (zowel virtueel als uiteindelijk fysiek beschikbaar in de les):
Micro:bit v2 (met USB-kabel en evt. batterijpack voor voeding)
Ultrasone sensor (HC-SR04 of vergelijkbaar “afstandsmeter”) – dit is de “radar” die de auto detecteert
Servo motor (microservo, bv. SG90) – om de slagboom te bewegen (open/dicht)
Twee LED’s (een rode en een groene) + passende weerstandjes – voor het stoplicht (rood = wachten, groen = doorrijden)
Verbinddraadjes (male/female jumper wires en/of krokodillenklemmen) en een breadboard om alles aan te sluiten
(Eventueel) een houder of stukje karton om een slagboom-arm te maken die op de servo bevestigd kan worden
Je docent zal deze onderdelen leveren. Belangrijk: Zorg dat je altijd de elektronica correct aansluit: de micro:bit heeft pinnen voor 3V (voeding), GND (massa) en pinnen P0, P1, P2 etc. voor signalen. Gebruik dezelfde GND voor alle componenten in de schakeling (gemeenschappelijke massa).
We gaan stap voor stap dit systeem opbouwen. Eerst doen we alles virtueel – je gaat in de browser een simulatie maken/programmeren, zodat je het systeem kunt testen zonder fysieke hardware. Er is een online omgeving (website) waar je de micro:bit kunt programmeren én simuleren. We raden aan om Microsoft MakeCode te gebruiken als programmeeromgeving. MakeCode heeft links in beeld een micro:bit simulator, zodat je direct kunt zien wat je programma doet op een virtuele micro:bit – je hebt niet meteen hardware nodig
. Deze simulator laat bijvoorbeeld de LEDjes op de micro:bit zien en reageert op knoppen. Als aanvulling kun je ook gebruikmaken van Tinkercad Circuits (gratis online tool van Autodesk) om de micro:bit mét externe componenten te simuleren. Tinkercad ondersteunt een realistische micro:bit-simulatie, waarbij je de micro:bit kunt verbinden met virtuele onderdelen zoals LED’s, motoren en sensoren
. Dit is handig om te zien of je schakeling en code samen goed werken, voordat je het in het echt gaat bouwen.
Tip: in Tinkercad kun je bijvoorbeeld een ultrasone sensor toevoegen en de afstand instellen om te testen hoe je code reageert. Hieronder het stappenplan dat je gaat doorlopen:
LED’s aansturen (virtueel): Leer eerst een externe LED te laten branden met de micro:bit. Sluit in de simulatie een LED aan op een pin van de micro:bit (bijv. rode LED op pin P1, met de min-kant naar GND). Programmeer de micro:bit zo dat het rode lampje aan en uit kan gaan. Begin simpel, bijvoorbeeld: laat om de seconde het lampje knipperen, of laat het aangaan als je op knop A drukt. Zo controleer je dat je de micro:bit-uitgang correct kunt gebruiken om een LED te schakelen. Hint: gebruik in MakeCode het blok digital write pin P… to 1 (aan) en … to 0 (uit), of in Python pinX.write_digital(1).
Ultrasone sensor uitlezen: Vervolgens ga je de afstandssensor gebruiken. Een ultrasone sensor zoals de HC-SR04 heeft 4 pinnen: Vcc (voeding, 5V of 3V), Trig, Echo en GND
. In onze opstelling kun je hem op de micro:bit aansluiten als volgt: verbind Vcc met 3V, GND met GND, de Trig pin naar micro:bit pin P0 en de Echo pin naar pin P1
. (In de simulatieomgeving stel je dit in; fysiek zul je dit straks met draadjes doen. Let op: gebruik je krokodillenklemmen, dan heb je mogelijk een speciale breakout-board nodig om op de kleinere pinnen te komen. P0, P1, P2, 3V en GND zijn ook beschikbaar via de grote ringen aan de micro:bit rand.) Programmeer nu de micro:bit zo dat je de afstand kunt meten. In MakeCode kun je gebruikmaken van een uitbreiding (package) genaamd “Sonar”, die een blok bevat om de afstand (in cm) te meten met trig/echo. In Python kun je eventueel zelf een puls sturen en de tijd meten, maar je mag ook een bestaande bibliotheek gebruiken. Test virtueel of je met jouw code een object kunt detecteren. Bijvoorbeeld: laat op het 5×5 LED-scherm van de micro:bit een icoon zien of een tekst “Auto” scrollen zodra de gemeten afstand onder een bepaalde drempel komt (stel, < 10 cm betekent “er staat een auto voor de slagboom”). Probeer verschillende afstanden (in de simulator kun je vaak de sensorwaarde simuleren, of anders verander je tijdelijk de drempel in je code om te testen).
Servo motor bedienen: Nu ga je de servo aansluiten en besturen. Een microservo zoals de SG90 heeft doorgaans drie draadjes: oranje (signaal), rood (voeding) en bruin/zwart (massa). Sluit de servo aan op de micro:bit: het signaaldraadje op pin P2 (bijvoorbeeld), de plus (rood) op 3V en min (bruin) op GND
. Let op: Deze servo’s werken meestal op 5V, maar draaien vaak ook op 3V met beperkte kracht. Omdat de micro:bit zelf niet veel stroom kan leveren (max ~90 mA op 3V)
, moet de servo onbelast kunnen bewegen; gebruik evt. verse batterijen in de micro:bit of een aparte voeding als de servo hapert
. In de praktijk betekent dit: als de slagboom-arm erg zwaar of lang is en de servo krijgt het niet rond op alleen de micro:bit voeding, overleg met je docent voor een oplossing. Programmeer de micro:bit om de servo te laten draaien. In MakeCode is er een Servo write-blok (onder “Pins” of via de Servo-extensie) waarmee je een hoek in graden kunt instellen. In MicroPython kun je pin2.write_analog(value) gebruiken nadat je de pin in servo-modus zet (met set_analog_period(20) voor 20ms periode)
. Test in de simulator (MakeCode kan de beweging simuleren middels een slider voor de servo-positie). Bijvoorbeeld: laat de servo afwisselend draaien naar 0 graden en 90 graden met een pauze, zodat je ziet dat hij beweegt. Bedenk welke hoek “dicht” en welke “open” moet voorstellen in jouw slagboom – meestal is 0° of 180° de ene uiterste stand, en ~90° de andere stand. Kies logische waarden voor gesloten en geopend (bijv. 0° = slagboom omlaag dicht, 90° = omhoog open).
Alle componenten samenbrengen: Nu combineer je de drie onderdelen tot het volledige parkeergarage-systeem. Je code moet het volgende doen: continu de ultrasone sensor lezen; als een object (auto) wordt gedetecteerd binnen de ingestelde afstand (drempelwaarde), dan: zet het rode LEDje uit en het groene LEDje aan, en stuur de servo naar de “open” positie. Wacht een korte tijd (bijv. 3 seconden) zodat de auto kan doorrijden, vervolgens stuur de servo terug naar “dicht” en zet het rode licht weer aan (groen uit). Dit alles moet automatisch gebeuren op het moment dat een auto arriveert. Daarna gaat de loop weer verder en kan een volgende auto gedetecteerd worden. Bouw dit stap voor stap op in de code. Begin bijvoorbeeld met een if-structuur: “if distance < X cm then open barrier else keep closed”. Test virtueel door de afstand te variëren (in de code of simulator). Zorg dat de LED’s correct schakelen (rood en groen nooit tegelijk aan in je ontwerp), en dat de servo de juiste beweging maakt. Je kunt eventueel op het micro:bit LED-scherm een korte tekst of icoon tonen als debug-indicator (bv. een pijltje omhoog als opening gebeurt). Test je volledige systeem in de simulator tot je tevreden bent dat het werkt zoals bedoeld.
Bouwen en testen met hardware: Als de virtuele versie goed werkt, ga je de schakeling in het echt opbouwen met de fysieke micro:bit en onderdelen. Gebruik het schema van eerder: sluit de sensor op P0/P1, de servo op P2 (met 3V/GND), en de LED’s op bijvoorbeeld P8 (rood) en P16 (groen) – of op P1/P2 als die nog vrij zijn, zolang je code daarmee overeenkomt. (Let op dat je in je code de pinnummers aanpast indien nodig; in de vorige stappen gebruikten we P0–P2 voor sensor/servo, dus hier kun je bijvoorbeeld de LED’s op andere vrije pins zetten. De micro:bit heeft naast P0/1/2 nog P3-P20 op de edge connector; raadpleeg je docent als je twijfelt welke te gebruiken voor de LED’s.) Bouw de schakeling overzichtelijk op een breadboard. Laat je code op de micro:bit en test het systeem nu in het echt! Gebruik een object (bijv. je hand) om de “auto” te simuleren die voor de sensor komt. Werkt de detectie? Gaat de servo-slagboom omhoog en omlaag zoals gepland? Branden de juiste LED’s (rood als dicht, groen als open)? Je zult hier mogelijk wat moeten fine-tunen: misschien de drempelafstand aanpassen als de sensor anders reageert dan in de simulatie, of de servo-hoeken iets bijstellen voor een mooiere beweging. Neem de tijd om het systeem stabiel te krijgen. Als het allemaal werkt, heb je succesvol een stukje physical computing gerealiseerd!
Je mag dit project individueel of in tweetallen uitvoeren – keuze is aan jou. Samenwerken kan leerzaam zijn: je kunt elkaar helpen bij het programmeren en het bouwen van de schakeling. Als je in een duo werkt, zorg wel dat beide leden actief bijdragen en begrijpen wat er gebeurt. Overleg samen hoe je de taken verdeelt (bijvoorbeeld: de een focust op het coderen, de ander op het opbouwen, maar wissel ook af zodat ieder van alles leert). Het is niet verplicht om een team te vormen; alleen werken mag ook als je dat liever doet. We werken ongeveer 5 weken aan dit project, tijdens 3 lesuren per week. De deadline voor het voltooien van het basisproject (slagboom werkend) en het inleveren van je verslag is 12 december. Er is geen strikt week-tot-week schema voorgeschreven (je docent zal globaal begeleiden), maar als richtlijn: probeer in week 1-2 de afzonderlijke componenten virtueel onder de knie te hebben (stap 1-3), week 3 de integratie virtueel (stap 4), week 4 de fysieke bouw en test, en week 5 buffer voor verbeteren, extra’s en het schrijven van je verslag. Iedere leerling levert individueel een verslag in, ook als je in tweetal hebt samengewerkt. In dat verslag moet je ook kort beschrijven hoe de samenwerking is verlopen – wie heeft welke onderdelen opgepakt, hoe heb je taken verdeeld, wat ging goed in teamverband en wat kon beter? Zorg dat je elkaars naam en bijdrage vermeldt. (Dit betekent dus dat duo’s twee aparte verslagen inleveren, ieder in eigen woorden.)
Voor snelle werkers of leerlingen die ruimschoots vóór de deadline klaar zijn met de basisopdracht, is er een verdiepende uitdaging. De micro:bit beschikt over een draadloze radio-communicatie functie, waarmee micro:bits onderling kunnen berichten uitwisselen
. Bedenk een uitbreiding van het parkeergarage-systeem met meerdere micro:bits die samenwerken via radio. Enkele ideeën binnen het parkeergarage-thema:
Twee slagbomen koppelen: Stel je hebt een ingang én een uitgang in de garage, elk met een micro:bit systeem. Laat de micro:bits informatie delen, bijvoorbeeld het aantal auto’s in de garage. Wanneer bij de ingang een auto binnenkomt, stuurt die micro:bit een bericht naar de uitgang-micro:bit om het totaal te verhogen (en vice versa bij uitrijden). Zo kunnen ze samen bijhouden hoeveel plekken vrij zijn. Je zou de micro:bit een melding kunnen laten geven (bijv. rode LED knipperen) als de garage vol is en er toch een auto bij de ingang komt.
Extern display of melding: Gebruik een tweede micro:bit als extern display of afstandsbediening. Bijvoorbeeld: de micro:bit bij de slagboom stuurt een radio-bericht “open” of “dicht” elke keer als er iets gebeurt. De tweede micro:bit (ergens anders, bv. bij de parkeerbeheerder) ontvangt dit en toont een boodschap op zijn 5×5 LED-scherm (“Auto binnen” of een teller van auto’s). Of laat de tweede micro:bit een geluidje maken/buzzer activeren als er een auto binnenkomt.
Auto met micro:bit: Als je heel creatief bent: doe alsof de “auto” zelf ook een micro:bit heeft die communiceert met de slagboom. De auto-micro:bit zou bijv. een signaal kunnen sturen wanneer hij in de buurt van de slagboom komt (in plaats van de ultrasone sensor). Dit is meer een IoT-achtig scenario. De slagboom-micro:bit reageert op het ontvangen signaal door te openen. (Je moet dan wel de ultrasone sensor niet gebruiken of negeren in deze modus.)
Het staat je vrij om een eigen invulling te bedenken, zolang er maar ten minste twee micro:bits draadloos met elkaar praten en het nuttig is binnen het parkeergarage-thema. Werk deze uitbreiding netjes uit in code. Documenteer in je verslag wat je extra hebt gedaan. Let op: de basisopdracht gaat voor – doe de extra opdracht alleen als je tijd over hebt na het voltooien van de hoofdopdracht.
Wanneer je project (basis én evt. extra deel) gereed is, zorg je dat je alle code netjes hebt opgeslagen. Je docent zal mogelijk vragen om de code te laten zien of te demonstreren met de hardware. Neem eventueel een korte video op van je werkende slagboom of demonstreer live in de les. Tot slot schrijf je een reflectieverslag (1 à 2 pagina’s is meestal voldoende) en levert dat individueel in. In dit verslag beschrijf je:
Je aanpak: Hoe ben je te werk gegaan om dit project stap voor stap te volbrengen? Welke keuzes heb je gemaakt (bijv. welke drempelafstand voor de sensor, welke hoeken voor de servo)? Hoe heb je problemen opgelost?
Geleerde lessen: Wat heb je nieuw geleerd tijdens deze opdracht? Denk aan programmeerinzichten (bijv. werken met variabelen, voorwaarden, sensor invoer, etc.), samenwerken, of het gebruik van de simulatie/hardware.
Uitdagingen: Kwamen er dingen voor die lastig waren? Bijvoorbeeld bugs in de code, wiring-problemen, een sensor die niet deed wat je verwachtte, of de servo die moeilijk deed. Hoe heb je die uitdagingen aangepakt? Beschrijf concrete problemen en oplossingen.
Samenwerking: (Indien van toepassing) Hoe verliep de samenwerking in jullie team? Verliep de taakverdeling goed en communiceerden jullie effectief? Wat ging goed en wat zou je een volgende keer anders doen in teamverband?
Resultaat: Ben je tevreden met het eindresultaat? Werkt alles volgens de opdracht? Als je de extra uitdaging gedaan hebt, licht dan toe wat je extra gebouwd hebt en hoe dat ging.
Feedback: Eventuele feedback op de opdracht: wat vond je leuk of leerzaam, en heb je tips voor verbetering?
Schrijf in een zakelijke, duidelijke stijl. Het reflectieverslag is geen dagboek maar een analyse van jouw leerproces. Lever je verslag in via de elektronische leeromgeving uiterlijk 12 december (einde van week 5).