Cyclus 2

Cyclus 2

Inleiding

In deze tweede cyclus gaan we in op smart cities, oftewel: slimme steden. Hoe kun je het leven in de stad veraangenamen met behulp van physical computing? Hoe kun je de stad veilig houden? Hoe kun je energie besparen? Dat zijn enkele van de vragen die horen bij smart cities.

De sensor die centraal staat is de infraroodsensor. Je gaat een infraroodsensor gebruiken waarmee je bewegingen van mensen kunt detecteren. Misschien heb je thuis een lamp die aangaat als je er voorbij loopt. Waarschijnlijk bevat deze lamp zo’n infraroodsensor.

De eindopdracht is: bouw een prototype voor een energiezuinige lantaarnpaal. Als er iemand voorbij komt moet de straatlamp aan gaan. Om energie te besparen gaat de lamp na 30 seconden weer uit.

Smart cities

Opdracht: beschrijf toepassingen voor smart cities

In de filmpjes hieronder vind je allerlei voorbeelden en toepassingen voor smart cities. Kies hieruit 5 concrete toepassingen. Beschrijf deze concrete toepassingen kort en geef daarbij steeds aan wat voor sensoren daarbij een belangrijke rol spelen.

 

What is a Smart City?

Amsterdam Smart City – De toekomst begint nu

Smart Cities: Step into the city of the future!

What is a smart city? (CNBC)

Video’s over Amsterdam Smart City
Hier vind je filmpjes over Amsterdam als Smart City

Tegenlicht documentaire over Smart Cities
Een kritische kijk op smart cities

Bewegingssensor

In een smart city zoekt men naar allerlei mogelijkheden om het leven in de stad te verbeteren. Een voorbeeld: als jij via een app precies kunt zien welke parkeerplaats nog vrij is dan kan dat een hoop tijd en frustratie schelen.

Ook duurzaamheid is belangrijk: hoe kun je het verbruik van energie verlagen met behulp van physical computing? Denk aan lantaarnpalen die alleen aan gaan als er iemand langsloopt.

In al die gevallen spelen sensoren een belangrijke rol. Met behulp van een bewegingssensor kan een systeem detecteren of er iemand voorbij komt. Zo'n bewegingssensor is vaak een infraroodsensor. Je kent ze waarschijnlijk wel van de lamp thuis of op het schoolplein. De lamp gaat pas aan als je er voorbij loopt.

Bij de infraroodsensoren onderscheiden we de passieve sensor en de actieve sensor. Hieronder zie je afbeeldingen van dat soort infrarood sensoren.

Passieve Infrarood Sensor
Actieve Infrarood Sensor

 

Opdracht: verken de passieve infrarood sensor
  1. Onderzoek en beschrijf de werking van de passieve infrarood sensor. Zoek zelf naar geschikte bronnen. Onderaan de pagina vind je een voorbeeldbron.
  2. Als je recht naar een passieve infrarood sensor toe loopt zal hij niet of matig reageren. Hoe komt dat?
  3. Leg uit: kun je met een passieve infrarood sensor gemonteerd op een autootje detecteren of de auto een muur nadert bij het inparkeren?

 

Opdracht: verken de actieve infrarood sensor

  1. Onderzoek en beschrijf de werking van de actieve infrarood sensor. Zoek zelf naar geschikte bronnen.
  2. Geef het verschil aan tussen de actieve en de passieve infrarood sensor.
  3. Actieve infraroodsensoren bestaan soms uit één deel zoals die in afbeelding 2 maar soms ook uit twee die tegenover elkaar geplaatst worden (een zogenaamde lichtsluis). Wat is het verschil daartussen?
  4. Waarom wordt er gebruik gemaakt van infrarood licht en waarom niet van zichtbaar licht?

How PIRs Work (Adafruit)

Timers

Inleiding

De PIR (passieve infrarood) bewegingssensor geeft als output een HIGH (of 1) als deze een beweging detecteert; als er geen beweging is geeft de sensor als output LOW (of 0). Je kunt de gevoeligheid en de vertraging van de sensor aanpassen met de instelpotmeters, zoals in de figuur hieronder is te zien. De vertraging is de tijd voordat het signaal LOW wordt, na de laatst gedetecteerde beweging.

De hoofdopdracht voor deze cyclus is het maken van lantaarnpaal waarvan het licht gaat branden als er iemand langsloopt. Het licht van een lantaarnpaal moet aan gaan als een beweging wordt gedetecteerd en weer uit als er geen beweging meer is. Je kunt dat als volgt in een toestandsdiagram weergeven.

 

  • Toestand 1: lamp staat uit
  • Toestand 2: lamp staat aan

