Physical computing

Uit Lab
Naar navigatie springen Naar zoeken springen
Physical computing
Arduino Basis
  1. Led-0: breadboard, LED, weerstand
  2. Blink-1
  3. Button-1
  4. Blink-freq: frequentie
  5. Blink-PWM: pulsbreedte-modulatie
  6. Analoge input

Inleiding

Op het web vind je veel voorbeelden van leuke projecten. Het is zeker de moeite waard om een aantal projecten na te bouwen. Maar op een bepaald moment wil je je eigen projecten gaan maken: daarvoor moet je iets begrijpen van de bouwstenen die in zulke projecten gebruikt worden. Wat zijn de regels voor het gebruik en voor het combineren van deze bouwstenen? Hoe kun je daarmee je eigen project maken? Daarvoor is deze cursus bedoeld.

In deze cursus Physical computing maak je kennis met de Physical computing "bouwdoos". Bij elke bouwdoos gaat het om de volgende zaken:

  • wat zijn de beschikbare bouwstenen?
  • hoe kun je deze bouwstenen combineren?
  • hoe los je een probleem op met behulp van deze bouwstenen?

In het geval van Physical computing hebben we te maken met hardware-bouwstenen, met software-bouwstenen, en met interfaces en programma's die deze bouwstenen combineren tot een werkende oplossing.

Het doel is dat je met de kennis van deze cursus weet hoe je een aantal elementaire bouwstenen kunt gebruiken en kunt combineren. Bovendien moet je van een nieuwe bouwsteen kunnen begrijpen hoe je deze gebruikt, en hoe je deze met andere bouwstenen kunt combineren (of niet).

Hardware is anders

In de wereld van de software ben je gewend dat vrijwel alle combinaties van bouwstenen mogelijk zijn. Niet alle combinaties zijn zinvol, maar er zijn nauwelijks beperkingen op de combinaties.

Hardware is anders: je hebt te maken met beperkte "resources" zoals pinnen, timers, adressen enz. Als een resource gebruikt wordt door één bouwsteen, kun je deze niet gebruiken voor een andere bouwsteen - in elk geval, niet op hetzelfde moment. Dit betekent dat sommige combinaties van onderdelen niet mogelijk zijn.

Bovendien heb je te maken met een fysieke wereld: opdrachten kosten tijd; het aansturen van onderdelen kost energie; sensoren zijn niet perfect, en meten niet precies de waarde die je dacht te meten; de fysieke buitenwereld reageert misschien anders dan je gedacht had; enz.

Hardware kan kapot gaan als je deze niet op de juiste manier behandelt. In software kun je van alles uitproberen, maar in hardware moet je voorzichtig zijn met het aansluiten van onderdelen, het voorkomen van kortsluiting, enz. De regels hiervoor zijn niet heel ingewikkeld, maar als je een fout maakt zie je soms een foutmelding in de vorm van een rookpluim of een stinkend onderdeel; of soms juist een oorverdovende stilte.

Werken op de grens van de virtuele wereld (van informatie) en de fysieke wereld betekent bovendien dat je op meerdere plaatsen fouten kunt maken. Als je oplossing niet werkt, kun je een fout gemaakt hebben in je programma, in de hardware-schakeling, of in de aansluiting tussen beide. Het voorkomen van fouten, en het zoeken naar de bron van een fout, vereist een aparte aanpak.

Software: microPython

In deze cursus gebruiken we microPython als programmeertaal. microPython is tegenwoordig voor veel verschillende soorten microprocessoren beschikbaar, soms onder verschillende namen, zoals CircuitPython of micro:bit Python.

Een nadeel van die verschillende versies is dat de afspraken voor het gebruik van de hardware verschillen. Dit betekent dat een oplossing in microPython niet zomaar werkt op een micro:bit, of omgekeerd. Ten opzichte van de Arduino IDE, met vaste afspraken voor allerlei verschillende systemen, is dat een nadeel. Daar staat tegenover dat de programma's vaak veel kleiner en begrijpelijker zijn.

Voorkennis: programmeren in Python

We gaan er vanuit dat je kunt programmeren in Python. Deze cursus is niet bedoeld om te leren programmeren: in het bijzonder is de micro:bit versie van Python minder geschikt om te leren programmeren. De MakeCode-omgeving voor de micro:bit lijkt daarvoor beter geschikt.

Opbouw van de cursus

  • elementaire bouwstenen - zoals digitale en analoge i/o; seriële output
    • deze maken gebruik van elektrische schakelingen; deze worden apart uitgelegd, als de voorkennis ontbreekt.
  • foutzoeken
  • volgorde en tijd (timers)
  • actuatoren: power
  • sensoren, signalen en events
  • libraries;
  • interactie; eindige automaten
  • communicatie; protocollen

Wat zijn de bouwstenen

Elementaire hardware-schakelingen

Voor deze elementaire schakelingen heb je geen computer nodig: je hebt alleen een voedingsspanning van 3V en/of 5V nodig.

Bij deze elementaire schakelingen behandelen we ook een aantal zaken rond elektriciteit, zoals spanning, stroom, weerstanden en schakelaars.

Iets meer gevorderd

Basisbouwstenen

Deze basisbouwstenen kom je in veel programma's tegen. Je kunt hiermee al veel leuke dingen maken.