Cyclus 3

Cyclus 3

Inleiding

De derde cyclus gaat over zelfrijdende auto’s. Ze rijden al rond en tegelijkertijd zijn er nog best wat uitdagingen. De sensor die centraal staat is de ultrasone afstandsensor. Deze wordt vaak als onderdeel van een parkeersensor gebuikt. Dat is dan ook gelijk de hoofdopdracht voor deze cyclus: ontwerp en ontwikkel een parkeersensor. Zodra de auto dicht bij een object komt, gaat het systeem piepen. Als de auto nog dichterbij komt, gaat het systeem sneller piepen.

Zelfrijdende auto

Inleiding

Bekijk de twee filmpjes in de volgende bron over zelfrijdende auto’s.

Dit is de toekomst van zelfdenkende voertuigen

Mogelijkheden en beperkingen van zelfrijdende auto's

Opdracht: vergelijk mensen en zelfrijdende auto's

Vergelijk mensen en computers/robots met elkaar als het gaat om het besturen van auto’s in het verkeer. Waar zijn mensen op dit moment beter in en waar zijn zelfrijdende auto’s beter in? Verken deze vragen in een groepje van 3 of 4 leerlingen. Houd de ideeën die jullie opdoen bij in een mindmap.

Je mag daarbij ook op zoek gaan naar informatie op internet. Hieronder staan bijvoorbeeld enkele bronnen met filmpjes over zelfrijdende auto's. Gebruik ongeveer 10 minuten voor deze opdracht. Na deze 10 minuten hebben jullie een mindmap met jullie uitwerkingen.

 

 

De grote data race: een rijbewijs voor de robotauto

Nederland loopt voorop bij ontwikkeling zelfrijdende auto's

Embedded en real-time systemen

Bij physical computing spreken we vaak over embedded systemen en real-time systemen. Een embedded systeem is een computersysteem met een beperkte hoeveelheid functies, gemaakt voor een specifiek doel. Het computersysteem in de wasmachine is een typisch embedded systeem. Een automatisch watergeefsysteem voor planten ook. Net als het computersysteem in een zelfrijdende auto. In een magnetron zit ook een embedded systeem. En zo kunnen we nog wel even doorgaan. Kijk maar eens om je heen, grote kans dat je meerdere embedded systemen ziet.

Real-time systemen zijn systemen waarbij de correcte werking niet alleen afhangt van de functionele werking van het systeem, maar ook van de snelheid waarmee dat gebeurt. Neem bijvoorbeeld de zelfrijdende auto: als het systeem niet snel genoeg reageert op de omgeving (bijvoorbeeld een overstekend kind), dan gaat het grondig mis. Een computersysteem voor de monitoring in een kerncentrale is ook een real-time systeem: als het systeem niet snel genoeg reageert kan de nucleaire reactie uit de hand lopen en dat kan rampzalig zijn. We noemen dat ook wel hard real-time systemen. Dat zijn systemen waarbij het absoluut noodzakelijk is dat er snel genoeg wordt gereageerd. Daarnaast heb je ook soft real-time systemen. Daarbij is het belangrijk dat het systeem op tijd reageert, maar als er af- en toe vertraging is, dan leidt dat niet tot (grote) problemen. Een voorbeeld daarvan is je routenavigatiesysteem. Als het traag reageert is dat vervelend, maar als het een keer gebeurt leidt dat niet tot een groot probleem.

Hieronder zie je een indeling met enkele voorbeelden.

 

  Embedded Niet embedded
Hard real-time Systeem in een zelfrijdende auto. Systeem voor het verhandelen van aandelen op de beurs.
Soft real-time

Routenavigatiesysteem

Systeem voor video-conferencing zoals Skype, geinstalleerd op een PC.


Programma om Netflix video’s te bekijken.

Niet real-time Plantwatergeef-systeem
Systeem voor de verwarming thuis.
e-Reader
Back-up programma op je PC.

 

Je zou kunnen zeggen: een back-up programma moet toch ook niet dagen de tijd nemen en is dus real-time?! En als je uren moet wachten voordat je verwarming thuis een keer aangaat zeg je ook dat het niet goed werkt. Dat is waar, maar het geeft niet als het wat langer duurt om de backup te maken of de verwarming aanslaat. Het gaat dan om enkele minuten of zelfs uren. Bij real-time systemen gaat het echter om milliseconden, zowel bij de hard- als de soft real-time systemen.

Opdracht: embedded en real-time systemen

Verzin voor elke categorie nog een voorbeeld van een systeem en geef daarbij een toelichting waarom dat systeem in die categorie thuishoort.