Het hangt van de instelpotmeter op de PIR-sensor af hoe lang het duurt voordat de lamp weer uitgaat. Je kunt de situatie weergeven in een tabel zoals hieronder. Deze tabel is nog niet volledig ingevuld.

  Wat gebeurt er?   Lamp aan of uit?     Toestand?  
  Niemand in de buurt   Lamp is uit   Toestand 1
  Een fietser komt langs      
  De fietser is net weg    
  Het is een tijdje stil    

 

 

Toestandsdiagram met timer

Uit het voorbeeld met de PIR-sensor blijkt dat er een soort klokje in de sensor zit verwerkt. De sensor blijft een tijdje HIGH als output geven, ook al loopt er niemand meer voorbij. Je kunt echter ook zelf zo'n klokje programmeren, dat noemen we een timer. In dit hoofdstuk leer je om zelf een timer te gebruiken.

Kookwekker
FreeImages.com/Pierre Amerlynck

Een timer is een soort kookwekker. Je kunt de wekker instellen zodat deze over een bepaalde tijd, bijvoorbeeld 5 minuten, afloopt en dan een bel of alarm laat horen. Zo is het ook met een timer, alleen gaat het meestal niet om minuten, maar om seconden of zelfs miliseconden.

Hoe kun je een timer in een toestandsdiagram gebruiken? Daarvoor heb je een actie en een gebeurtenis nodig. Dit is de actie die je kunt gebruiken voor een timer:

  • start timer / reset timer

Als je het vergelijkt met een kookwekker: stel de wekker in, bijvoorbeeld op 10 seconden van nu. Resetten betekent dat je de timer weer terugzet naar de oorspronkelijke tijd nog voordat de timer is afgelopen. Het resetten van de timer is eigenlijk hetzelfde als het starten van de timer, daarom hebben we ze bij elkaar gezet.

Een gebeurtenis die hoort bij de timer is:

  • timer loopt af 

 Als je het vergelijkt met een kookwekker: de kookwekker laat een bel of alarm horen.

Hieronder vind je een voorbeeld voor het systeem met de lantaarnpaal.

 

  • Toestand 1: lamp is uit
  • Toestand 2: lamp is aan

Waarom timers?

Los van deze toepassing met de lantaarnpaal is het belangrijk dat je timers leert gebruiken. Het is belangrijk om het verschil tussen een timer en een pauze te begrijpen. Een pauze bij de lantaarnpaal zou als volgt werken. Nadat een beweging is gedetecteerd zet het systeem de lamp aan. Daarna komt een pauze van bijvoorbeeld 10 seconden. In die 10 seconden doet het systeem echter helemaal niets en kan het dus ook niet reageren op input vanuit de omgeving. Bij een lantaarnpaal is dat misschien niet zo erg, maar stel je hebt een zelfrijdende auto. Die zou tijdens de pauze nergens op reageren, dus ook niet op andere sensoren die aangeven dat er een andere auto aankomt. Levensgevaarlijk dus.

Bij een pauze reageert het systeem nergens meer op. Bij een timer is dat anders, die werkt als een kookwekker. Het systeem gaat gewoon door terwijl de seconden op de kookwekker wegtikken. Op het moment dat de kookwekker afgaat, kan het systeem actie ondernemen.

Oefenopdracht: knipperend lampje

Hieronder vind je twee opdrachten om te oefenen met het gebruik van een timer in een toestandsdiagram.

 

Opdracht: toestandsdiagram voor een knipperend lampje

Maak een toestandsdiagram voor een lampje dat knippert. Maak gebruik van een timer.

Als gebeurtenis gebruik je:

  • timer loopt af

De acties die je kunt gebruiken zijn:

  • start timer / reset timer
  • zet lampje aan
  • zet lampje uit

 

Opdracht: toestandsdiagram voor twee knipperende lampjes

Maak een toestandsdiagram voor een systeem met twee knipperende lampjes. Zorg dat de lampjes knipperen met verschillende tussenpozen. (Bijvoorbeeld: het eerste lampje knippert elke 1,3 seconde: 1,3 seconde aan, 1,3 seconde uit. Het tweede lampje knippert om de 1,7 seconde: 1,7 seconde aan, 1,7 seconde uit.)

