STEM

Extra cursusmateriaal

Hieronder vind je een aantal bruikbare links voor deze cursus:

Het IPOS-model


Bron afbeelding: Kris Merckx - www.ardeco.be

Hello <digital/> World

Copyright: Kris Merckx 2015

Dit boek start met deel 0. In programmeertalen is het eerste element in een reeks objecten nooit gewoon 1, maar element 0. In menselijke taal zouden we dit deel de inleiding noemen, maar toch is het belangrijk dat je net deze inleiding even leest. Hiernaast zie je een afbeelding, een soort cirkel, een voorstelling van het IPOS-model waarover je meteen meer leest.

In dit boek probeer ik je digitale systemen beter te leren begrijpen. Je leert meer over hun werking, over hun mogelijkheden en beperkingen en over de uitdagingen voor de toekomst. Je zal interactief leren door te doen en te ervaren.

0.1 Het IPOS-model

Wat is een computersysteem eigenlijk en hoe werkt het? Nee, we gaan niet uitleggen wat een harde schijf is en waarvoor RAM-geheugen dient... dat weet je ondertussen ook al wel. Maar we gaan even een heel klein beetje de filosofische tour op. Als je alle computersystemen op een hoop gooit, wat hebben ze dan gemeenschappelijk?

Meestal komt dan het zogenaamde IPOS-model om de hoek kijken: Input – Processing – Output – Storage.

1. Onder input verstaan we alle soorten informatie die je in zo'n toestel propt: tekst, foto's, film, muziek... Hiervoor heb je een reeks invoerapparaten nodig: een toetsenbord, een webcam, een USB-kabel, een SD-kaart, een scanner, muis, microfoon of zelfs gewoon een andere computer. Een computersysteem kan ook zelf op zoek gaan naar invoerdata, zoals dat bij BIG DATA wel eens gebeurt.

2. Het toestel zal met die informatie iets gaan doen. In een aantal gevallen vind er een conversieslag plaats, een vertaling van analoge informatie naar digitale informatie (hier leer je nog over). Die verwerking of “processing” kan gebeuren tijdens de invoer of achteraf als de computergebruiker die input wil bewerken. Als je een tekst intikt in een tekstverwerker gebeurt de input en verwerking simultaan. Wanneer je een foto bewerkt in een beeldbewerkingsprogramma, dan gebeurt de verwerking meestal achteraf.

3. Om dit mogelijk te maken moet het computersysteem ook in staat zijn de ingevoerde data te bewaren (storage).

4. Een computersysteem zal de gebruiker feedback geven. Dat kan in realtime door bijvoorbeeld te zeggen dat er iets fout is gegaan, door een bevestiging te vragen enz. Een programma kan ook feedback geven aan zichzelf: als dit gebeurt, dan doe ik dat, in het andere geval... In zo'n geval spreken we van “open loop”-feedback. Wanneer de gebruiker op één of andere manier moet bevestigen of iets doen, dan spreken we van “closed loop”-feedback.

5. Maar de bedoeling is meestal dat de computer toont wat het resultaat van die bewerking is. In veel gevallen ziet de gebruiker het resultaat meteen op een scherm. Je ziet meteen het eindresultaat: what you see, is what you get (WYSIWYG). Ook nadien kan je de bewaarde en verwerkte data nog “bekijken” door het bestand te openen, af te drukken, te posten op een website enz. Inderdaad, dat is wat we met output bedoelen.


Bron: http://www.bbc.co.uk/schools/gcsebitesize/design/resistantmaterials/processystemsrev1.shtml

0.2 Hoe werkt onze “computer”?