Kwaliteit van een systeem

Tijdigheid en betrouwbaarheid

Je kunt de kwaliteit van een physical computing systeem bepalen aan de hand van allerlei criteria. Functionaliteit is een kenmerk van alle computersystemen: wat kan het wel en wat kan het niet? Hieronder staan naast functionaliteit nog twee criteria die je in deze module moet kunnen gebruiken.

  • Tijdigheid: reageert het systeem snel genoeg op veranderingen in de omgeving? Met name voor real-time systemen is dat belangrijk.
  • Betrouwbaarheid: in hoeverre werkt het systeem in alle omstandigheden? Bijvoorbeeld onder verschillende weersomstandigheden, zowel in het licht als het donker, etc.
  Tijdigheid Betrouwbaarheid
Stofzuigerrobot De robot moet snel genoeg kunnen reageren zodat de robot niet tegen een obstakel aan rijdt of van de trap valt. In die zin is de stofzuigerrobot een real-time systeem. Werkt de stofzuigerrobot voor alle soorten tapijt en ondergrond?
Anti-inbraaksysteem Een anti-inbraaksysteem is geen real-time systeem omdat het niet binnen milliseconden hoeft te reageren. Het systeem moet echter wel binnen enkele seconden een signaal kunnen afgeven als een inbraak wordt gedetecteerd. In hoeverre is het systeem te omzeilen door een inbreker? Werkt het systeem zowel overdag als ‘s nachts?
Een zelfrijdende auto Dit is een hard real-time system. Het systeem moet binnen enkele milliseconden reageren op veranderingen, zoals overstekende mensen, andere auto’s die remmen, etc Werkt het systeem onder alle omstandigheden? Overdag en ‘s nachts? In de stad en op de snelweg? Bij regen, sneeuw, mist? Herkent het systeem alle mogelijke obstakels? Mensen in een witte jas tegen een witte achtergrond bijvoorbeeld? Enzovoort

 

Er zijn nog veel meer kwaliteitscriteria te bedenken voor een systeem zoals veiligheid, gebruikersgemak, robuustheid, energieverbruik, prijs, etc, maar daar gaan we hier verder niet op in.

Opdracht: beschrijf eisen

Kies één van onderstaande systemen en beschrijf de eisen die je er aan zou stellen. Maak in ieder geval gebruik van de criteria functionaliteit, tijdigheid en betrouwbaarheid.

Kwaliteit van sensoren

De kwaliteit van een systeem hangt mede af van de kwaliteit van de sensoren die worden gebruikt. Voordat je bepaalt welke sensor je gaat gebruiken voor een toepassing doe je er goed aan te kijken naar de kwaliteit van de sensor. Je kunt dan onder meer kijken naar:

  • Bereik: hoe ruim meet de sensor? Bijvoorbeeld bij een afstandssensor: op welke afstand en onder welke hoek worden objecten gedetecteerd?
  • Nauwkeurigheid: hoe groot is de foutmarge van de sensor?

 

  Bereik Nauwkeurigheid
Temperatuursensor Tot welke minimum- en maximumtemperaturen werkt de sensor? Hoe nauwkeurig wordt de temperatuur gemeten?
Afstandssensor Tot hoe ver en hoe dichtbij worden objecten gedetecteerd? En onder welke hoek? Hoe nauwkeurig is de sensor in het bepalen van de afstand tot het object? 
Kleurensensor Welke verschillende kleuren detecteert de sensor? En hoe bepalend is de lichtinval daarbij? Hoe nauwkeurig maakt de sensor onderscheid in verschillende kleuren? 
Geluidssensor Vanaf en tot welke geluidsintensiteit registreert de sensor? En welke geluidsfrequenties? Hoe nauwkeurig geeft de sensor de intensiteit en frequentie van het geluid weer?

 

Je kunt allerlei andere criteria benoemen voor sensoren zoals energieverbruik, prijs, etc. Die laten we hier echter buiten beschouwing. Informatie over bereik en nauwkeurigheid is vaak te vinden in de datasheet van een sensor, zie ook Cyclus 2 - Datasheets.

Ultrasone afstandssensor

Ultrasoonsensoren werken met geluid, dat echter niet hoorbaar is voor mensen. De bekendste toepassing zoals we die in het dagelijks leven tegenkomen is ongetwijfeld de parkeersensor. Er zitten daarbij meerdere ultrasoonsensoren in de bumper van een auto gemonteerd. Als je te dicht bij een andere auto, een muurtje of een paaltje komt klinkt er een alarm.

