De Micro:bit is een microcontroller waarmee je allerlei leuke projecten kunt uitvoeren. Lees hier hoe je aan de slag kunt gaan.

Henk Siewert


Regelmatig zie, lees en hoor je over automatisering en de kenniseconomie. Zo langzamerhand komt men tot het inzicht dat alleen handig zijn met de ‘mobiel’ niet genoeg is om in de ‘automatisering’ een plaats te kunnen vinden. Het zou wel handig zijn als je niet alleen als ‘gebruiker’ met die alom vertegenwoordigde computers kunt omgaan, maar ze eventueel ook kunt vertellen wat ze voor je moeten doen.

Programmeren
Dat betekent dat je ook moet leren om computers te programmeren en vooral dat programmeren is iets waar een enorme behoefte aan is. Vroeger, jawel daar komt ie weer, betekende het dat als je met een computer om kon gaan, dat je ook begreep hoe zo’n ding werkte. Want anders kon je er ook niets mee. En meestal betekende dat ook dat je, in ieder geval een beetje, kon programmeren, al was het maar in BASIC.

       BBC 1
De BBC-microcomputer

Om de computer in 1981 ook aan de ‘gewone’ man te brengen en hem met die toverdoos om te leren gaan, startte de BBC het Computer Literacy Project. Dit project bestond uit lessen op de televisie en een computer, de BBC-microcomputer.

Dat project was zeer succesvol en hele volksstammen leerden met de computer omgaan en ook programmeren. Deze tv-programma’s zijn nog steeds via Youtube te bekijken: https://www.youtube.com/watch?v=5dIcOXx3Exc&list=PLOtimvwAoYtnCtLiLspq_Gnng1XusYwPU

Microbit 1         
De Micro:bit  

Ook nu hoor je dat het nodig is om de jeugd programmeren te leren. Daarom is de BBC, samen met veel bedrijven en instellingen, opnieuw een project in Groot-Brittannië gestart om jonge mensen en scholen enthousiast te maken voor de computer. Een tijdje geleden kregen bijna één miljoen Britse schoolkinderen gratis een computer, de microcontroller Micro:bit.

In Duitsland en China zijn inmiddels vergelijkbare projecten opgezet, met als resultaat voor Duitsland de microcontroller Calliope en voor China de Sino:Bit die tot op zekere hoogte vergelijkbaar zijn met elkaar. In Nederland hebben we nog geen ‘eigen’ microcontroller-projecten, maar wat niet is, kan nog komen.

calliope 1 sinobit
Calliope Sino:Bit


Micro:bit
De Micro:bit is ondertussen populair geworden en daarom besteden wij er hier aandacht aan. We bekijken de Micro:bit van dichterbij:

MB 1

Aan de voorkant (op de afbeelding links) is het bordje uitgerust met een aantal elementen die direct opvallen. In het midden is een matrix van 25 LED’s met aan weerszijden een drukknop en aan de onderkant een hele rij aansluitingen. Aan de achterkant bevindt zich de usb-aansluiting, een reset-drukknop en een aansluiting voor batterijen. Verder zijn er nog wat chips en sensoren en onderaan weer die rij met aansluitingen. Om het bordje wat te laten doen, moet het worden geprogrammeerd en daar is het uiteindelijk om begonnen.

Programmeren
Het programmeren kan op verschillende manieren. Het gemakkelijkste is om gebruik te maken van de mogelijkheden die online worden aangeboden. Er is zelfs een Nederlandstalige ingang naar de online programmeermogelijkheden: https://microbit.org/nl/

Eenmaal op de website zijn er verschillende mogelijkheden: zo kun je onder andere kiezen voor het programmeren met blokjes en Java of voor programmeren met Python. Laten we de blokjes- en Java-editor maar eens opstarten:

Java 1

Als je al bekend bent met Arduino, LaunchPad en vergelijkbare bordjes, ontdek je waarschijnlijk meteen de structuur van het programma: Setup() en Loop(), hier vertegenwoordigd door: bij opstarten en de hele tijd.

Het is de bedoeling om uit de linkerkolom blokjes te slepen naar het programmablad waar ze als puzzelstukjes in elkaar moeten passen. Ook hier is het, net als bij echte legpuzzels, soms wel even zoeken voor je doorhebt hoe dat past en werkt.

Je kunt heel snel resultaat krijgen door het blok voor de led-matrix te slepen en de verschillende vlakjes aan te klikken van de led’s die moeten gaan branden.

Java 2

Meteen valt dan ook op dat de simulator, aan de linkerkant van het scherm, meteen in actie komt om te laten zien wat er gebeurt. Best een leuke optie, je wilt tenslotte wel weten of het goed gaat.

Java 3De codeblokjes zijn leuk natuurlijk, maar om de ‘echte’ code te zien, klik je op de JavaScript-knop:

Kijk, daar word ik nu vrolijk van. Het programmeren met het aan elkaar plakken van blokjes is natuurlijk heel leuk en misschien, ik heb hier zo mijn voorbehoud, ook wel makkelijk om te leren, maar er zitten ook grote nadelen aan.

 

 

 

Blokjesplakkers
Ik ga nu een heel boude bewering doen. En ik spreek hier uit ervaring met het werken met mensen die dachten dat ze konden ‘programmeren’. Ik denk dat heel veel, soms zeer kostbare, automatiseringsprojecten mislukken omdat de programmeurs van tegenwoordig zijn verworden tot blokjesplakkers. Hergebruik van code, waarmee heel veel managers denken geld te kunnen besparen, heeft geleid tot het in bibliotheken en dichtgetimmerde zwarte dozen gieten van code waarmee men probeert een programma in elkaar te spijkeren. Op het eerste gezicht lukt dat dan aardig en in veel gevallen zal het wel werken. Totdat er een moment komt dat er uitzonderingen komen of dat het net iets ander zou moeten dat de doosjes het willen doen.

Dan is Leiden in last, want men weet niet wat er precies in die doosjes gebeurt. En als men - soms kan dat, maar meestal niet - in die doosjes gaat kijken, begrijpt men niet wat daar nou precies gebeurt. De code is meestal niet gedocumenteerd en de leverancier van de doosjes is meestal niet bereid om hun ‘geheimen’ zomaar prijs te geven, met alle gevolgen van dien. Dus wat mij betreft, weg met die blokjes, en leer echt programmeren.

Geen gedoe in de wolken
Zo’n online-omgeving is misschien handig om te starten met het geheel, maar ik ben daar geen liefhebber van. Ik heb alles graag op de computer waar ik ook op zit te programmeren, dus liever geen gedoe in de wolken. En dat geldt zowel voor de editor als voor de code en gelukkig kan dat. Op https://microbit.org/code/ is een op zichzelf staande editor te downloaden, zodat je onafhankelijk van een internetverbinding aan de gang kunt.

Java 4

Hier zien we de op zichzelf staande editor met code om de seriële communicatie te testen. Voor mij is een microcontroller alleen zinvol als je ermee kunt communiceren en dat kan gelukkig. Je moet wel eerst zorgen dat de Micro:bit zijn communicatie via de usb-poort laat verlopen, dit is de code die ik daarvoor heb gebruikt:

serial.redirect( SerialPin.USB_TX, SerialPin.USB_RX, BaudRate.BaudRate9600 )
basic.forever(function ()
{
    serial.writeLine("Hallo World")
    basic.pause(2000)
}
)

In TeraTerm, een seriële monitor, ziet het er dan zo uit als je wel even de COM-poort opzoekt in Apparaatbeheer:

tera 1 2

MicroPython
Een andere mogelijkheid is het gebruik van microPython. Op de pagina van https://microbit.org/code/ is hier ook een online editor beschikbaar, maar gelukkig is er tevens een op zichzelf staande editor op https://codewith.mu/. Deze editor werkt heel wat prettiger en heeft meer zinvolle functies.

Muedit 1 2Mu-editor voor microPython

Houd er wel rekening mee dat bij gebruik van microPython een complete interpreter samen met je eigen code in het geheugen van de Micro:bit wordt geladen. Hierdoor is de geheugenruimte voor eigen code beperkter.

Arduino
De laatste mogelijkheid voor het programmeren die ik ga noemen, is misschien wel de meest aantrekkelijke: de Arduino IDE!

Arduino 1 2

Arduino IDE met code voor de Micro:Bit

Wil je de Arduino IDE gebruiken, dan kun je het beste naar de website van Adafruit gaan. Daar staat op: https://learn.adafruit.com/use-micro-bit-with-arduino een uitgebreide handleiding waarin gedetailleerd wordt beschreven hoe het allemaal moet. Zelf vond ik het het gemakkelijkste om de pdf te downloaden: die kun je dan aan de zijkant op de monitor openhouden, terwijl je met het installeren bezig bent.

Het gebruik van de Arduino IDE heeft het voordeel dat er heel veel code beschikbaar is. Wel is het oppassen met het gebruik van bibliotheken. Soms werkt een bibliotheek die op een Arduino werkt niet op de Micro:bit, kwestie van uitproberen.

Oja: voor seriële communicatie gebruikmaken van de seriële pennen van de Micro:biten die via een TTL-naar-usb-converteerbordje naar de computer voeren.

Nog een voordeel van het Arduino IDE is dat bij het installeren van de software voor de bordjes ook meteen de delen voor de Calliope en de Sino:Bit worden meegenomen, mocht je die wilde plannen hebben.

    

Online informatie Micro:bit

         
   