In wezen is een computersysteem voor een deel gebouwd naar hoe we onze “eigen” werking als mens zien. Je ondergaat heel wat “invloeden” van je omgeving, van het weer tot die giftige sneer van een opmerking die de docent je gaf tijdens de les omdat je even niet aan het opletten was. Je hoort, ziet, proeft, voelt... en je registreert (INPUT via ondermeer “sensoren”), je selecteert waar je mee bezig wil zijn (je favoriete APPS) of moet zijn (standaard PROCESSEN), je verwerkt het (soms krijg je het niet verwerkt en CRASH je letterlijk). Je zegt soms dat het allemaal een beetje te veel is of dat je geen twee dingen tegelijk kan (te weinig RAM-geheugen, MULTITASKING). Je onthoudt ook zaken, dat kan gaan over pure herinneringen aan gebeurtenissen in je leven, verplichte leerstof, ervaringen (kortom FILES en FOLDERS). Sommige dingen heb je niet geleerd, je doet ze automatisch zoals bijvoorbeeld ademen (BIOS, OPERATING SYSTEM). Maar je leert ook dingen doen: je kan fietsen, koffie maken, schrijven (PROGRAMMA's, SOFTWARE, APPS). En uiteindelijk geef ook jij feedback: je kan boos zijn om wat men je aandoet of net heel blij of gelukkig (FEEDBACK). Of je kan een alarminstallatie installeren omdat er werd ingebroken (FEEDBACK = nieuwe SOFTWARE). Je gaat naar school om nieuwe dingen te leren doen (APPS) om later werk te vinden (PROCESSING).

Uiteraard stemt dit niet overeen met de werkelijkheid van wat het is om een mens te zijn. Een mens is geen computer en herinneringen werken volledig anders dan "files". Het helpt enkel om de werking van een systeem beter te vatten. 


Volgend hoofdstuk



Onderstaand artikel uit Cursus multimedia (K. Merckx)

Computers, laptops, tablets, smartphones, internet of things... Hoe maken we die digitale en elektronische wereld bevattelijk? Er is meer onder de zon dan de strijd tussen Microsoft en Apple of Android en iOS. In dit hoofdstuk leer je je weg te vinden in wat digitaal en elektronisch nu eigenlijk is. Hoe verhouden de diverse toestellen zich tot elkaar? Wat is het verschil tussen de boordcomputer in je auto en je laptop? Is je TV ook een computer als je ermee op internet kan?

1.1 Je weg vinden in het elektronische en digitale landschap

Je zal een stap voor zijn op de meerderheid van het grote publiek dat zulke toestellen wel massaal gebruikt, maar eigenlijk niet goed weet hoe die werken en nog veel minder hoe je zo'n toestellen zelf op maat kan bouwen. Wat leeft er allemaal in die “digitale wereld”? Wat is het verschil of de verhouding tussen analoog en digitaal, tussen elektronica en computers, tussen computers en microcontrollers, tussen embedded systemen en firmware, tussen hardware en software? Volg je nog? Ok, laat het ons een even allemaal op een rijtje zetten. Opgelet: we staan niet stil bij klassieke computers of televisietoestellen of diverse “merken”.

1.1.1 Hardware en software

Een computer (de hardware), of het nu gaat om een klassiek desktop-onding, een tablet, smartphone of een laptop, bestaat uit een hoop onderdelen. Je vindt er een processor in, een tijdelijk werkgeheugen (RAM), een opslagmedium (harde schijf, SSD, SD...), invoerapparaten (muis, touchscreen, toetsenbord...) en ook een outputsysteem (bestanden, scherm, webserver...). Al die diverse toestellen doen in wezen niet zo'n aardig verschillende dingen. Ze verwerken invoer en tonen en/of bewaren de uitvoer. Dat heb je op de schoolbanken geleerd. Ze kunnen niet zonder “software”, de ongrijpbare programma's die ergens virtueel zijn “geïnstalleerd” als digitale gegevens op een opslagmedium. De software geeft onder de vorm van “binaire” code instructies aan de toestellen, verwerkt de invoer en presenteert de uitvoer.

Software bestaat op diverse niveaus:

1. een basissysteem (bios, uefi) dat de contacten tussen alle onderdelen regelt,

2. een besturingssysteem (zoals Android, iOS, Linux, Mac OS X, UNIX, Windows...)

3. of gewoon software met een heel specifieke taak (zoals GIMP, MS Word of... Processing).

Maar er bestaan ook andere verschijningsvormen die men gemakshalve eveneens aanduidt met de naam “computer”, maar in wezen niet helemaal voldoen aan de definitie hier boven. Een microcontroller is zo'n “computer”. Men gebruikt een microcontroller of microprocessor om elektronische apparatuur te besturen. Heel wat moderne apparaten bevatten zo'n microcontroller: een magnetron, een auto, een wasmachine, sommige telefoons...


Er bestaan ook kruisbestuivingen tussen beide. De immens populaire Raspberry Pi is daar een voorbeeld van.

1.1.2 Embedded systemen en firmware

Ongetwijfeld heb je op het vlak van “consumentenelektronica” al gehoord over “embedded systemen” en “firmware”. Een embedded system (ingebed of geïntegreerd systeem) is heel vaak gebaseerd op een microcontroller (met een microprocessor en/of DSP of 'digital signal processor') of op een SoC (System on a chip). Het vervult een bepaalde functie binnen een groter mechanisch of elektrisch systeem. In een koelkast kan het de temperatuur regelen, in een wasmachine regelt het de functie van alle “programma-instellingen”, in je auto zorgt het voor alle foutmeldingen die op je dashboard verschijnen, maar ook voor alle andere digitale informatie, voor het aansturen van bepaalde onderdelen van je motor enz.

Vroeger bestonden regelsystemen hoofdzakelijk uit mechanische en later elektronische onderdelen. Nu neemt de in een “microcontroller” geïntegreerde software veel van die taken over. Een microcontroller integreert hardware en software. Er zit geen “harde schijf” in waarop de software manueel kan geïnstalleerd worden, vaak zit de software geïntegreerd in de hardware, als vrijwel niet te wijzigen programma's. Soms kan de ingesloten software geüpdated worden, dan spreekt men van “firmware”.

1.1.3 Voordelen en nadelen

Zo'n integratie biedt tal van voordelen in vergelijking met een “computer”.

  • 1. De verwerking gebeurt real time (beeld je maar eens in dat je auto zou werken op Windows),
  • 2. snel
  • 3. en verbruikt zeer weinig energie.
  • 4. Een embedded systeem is ook veel goedkoper.

Nadeel is dat de functionaliteit heel beperkt is. Je kan bijvoorbeeld geen tekstverwerker installeren in je koelkast of videomontagesoftware in je auto.

Het Leuvense IT-bedrijf EASICS ontwikkelde de beeldherkenningshardware waarmee de sorteermachines van de Belgische firma BEST zijn uitgerust. De hardware van EASICS herkent tegen een onwaarschijnlijk hoog tempo “ongewenste” elementen tussen bijvoorbeeld razendsnel voorbij rollende frieten, krenten, garnalen, spijkers of wat dan ook en activeert een luchtdrukstraal die het ongewenste element wegspuit. Een “multifunctionele” computer, hoe krachtig en snel ook, zou er niet in slagen om die taak zo snel af te handelen. Omdat de programmacode in de chip is gecodeerd, verloopt de verwerking hier onwaarschijnlijk snel.
Even bekeken volgens et IPO-model: input = beeld van camera, processing = herkennen van ongewenste elementen, output en feedback = verwijderen van ongewenst element.

Vaak worden embedded systemen met één bepaald doel voor ogen ontwikkeld, zijn ze heel “gespecialiseerd”, maar je kan ook herbruikbare microcontrollers ontwikkelen... en dan zitten we bij de Arduino aan het juiste adres als “startersmodel”.


Een eigenhandig gebouwde smartphone op basis van een Arduino-microcontroller.

1.1.4 Embedded systeem

Een “embedded systeem” bevat een sensorgedeelte dat informatie uit de werkelijkheid kan registreren. In een tweede fase kan het die informatie digitaliseren. Die digitale informatie moet verwerkt worden door de “microprocessor” of de firmware. In een laatste fase zal een “actuator” bepaalde onderdelen aansturen of zorgen voor zichtbare of hoorbare output.

1.1.5 SoC's en microcontrollers

Naast de term “microcontroller” en “embedded system” duikt ook wel eens de term “system on a chip” (SoC) op. Een SoC (met een C wel te begrijpen), integreert alle componenten van een computer en/of elektronisch systeem op één enkele chip. SoC's worden veelvuldig toegepast in de markt van mobiele consumentenelektronica. Een “embedded systeem” bevat vaak een SoC.

Oeps, waar ligt dan de grens tussen een “microcontroller” en een “SoC”? De term “System on a chip” is in dat geval niet de beste keuze geweest. Immers, een “microcontroller” is vaak pas echt gebaseerd op één enkele chip, waardoor het beschikbare RAM-geheugen vaak onder de 100 kb blijft. Een SoC bevat vaak een veel snellere processor met meer werkgeheugen waardoor het in staat is om een besturingssystemen zoals Linux te draaien. Het is dus niet altijd echt één chip, want een SoC maakt vaak gebruik van externe geheugenchips (SD-kaartje, RAM...). Een modern besturingssysteem, hoe compact ook, heeft wel wat meer nodig dan 100 kb. Het begrip SoC verwijst dus eerder naar een zeer sterke integratie van de chips, waardoor kleinere systemen mogelijk worden.

1.2 Digitale “dingen”

Waarom zou je met zulke toestellen aan de slag gaan of er tijd in steken, want in wezen zijn ze veel trager dan een standaard “computer” of zelfs een goedkope smartphone? Embedded systemen en microcontrollers zijn aan een ware veroveringstocht bezig. Wellicht hoorde je de term “internet of things” al eens vallen. Ruwweg houdt dit in dat stilaan elk huishoudelijk toestel, maar ook auto's, bewakingscamera's en domoticasystemen zulke embedded systemen aan boord hebben. Wanneer je al die dingen (things) aansluit op het internet, krijg je een allesomvattend netwerk van digitaal verbonden toestellen: het internet of things. We stellen ons hier even geen vragen over de gevolgen en gevaren voor de privacy en de ethiek.

Kortom, embedded systemen, SoC's en microcontrollers zijn niet meer weg te denken uit de wereld van vandaag en morgen. Be prepared! Wees voorbereid, want wie het kent, kan er zijn voordeel uit halen en zich behoeden voor al te grote 'schendingen' van zijn vrijheid en privacy. Hoe meer je erover weet, hoe beter je er mee kan omgaan, hoe beter je het systeem kan “hacken” (=uit elkaar halen en begrijpen).

1.3 Analoog naar digitaal

De fysieke wereld waarin wij leven gedraagt zich analoog. Natuurkundige fenomenen zoals licht, geluid, temperatuur ... kunnen voortdurend wijzigen. Een elektronisch apparaat zet signalen uit de omgeving (geluid, licht, warmte ...) om in elektrische signalen (spanningen, stromen ...). Net zoals een foto-elektrische cel licht omzet in een elektrisch signaal, zet een microfoon drukgolven in de lucht om in een veranderlijke elektrische spanning.
Een computer is een elektronisch systeem, maar niet elk elektronisch systeem is een computer; Een televisietoestel verwerkt net zoals een computer een binnenkomend signaal met behulp van elektronische onderdelen en toont die op het scherm. Maar dit betekent daarom nog niet dat een televisietoestel dan ook een "digitaal" systeem is; Digitale systemen verwerken alle invoer met behulp van binaire code. 

1.3.1 Sensoren

Zonder dat we het zelf goed en wel beseffen worden we omringd door sensoren. Je vindt ze in je mobiele telefoons (camera, microfoon, accelerometer ...), het toetsenbord en de muis van je computer, de thermostaat van de verwarming, in automatische lampen, het scherm van een tabletcomputer ... Als je na een nachtje stappen aan de kant wordt gezet door de politie, vind je ze zelfs in de alcoholtester (een chemische sensor). Omdat de opgewekte elektrische signalen vaak te zwak zijn om bruikbaar te zijn, bevat veel elektronica ingebouwde of aangesloten versterkers. Analoog houdt in dat de informatie als een continue golf of ‘stroom’ wordt opgeslagen. Zoals je weet, bestaat geluid in werkelijkheid uit een reeks voortdurende trillingen in de lucht, een golf met andere woorden. Bij een microfoon brengen de trillingen van de lucht een membraan1 in beweging. Deze beweging wordt omgezet in een veranderlijk elektrisch signaal, dat opgeslagen kan worden op magneetbanden. Analoog betekent dus ‘naar analogie met de werkelijkheid’. Analoge signalen zijn erg onderhevig aan storingen of interferenties van bijvoorbeeld andere apparaten.

1.3.2 Actuatoren

Actuatoren vormen een ander onderdeel van een elektronisch systeem: zij zetten elektrische signalen om in andere signalen zoals mechanische kracht, geluid ... Een luidspreker is een bekend voorbeeld van een actuator. Hij laat de lucht trillen door eerst zelf te trillen. Zo zet een elektrische motor elektriciteit om in een mechanische beweging, een lamp en een beeldscherm zetten elektrische energie om in licht enzovoort.

Naast de invoer via sensoren en de uitvoer via actuatoren voert de elektronica zelf een aantal berekeningen, algoritmes of programma’s uit op de binnenkomende signalen. Elektronica kan naar analogie met de werkelijkheid het elektrische signaal continue bewaren, zoals dit bijvoorbeeld met geluid op een magneetband gebeurt. Toch kunnen hier wat fouten of afwijkingen optreden. Als je destijds een audiocassette te lang op een warm dashboard liet liggen, merkte je het aan de geluidskwaliteit!


Een klassieke audiocassette bewaarde geluid analoog op een magneetband.

1.3.3 Discretisatie

Elektronisch is nog wat anders dan digitaal, ook al hoor je de termen weleens door elkaar gebruiken. Het sleutelwoord bij digitaal is ‘discretisatie’ in ruimte en tijd. Wanneer we analoge informatie digitaliseren, plaatsen we een denkbeeldig raster over de fysieke wereld en meten we de binnenkomende signalen enkel op bepaalde tijdstippen, meestal op vaste intervallen. Dit gebeurt doorgaans zeer snel, want anders zouden we veel ‘informatie’ missen. Discretisatie in ruimte en tijd heet in het vakjargon ook wel bemonstering, maar is vooral bekend onder de Engelse benaming ‘sampling’. Een sample of een monster van een beeld noemen we een ‘picture element’ of ‘pixel’. Een digitaal systeem meet ook de signaalniveaus (discretisatie van de signaalwaarden), zoals de lichtintensiteit van een pixel.

1.3.4 Afspraken

Bij het bouwen van zo’n systeem moeten er vooraf afspraken gemaakt worden. Bij een afbeelding kan dit gaan om de hoeveelheid pixels die men horizontaal of verticaal wil meten, bij geluid over het aantal metingen per seconde. Een audio-cd bevat bijvoorbeeld 44100 samples of metingen per seconde (sample rate van 44.100 Hertz = 44,1 kHz). Elke sample of meting wordt uitgedrukt als een getal tussen 0 en een vooraf bepaalde maximale waarde. Hoe hoger die waarde, hoe groter het bereik en hoe nauwkeuriger het signaal kan worden gemeten en weergegeven. Wanneer we licht meten met slechts twee lichtintensiteitswaarden, bevat ons eindresultaat enkel wit of zwart.

1.3.5 Binair coderen, ruis en foutonderdrukking

Simpel gezegd werkt een elektronisch of digitaal toestel op basis van elektriciteit en die kent ruwweg maar twee toestanden: aan (1) of uit (0). Het lijkt dus op het eerste gezicht niet zo eenvoudig om getallen hoger dan de waarde 1 te meten of te bewaren in een digitale omgeving. Daarom maken digitale systemen gebruik van het binaire stelsel, een tweetallig getalsysteem dat alle getallen weergeeft met de symbolen 0 en 1.

Een binair cijfer of bit (binary digit) kan dus slechts twee vormen aannemen: een 0 of een 1. Een binair getal noemen we anders naargelang het bereik. Zo noemen we een getal van 8 bits een byte. Wij leren op school letterlijk tellen op onze vingers (digitus in het Latijn) en we gebruiken daarom niet voor niets een tiendelig of decimaal talstelsel. Daarom is het ook even wennen als we met binaire getallen aan het tellen gaan. Je leert meer over binaire getallen via deze link


Een bereik van 8 bits geeft 2 tot macht 8 (256) mogelijke waarden. Een audio-cd heeft een bereik van 16 bits of 32.768 mogelijke waarden. Deze vorm van discretisatie beïnvloedt in sterke mate de kwaliteit. Hoe lager het aantal beschikbare bits of hoe trager het bemonsteren gebeurt, hoe lager de kwaliteit. Een te hoog bereik is echter evenmin zinvol. Het menselijk oor kan de extra kwaliteit toch niet altijd waarnemen. Daarom probeert men vaak een gulden middenweg te vinden tussen kwaliteit en ‘beperkingen’, zoals opslagcapaciteit en doorvoersnelheid (bijvoorbeeld de snelheid van de internetverbinding). In onze tijd worden digitale gegevens ook opgeslagen en voor langere tijd bewaard.

Hoe gaat dit fysisch precies in zijn werk en welke voordelen biedt deze manier van opslaan? In een digitaal systeem bestaat elke waarde uit een reeks bitjes, die elk afzonderlijk slechts 2 geldige waarden kennen, namelijk 0 of 1. In een elektronische schakeling kunnen we dit zien als een verschil tussen bijvoorbeeld 0 en 1,8 Volt, op een cd als een minuscuul putje of net geen, op een harde schijf als een klein gebiedje dat al dan niet gemagnetiseerd is, op een flash-geheugenkaartje als een pakketje elektronen (elektrische lading) dat wordt vastgehouden in een transistor ...

Samengevat betekent ‘digitaal’ dus dat we de informatie bewaren als een reeks binaire getallen. Een geluidsgolf kunnen we bijvoorbeeld weergeven als een reeks getallen met een bepaalde grootte. Als we die getallen op een grafiek zetten, zien we de oorspronkelijke golf weer verschijnen. Digitale informatie wordt altijd met binaire en niet met decimale getallen weergegeven. In het binaire stelsel wordt elk getal voorgesteld als een combinatie van nullen en enen. Binaire getallen zijn uitermate geschikt om door elektrische schakelingen of bedrading te sturen omdat die enkel maar een aan-toestand (1) en uit-toestand (0) herkennen. In een analoog systeem kan elke gewenste waarde tussen een bepaalde ondergrens en bovengrens worden voorgesteld.

Als er ruis optreedt door bijvoorbeeld slijtage op een magneetband of een elektromagnetische storing, kan het oorspronkelijk signaal niet meer onderscheiden worden van de ruis. De ruis die er achteraf bijgekomen is, heeft de oorspronkelijke signaalniveaus immers aangetast. Ook in een digitaal systeem kan ruis optreden. Een kras in een optische schijf zoals een cd kan putjes minder diep maken of elektromagnetische storingen kunnen bepaalde zones op een harde schijf demagnetiseren. Toch kan over het algemeen het oorspronkelijke niveau hersteld worden (als de storing niet te groot is) omdat elke bit slechts twee geldige waarden heeft: het is ofwel 1 ofwel 0 en daaruit moet het systeem zelf kiezen. Een kras kan bij wijze van spreken van 0 een 0,3 maken, maar die waarde ligt dichter bij de 0 dan bij de 1. Enkel een 0,5 zou een twijfelgeval kunnen worden. Als de schade door slijtage, ruis of storingen dus niet te groot is, kan een digitaal systeem de oorspronkelijke informatie of kwaliteit volledig herstellen. Maar zelfs in het geval van grote schade kan men door codeertechnieken (het uitrekenen van bepaalde controlegetallen over groepen van bits) de fouten toch nog herstellen (uiteraard binnen bepaalde grenzen). Sommige systemen maken gebruik van symbolen die meer dan twee waarden kunnen aannemen, waarbij één geheugencel 2 of 3 bit aan informatie kan bevatten. Dit soort transistors houden pakketjes elektronen van 4 of 8 verschillende (nominale) groottes vast. Zulke systemen zullen echter sneller falen bij kleine storingen of ruis. Toepassingen die een hoge betrouwbaarheid vereisen (zoals medische implantaten of ruimtevaart) zullen daarom 1 bit-cellen gebruiken. Digitalisering biedt nog tal van andere voordelen. Zodra een signaal is gedigitaliseerd, kan het makkelijk bewerkt en aangepast worden. Voor het toepassen van een filter op een afbeelding hebben we bijvoorbeeld niet langer een speciaal onderdeel of toestel nodig, dit kan met een computerprogramma. Dezelfde geheugendragers kunnen gebruikt worden om verschillende vormen van informatie te bewaren: foto’s, tekst, muziek, beeld, programma’s …

1.3.6 Van digitaal naar analoog

Pulsbreedtemodulatie (PWM of pulse width modulation) is het begrip als het gaat om het omzetten van digitale signalen naar analoge signalen. Cool, echt een begrip om mee uit te pakken aan de toog van je stamcafé, maar je kan best toch zorgen dat je dan tenminste weet waarover je het hebt. Zeker als die onbekende man op de hoek van de toog een ingenieur blijkt te zijn. Ben je er klaar voor?

Stel dat je dit boek nu niet zou lezen, maar dat je naar de audioversie ervan zou luisteren, dan zou het geluid van mijn opgenomen stem de lucht laten trillen. De luchtdeeltjes zouden als een voortdurend wijzigende golf je oren bereiken, met steeds wisselende pieken en dalen: een analoog geluidssignaal, naar “analogie” met de werkelijkheid. Nochtans werkt die luispreker op basis van elektrische signalen die nu eens uit en dan weer aan kunnen staan. Ofwel stuur je een pulsje stroom, ofwel niet, want elektriciteit beweegt nu eenmaal niet zoals een golf zeewater. Het is het een of het ander bij elektriciteit. De stroom staat aan of uit, 1 of 0. Hoe kan je dan met elektrische stroom een geluidsgolf genereren, een motor zachter laten draaien, een LED-licht dimmen?

Je kent het antwoord al, met PWM! Maar hoe gaat dit nu in zijn werk? Met PWM moduleren we de stroom. We schakelen bliksemsnel tussen 5V en 0V. Stel dat je de voltage de helft van de tijd instelt op 5V en de helft van de tijd op 0V dan krijg je een gemiddelde stroom van 5V of een “duty cycle” van 50%. Laat je de stroom 10% van de tijd op 5V staan, dan krijg je gemiddeld 0.5V. Als je op deze manier een motor aanstuurt, zal de motor langzamer draaien bij een lagere duty cycle. De motor krijgt dan wel zijn maximale spanning, maar niet continu. M.a.w. als je de schakelaar continu aan laat staan, zal je motor constant snel draaien, je LED-licht continu “fel” branden. Als je snel aan en uit pulst, zal de motor zachter beginnen draaien en je licht dimmen.

1.3.7 Programmeerbare automaten zijn zeer oud (randinformatie)

Het binaire talstelsel werd “bedacht” door de wiskundige en filosoof Gottfried Wilhelm Leibniz (1646– 1716), een tijdgenoot van het onovertroffen genie Isaac Newton (1643–1727). In zijn tijd zag niemand het nut in van zo’n binair talstelsel en hij zelf gebruikte het vermoedelijk enkel in filosofische discussies over godsdienst: de 1 zou daarbij staan voor het bestaan van God en de 0 voor de afwezigheid van God. Andere vondsten van Leibniz, zoals het ‘is gelijk aan’-teken (=) of de dubbele punt bij delingen (:), raakten wel ingeburgerd. Het binaire getalsysteem werd in de eerste helft van de 20e eeuw dankbaar opgevist voor gebruik in de eerste digitale computers.

Ook al was het binaire talstelsel nog niet uitgevonden, toch bestond het “digitaal” programmeren van machines al veel langer. Heron van Alexandrië bouwde tweeduizend jaar geleden automatische theaters met gewichten, touwen, assen en pinnen. Aan het ene uiteinde van het touw bevestigde hij een gewicht, dat hij boven op een met tarwekorrels gevulde cilinder plaatste. Door een sleufje onder in de cilinder open te trekken, vloeiden de korrels weg. Hierdoor begon het gewicht met enige vertraging te zakken. Aan de andere kant hingen twee touwen. Elke touw was rond een afzonderlijke as (de linker en de rechter vooras) gewikkeld. In beide assen waren op gelijkmatige afstanden gaten geboord. Het zakkende gewicht trok niet alleen aan de touwen, maar liet de beide assen ook draaien. De machine kon eenvoudig geprogrammeerd worden door in de gaten pinnen te plaatsen. Als je een touw rond een bepaalde pin liet teruglopen, kon je een van beide assen op elk gewenst moment in de andere richting laten roteren. Net zoals in moderne programmeertalen slaagde Heron er ook in om een ‘timer’-functie in te bouwen. Hiervoor plakte hij met was een stuk van het touw vast aan de as. Het zakkende gewicht trok het was stilaan los. Als het touw eenmaal was losgekomen, begon de as weer te roteren.


Je zou de instructies voor Herons robot kunnen uitschrijven in de code voor Lego® Mindstorms- robots:

task main(){
OnFwd(OUT_A,75);
OnFwd(OUT_B,100);
Wait(3000);

De OnFwd-instructie laat de motor naar keuze (A of B) vooruitbewegen. De Wait-instructie laat het toestel voor een bepaalde duur (milliseconden) halt houden. Uiteraard schreef Heron geen programmeerinstructies. Ze waren vastgelegd in zijn machine, maar op zo’n manier dat je het toestel kon herprogrammeren door de pinnen te verplaatsen. Het programma werd ‘opgeslagen’ in de assen met wat we binaire instructies zouden kunnen noemen. Een pin staat voor een 1, een gat zonder pin voor een 0 (of omgekeerd). Het automatische theater van Heron reed volkomen zelfstandig het podium van het theater op. Daar stopte het en toonde een toneelstuk van mechanische poppen, die eveneens door een mechanisme van pinnen, gewichten, touwen, assen, tandwielen en hefbomen werden aangedreven. Het theater was voorzien van decorwissels en geluidseffecten. Door op een bepaald moment een sleuf open te trekken, vielen loden ballen op een trom, wat het geluid van donder simuleerde.

Wellicht bestond de techniek voor het programmeren van toestellen al langer en heeft Heron het niet zelf bedacht. De techniek om toestellen te programmeren dook ook op bij Islamgeleerden, in middeleeuwse klokken, bij Leonardo da Vinci. In de 18e eeuw paste men de techniek enigszins aan door de cilinders met pinnen te vervangen door kaarten met gaten (ponskaarten). Men begon ze in te zetten voor het automatisch weven van kleren in weefgetouwen (Jacquard). De techniek van de ponskaart als middel om gegevens of programma-instructies te bewaren, bleef in gebruik als opslagmedium voor computers tot in de jaren 1980.

 Een ponskaart voor de opslag van geprogrammeerde muziek (19e eeuw).

1.4 Microcontrollers en SoC's voor doe-het-zelvers

1.4.1 Arduino

De Arduino is niet enkel een microcontroller. Het is een speciaal ontworpen bord voor het programmeren en het maken van “prototypes” met Atmel-microcontrollers. Als je er al eentje hebt aangeschaft, zal je ondertussen wel weten dat het goedkoop is. Voor een kleine 25 euro haal je een Arduino UNO in huis. Bovendien is het aardig makkelijk om mee te werken. Je sluit het via USB aan op je computer. Arduino-programma's schrijf je met een gratis stuk software. (http://arduino.cc/en/Main/Software).

De Arduino krijgt stroom via een USB-verbinding, maar kan ook los van de computer functioneren via een netadapter of batterijen. De Arduino meldt zich bij uw computer aan als een “virtuele seriële poort”. Als je code schrijft, kan je ze met een eenvoudige klik op de knop uploaden naar de Arduino. De standaard Arduino beschikt over 32 KB flashgeheugen om je code te bewaren. Dat is niet veel, maar ruim voldoende voor de meeste projecten.

Een Arduino telt 13 digitale en 6 analoge pins om externe hardware en sensoren aan te sluiten. Voor wie wat meer thuis is in de elektronicawereld: het bord heeft ook een ICSP-connector waarmee je de Arduino rechtstreeks als een serieel toestel kan aanspreken. Via deze poort kan je de Arduino “herstarten” (bootload) wanneer de chip niet meer met je computer wil “spreken”.

Afhankelijk van het project dat je wilt bouwen, kan je extra bordjes, sensoren of uitvoerapparaten op de Arduino aansluiten of in de pins “klikken”. Wanneer je een gewenst onderdeel aankoopt, vind je op de website van de fabrikant over het algemeen het schema voor het bouwen van de hardware-applicatie en de benodigde code. Controleer dit vooraf zodat je niet voor ongewenste verrassingen komt te staan. Houd er ook rekening mee dat je voor sommige modules met een soldeerbout overweg moet kunnen.

Sensoren

Gyroscoop, accelerometer, ultrasone sensor, GPS, IR-afstandssensor, verstelbare IR-sensor, bewegingssensor

Shields

Wifi, Ethernet, Motor, Color LCD, AM&FM­ontvanger, VoiceBox (voice en sound synthesizer), Musical Intrument, Audio Player, Joystick, Xbee

Modules en adapters

Voide recognition, radiocommunicatie, Xbee, Bluetooth, Wiichunk­adapter, SD­ lezer, Power over ethernet­module, GSM­module

1.4.2 Wiring

Wiring is de naam van een hardwareproject, een soort broertje of zusje voor Arduino. Meer informatie vind je op . Net zoals Arduino is Wiring een open-source elektronica prototyping platform. Wat open source is, leer je in een later hoofdstuk.
Je kan er op heel eenvoudige manier een “prototype” van een programmeerbare elektronische schakeling mee bouwen.

1.4.3 Raspberry Pi

De Raspberry Pi is een minicomputer (ook wel een singleboardcomputer genoemd) met een ARM-processor die ook dienst kan doen als microcontroller voor kleine elektronicaprojecten. Vermits het een gewone computer is, kan je er ook randapparatuur zoals een muis en toetsenbord (via USB), een microfoon, luidspreker of beeldscherm (TV via HDMI) op aansluiten. Een hele rits Linux-distributies (maar ook bijvoorbeeld Risc OS en Plan 9) zijn geschikt om op de Pi geïnstalleerd te worden. Het toestel kan ingezet worden als fileserver, NAS, mailserver... Voor een kleine 50 euro koop je een Raspberry Pi wat mede heeft bijgedragen tot zijn gigantische succes.


Een Raspberry Pi met een Linuxbesturingssysteem via HDMI aangesloten op een televisie.

1.4.4 Intel Galileo

Processorfabrikant Intel keek al snel met groeiend ongenoegen naar het succes van de op een ARM-processor gebouwde Raspberry Pi. Daarom lanceerde het bedrijf zijn eigen minicomputer aan onder de naam Intel Galileo. Het toestel draait op de energiezuinige Quark x1000-SoC.

Omdat de Raspberry Pi ook kan gebruikt worden voor elektronicaprojecten zag Intel de Arduino als een nuttige bongenoot in de zijn "oorlog" tegen het ARM-geweld. De Galileo is daarom niet alleen compatibel met zijn "Pentium Instruction Set Architecture", maar ook met de Arduino-bibliotheken en IDE.

1.4.5 Little bits

Wie toch zijn eigen elektronica wil “programmeren” en samenstellen zonder één letter code te schrijven of met kabels of soldeerbouten aan de slag te moeten gaan, moet zeker eens kijken naar Little bits. Met de eenvoud van Lego bouw je met Little bits coole elektronicaprojecten. Je klikt de diverse onderdelen poepsimpel via kleine magneetjes aan elkaar en klaar is kees.


1.5 Oefeningen

Audacity: Tijdens de les digitaliseren we audio met het open sourceprogramma Audacity (www.audacityteam.org). We bekijken hoe het audiosignaal er in digitale vorm uitziet.

Adobe Photoshop / GIMP: We zetten een foto om in zwart-wit en verlagen het aantal pixels drastisch. We bekijken hoe discretisatie aan het werk is gegaan.

http://www.ardeco.be/sirk/screen.html: Pixelweergave met een raster. Hoe stuur je boodschappen door in binair formaat?