De ultrasoonsensor zendt geluid uit en vangt de weerkaatsing van dat geluid weer op. Op die manier kun je bepalen wat de afstand is tot een object. Het lijkt op hoe vleermuizen hun omgeving waarnemen. Ook vleermuizen maken voor mensen onhoorbaar geluid.

Bron: https://nl.wikipedia.org/wiki/Vleermuizen#/media/File:Big-eared-townsend-fledermaus.jpg

 

Opdracht: kwaliteit van de ultrasoonsensor

De afbeelding van de ultrasoonsensor hierboven is van het type HC-SR04. Achterhaal het bereik en de nauwkeurigheid van de ultrasoonsensor HC-SR04 op basis van de datasheet. Het gaat met name om de volgende vragen:

Bereik:

  1. Wat is de afstand waarbinnen de ultrasone afstandssensor een voorwerp kan detecteren?
  2. Wat is de hoek waarbinnen de ultrasone afstandssensor een voorwerp kan detecteren.

Nauwkeurigheid:

  1. Hoe nauwkeurig zijn de gegevens die de sensor oplevert?

Hieronder vind je twee datasheets met uitleg over de HC-SR04 Ultrasoonsensor.

https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf

https://www.mpja.com/download/hc-sr04_ultrasonic_module_user_guidejohn.pdf

Parkeersensor bouwen

Inleiding

De eindopdracht voor deze derde cyclus is het maken van een parkeersensor voor een auto. Je gebruikt daarvoor een ultrasoonsensor en een zoemer (bijvoorbeeld een piezo buzzer).

Zodra de parkeersensor merkt dat er een object binnen een bepaalde afstand (afstand_A) is hoor je een zoemer aan en uit gaan. Als het object nog dichterbij is (afstand_B) dan gaat de zoemer sneller aan en uit.

Opdelen in deelproblemen

Bij het maken van zo’n systeem is het handig om probleem op te delen in kleinere stukjes. Dat heeft allerlei voordelen:

  • Het probleem wordt overzichtelijker en makkelijk, je probeert steeds een klein deel van het probleem op te lossen in plaats van het hele probleem in één keer aan te pakken.
  • Door steeds een deelprobleem op te lossen ervaar je regelmatig een succeservaring.
  • Je kunt elke deeloplossing apart testen. Als iets niet werkt, wordt het duidelijker waar het probleem precies zit.
  • Je kunt het werk makkelijker verdelen binnen het team waarin je werkt.

Je kunt het probleem van de parkeersensor bijvoorbeeld opdelen in twee deelproblemen:

  1. Zorg dat het systeem detecteert dat een object binnen afstand_A of afstand_B is.
  2. Zorg dat het systeem een zoemer aan en uit kan zetten, met twee verschillende frequenties (langzaam piepen en snel piepen).

Vervolgens kun je die deelproblemen ook weer opdelen. Het eerste deelprobleem kun je als volgt opdelen:

  • 1a. Zorg dat het systeem detecteert dat een object binnen afstand_A is.
  • 1b. Zorg dat het systeem detecteert dat een object binnen afstand_A of afstand_B is.

Het tweede deelprobleem:

  • 2a. Zorg dat het systeem een zoemer aan en uit kan zetten (bijvoorbeeld met 1 seconde pauze)
  • 2b. Zorg dat het systeem een zoemer aan en uit kan zetten (bijvoorbeeld met 1 seconde pauze, maar ook met 0,5 seconde pauze).

In de rest van dit hoofdstuk ga je de toestandsdiagrammen ontwerpen voor deze deelproblemen. Het daadwerkelijke bouwen van de parkeersensor staat beschreven in het platformafhankelijke deel (Micro:bit, Arduino, Lego Mindstorms). Toch is het verstandig om eerst een deelprobleem helemaal uit te werken en te testen, en pas daarna verder te gaan het volgende toestandsdiagram. Het is dus goed om na het maken van een eerste toestandsdiagram (bijvoorbeeld voor deelprobleem 1a) dit uit te werken op bijvoorbeeld de Micro:bit. Als dat lukt, ga je verder met het toestandsdiagram voor deelprobleem 1b.

Samenwerkingsopdracht

Verdeel de taken in je team. De ene taak is om deelprobleem 1 aan te pakken, de andere taak is om deelprobleem 2 aan te pakken. In de volgende paragraaf geven we aanwijzingen voor het samenvoegen van de twee systemen.

 

Opdracht: deelprobleem 1

De uitdaging is:

  • Zorg dat het systeem detecteert dat een object binnen afstand_A of afstand_B is.
    • a. Zorg dat het systeem detecteert dat een object binnen afstand_A is.
    • b. Zorg dat het systeem detecteert dat een object binnen afstand_A of afstand_B is.