Kitronik Inventors Kit: leuke projecten
Speciale aandacht wil ik besteden aan de website van Kitronik en dan speciaal de pagina van de Inventors Kit: https://www.kitronik.co.uk/5603-inventors-kit-for-the-bbc-microbit.html

De Inventors Kit bevat een grote hoeveelheid onderdelen om met de Micro:bit leuke projecten te maken, maar de belangrijkste delen vind ik zelf het basisbord en het instructieboek.

basisbord 1

Het basisbord met de daarop gemonteerde Micro:Bit, de speciale connector die alle extra uitgangen op standaard headers beschikbaar maakt en een breadboard maakt het experimenteren tot een pleziertje.

Het boekje is hierbij bijna onmisbaar. Toen ik het voor het eerst in handen had, moest ik onmiddellijk denken aan de Sparkfun Inventors Guide voor de Arduino. Laten we zeggen dat zij daar waarschijnlijk door zijn geïnspireerd. Het boekje bevat 10 projecten die je met de onderdelen van de Inventors Kit kunt maken en besturen. Dat loopt uiteen van het laten knipperen van een LED tot het aansturen, via een transistor, van een motor of een ventilator. Compleet met uitleg, schema en broncode. Op de website van Kitronik zijn nog meer projecten te vinden. Op de achterkant van het boekje staat een, onmisbare, ‘pin-out’ van de Micro:bit, een echte aanrader.

Ik ben zelf aan de slag gegaan met de Micro:Bit. Niet alleen voor dit stuk, maar ook omdat ik het een interessant stukje techniek vind. Er zit in de Kitronik-kit onder andere een motor, een transistor en een vierbladige propeller en het leek mij leuk om eens te kijken wat we daar mee kunnen.

We beginnen met het opbouwen van de schakeling die nodig is voor het geheel.

meccano 1 2

Ik heb hier de motor met de ventilator voor het gemak op een Meccano-constructie gemonteerd.
Ja, ik heb de Meccano van vroeger nog steeds in gebruik, heel handig voor allerlei experimenten.
Dan gaan de onderdelen zoals motoren tenminste niet over het bureau wandelen. Voor de eventuele nabouwers een foto van bovenaf.

Meccano 2 2

In het schema van de schakeling valt mij iets op:

schemaschak 1 2

Ik heb geleerd dat over een motor altijd een diode moet worden aangebracht om bij het in- en uitschakelen van de motor een stroomterugslag te kunnen opvangen. In dit schema is daar geen sprake van. In het schema staat een standaard NPN-transistor. En bij nader onderzoek op de website van Kitronik blijkt het inderdaad om een BC337 NPN-transistor te gaan. Het lijkt mij verstandig om dan toch maar een extra 1N4001- of vergelijkbare diode in de schakeling op te nemen. De schakeling komt er dan zo uit te zien:

schakzo 1 3

De min van de diode, meestal aangegeven door een streep, moet dus aan de plus van de motor!
Zonder diode werkt het wel, maar als er een keer een terugslagstroom ontstaat, gaat de transistor onherroepelijk kapot. Op het breadboard ziet het er zo uit:

diodebread 2Het is een beetje dringen door die extra diode, maar het gaat net. Voor het aansturen van de motor moeten we de Micro:bit vertellen wat hij moet doen door hem te programmeren. Je kunt daarvoor de code gebruiken die in het bij de kit behorende boekje staat.

 

 

 

 

 

harenstijl 1 2
Als je die code in de editor laadt, krijg je dit te zien. En dat zou dan makkelijk moeten zijn, maar de weinige haren die ik nog op mijn hoofd heb, gaan hiervan steil overeind staan.

 

 

 


 

 

 

 

 

 

 

 

Java 5 2




Dus schakel ik maar snel over naar Java:
Je mag zelf concluderen wat er gemakkelijker te begrijpen is.

 

 

 

 

 

 



Het duurt met deze code wel behoorlijk lang voor je veranderingen in het gedrag van de motor ziet, daarom heb ik een paar veranderingen aangebracht:

let Duty = 0
Duty = 0
basic.forever(function () {
    while (Duty < 256) {
        pins.analogWritePin(AnalogPin.P0, Duty)
        Duty = Duty + 1
        basic.pause(10)
    }
    while (Duty > 0) {
        pins.analogWritePin(AnalogPin.P0, Duty)
        Duty = Duty - 1
        basic.pause(10)
    }
})

Je kunt nu natuurlijk zelf gaan spelen met de waarden om verschillende effecten te krijgen. 
Maak Duty niet groter dan 1023, dat is namelijk de maximale waarde die de uitgangspin kan verwerken. Meer informatie en code kun je vinden op mijn website http://www.swtobservatory.nl .
Daar kun je ook terecht voor aanvullingen en voor eventuele opmerkingen en vragen, veel experimenteerplezier!