Bedenk zelf welke toestandsovergangen je hebt en welke acties. Je zult twee timers moeten gebruiken (bijvoorbeeld timer1 en timer2).

Hint: als je uitgaat van de twee lampjes die allebei aan en uit kunnen zijn, hoeveel toestanden heb je dan nodig voor alle mogelijke combinaties?

Programmeren van een timer

Zoals gezegd: een timer is een soort kookwekker: je start een timer met een bepaalde tijd. Als de tijd voorbij is, loopt de timer af.

Om een timer te programmeren heb je één variabele nodig:

var timerEindtijd

 

Stel, je wilt een timer starten voor 10 seconden. Gebruik dan de volgende regel om de timer te starten of te resetten:

timerEindtijd = huidigeTijd + 10

 

Elke microcontroller (Micro:bit, Arduino, Lego Mindstorms) houdt bij hoeveel tijd is verstreken sinds de start van het systeem. In de regel hierboven staat dat aangegeven met huidigeTijd.

Om te zien of de timer afloopt gebruik je:

huidigeTijd >= timerEindtijd

 

Je controleert dus of de huidige tijd hoger is dan de eindtijd van de timer.

Een voorbeeld: het onderstaande toestandsdiagram werken we in pseudo-code uit.

 

Kijk of je de onderstaande pseudocode kunt relateren aan het toestandsdiagram en de informatie over de timer hierboven. Er zijn drie toestandsovergangen (drie pijlen, los van de starttoestand), daarom zie je drie keer: ALS ... DAN. We hebben er hier voor gekozen om gebruik te maken van EN in plaats van twee keer een losse ALS ... DAN. Vergelijk dit met de aanpak in cyclus 1. We gaan uit van een timer van 10 seconden.

 

EENMALIG BIJ OPSTARTEN:

   toestand wordt 1

 

HERHAAL:

   ALS (toestand is 1 EN beweging gedetecteerd) DAN

      zet lamp aan

      timerEindtijd = huidigeTijd + 10

      toestand wordt 2

   ALS (toestand is 2 EN beweging gedetecteerd) DAN

      timerEindtijd = huidigeTijd + 10

   ALS (toestand is 2 EN huidigeTijd >= timerEindtijd) DAN

      zet lamp uit

      timerEindtijd = huidigeTijd + 10

      toestand wordt 1

 

Opdracht: maak pseudocode voor knipperend lampje

Beschrijf de pseudocode voor het toestandsdiagram hieronder. Het gaat om een knipperend lampje. Kies zelf de duur van de timer.

  • Toestand 1: lamp is uit
  • Toestand 2: lamp is aan

Oefenopdracht: tamagotchi

Opdracht Tamagotchi

In cyclus 1 heb je ze al leren kennen, de tamagotchi's. Hier volgen twee opdrachten waarin timers een rol spelen.

  1. Maak een geheel nieuw toestandsdiagram voor het volgende elektronische huisdier. Het huisdier is gewoonlijk blij. Als het een tijdje geen eten krijgt, krijgt het honger. Door eten te geven wordt hij  weer blij. Als je dan weer eten geeft wordt hij moe. Als hij dan een tijd geen eten krijgt wordt hij weer blij.
  2. Breid het vorige huisdier uit. Als het huisdier te lang honger heeft, gaat het dood. Je kunt dan niets meer doen.

Oefenopdracht: dodemansknop

Opdracht Dodemansknop

Een dodemansknop zit in de bestuurderscabine van een trein (zeg maar de cockpit). Om de zoveel tijd gaat er een lamp branden. De machinist moet daar op reageren door op een knop te drukken. De lamp gaat dan uit. Daarmee laat de machinist merken dat hij/zij nog alert is. Als de machinist niet binnen zoveel seconden reageert, zal de trein afremmen en tot stilstand komen.

Maak een toestandsdiagram voor een prototype van een dodemansknop. Om de 10 seconden gaat er een lamp branden. De treinmachinist moet dan binnen 5 seconden op een knop drukken, de lamp gaat dan uit. Als hij/zij dat niet doet, gaat een alarm (bijvoorbeeld een zoemer of een lamp aan). Zodra de knop weer wordt ingedrukt gaat het alarm uit.

Datasheets

De datasheet van een sensor kan je veel informatie geven over de werking van een sensor. Die informatie kun je gebruiken om een keuze te maken tussen verschillende type sensoren.
Hieronder vind je een Engelstalig filmpje over het lezen van datasheets en daaronder de bijbehorende website.

Over sensoren en datasheets

Terug naar voorpagina

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