Maak eerst een toestandsdiagram voor deelprobleem a en bouw dit systeem. Maak gebruik van een ultrasoonsensor (zie voor meer informatie hierover het platformafhankelijke deel: Micro:bit, Arduino of Lego Mindstorms). Breid het systeem daarna uit voor deelprobleem b.

Voor het toestandsdiagram heb je de volgende toestandsovergangen:

  • geen object
  • object binnen afstand_A (bijvoorbeeld binnen 30 cm)
  • object binnen afstand_B (bijvoorbeeld binnen 20 cm)

Als acties kun je voorlopig gebruiken:

  • geef melding A
  • geef melding B

 

Opdracht: deelprobleem 2

De uitdaging is:

  • Zorg dat het systeem een zoemer aan en uit kan zetten, met twee verschillende frequenties (langzaam piepen en snel piepen).
    • a. Zorg dat het systeem een zoemer aan en uit kan zetten (bijvoorbeeld met 1 seconde pauze)
    • b. Zorg dat het systeem een zoemer aan en uit kan zetten (bijvoorbeeld met 1 seconde pauze, maar ook met 0,5 seconde pauze).

Maak eerst een toestandsdiagram voor deelprobleem a en bouw dit systeem. Maak gebruik van een piezo buzzer (zie voor meer informatie hierover het platformafhankelijke deel: Micro:bit, Arduino of Lego Mindstorms). Breid het systeem daarna uit voor deelprobleem b.

Voor het toestandsdiagram heb je de volgende toestandsovergangen:

  • object binnen afstand_A (gesimuleerd met knop A die wordt ingedrukt)
  • object binnen afstand_B (gesimuleerd met knop B die wordt ingedrukt)
  • geen object (gesimuleerd met geen van de knoppen ingedrukt)
  • de timer loopt af

Als acties kun je voorlopig gebruiken:

  • zet zoemer aan
  • zet zoemer uit
  • start de timer / reset de timer

Samenvoegen van de toestandsdiagrammen

Voor de parkeersensor zijn de twee deelproblemen apart opgelost. Dat is mooi, het werk kon binnen het team worden verdeeld, daardoor gaat het twee keer zo snel. Nu moet je echter nog de twee systemen samenvoegen tot één systeem. Daarvoor moet je eerst de toestandsdiagrammen samenvoegen, daarvoor zijn grofweg twee manieren:

  1. Maak een nieuw toestandsdiagram waarin de beide toestandsdiagrammen worden samengevoegd. Het kan zijn dat je veel meer toestanden nodig hebt dan daarvoor omdat ze worden gecombineerd. Het is helaas vaak niet mogelijk om ze simpelweg aan aan elkaar te plakken.
  2. Je kunt de toestandsdiagrammen ook gescheiden houden en werken met signalen. Dat gaat als volgt.

Vanuit het ene toestandsdiagram voeg je één of meerdere acties toe, zoals:

verstuur signaal 'zoemerAan'

In het andere toestandsdiagram kan dit een toestandsovergang zijn

ontvang signaal 'zoemerAan'

Door te werken met signalen hoef je vaak niet zo veel te veranderen aan de beide toestandsdiagrammen (behalve de signalen toevoegen natuurlijk). Het hangt van de situatie af welke van de twee bovenstaande oplossingen het makkelijkste is. Het belangrijkste is dat je het nieuw toestandsdiagram goed controleert voordat je gaat programmeren.

 

Opdracht: samenvoegen van de toestandsdiagrammen

Voeg nu beide toestandsdiagrammen samen. Je mag zelf kiezen of je werkt met signalen of niet. Controleer het nieuwe toestandsdiagram goed.

Extra opdracht: viaductbeveiliging

Opdracht: toestandsdiagram voor beveiliging van viaduct

Zo nu en dan komt het voor: een vrachtwagen die klem is komen te zitten onder een viaduct. Dat zorgt natuurlijk voor veel oponthoud. Tijd om er iets aan te doen.

Ontwerp een prototype voor een systeem met een ultrasoonsensor die boven een (denkbeeldig) wegdek hangt. Wanneer een (speelgoed)auto onder de sensor doorrijdt moet de hoogte van de auto gemeten worden. Maak gebruik van een rode en een groene led om aan te geven of de auto wel of niet onder het viaduct door kan rijden. Maak eerst het toestandsdiagram. Bedenk zelf welke toestandsovergangen en acties er zijn.

Terug naar voorpagina

Ga terug naar de voorpagina met verwijzingen naar alle hoofstukken voor deze module.