mBot-tutorial: Programmeren in mBlock

In een eerdere workshop bouwden we ons eigen Arduino-robotje, de mBot. Die lieten we standaard acties ondernemen via afstandsbediening en app. Nu is het tijd om zelf te programmeren met mBlock.

Lees eerst: mBot-tutorial: Bouw je eigen robot met Arduino

mBlock is een grafische programmeeromgeving gebaseerd op Scratch 2.0. Je programmeert er je robot mee door blokjes met opdrachten aan elkaar te klikken. Download eerst de nieuwste versie van mBlock. Voer het installatieprogramma uit en kies daarin je taal (Nederlands is beschikbaar). mBlock installeert onder andere Adobe AIR en de Arduino IDE. 

De eerste keer dat je mBlock start, krijg je waarschijnlijk een melding van Windows Firewall. Klik op Toegang toestaan. Klik daarna op het kruisje om het splash screen van mBlock af te sluiten. Ga dan naar het menu Language en vink Nederlands aan om de taal van de interface te veranderen.

Overigens bestaat er ook een app-versie van mBlock, Makeblock.

mBot verbinden met pc

Om de mBot te programmeren, verbind je die eerst met je pc. Dat is mogelijk via Bluetooth, de draadloze seriële module (als je mBot ook zo’n module heeft) of usb. We tonen hoe dat gaat met usb. Gebruik je overigens usb, dan heb je de kabel alleen nodig tijdens het uploaden van je programma naar de mBot. Daarna kan de kabel er gewoon af en is de robot weer vrij. 

Je mBot verbinden kan o.a. via Bluetooth en usb

Installeer eerst de usb-drivers. Dat doe je in het menu Verbinden / Arduino Stuurprogramma Installeren. Kijk daarna in het menu Boards na of mBot (mCore) staat aangevinkt. Sluit de usb b-connector aan de zijkant van de mCore op je robot aan. De a-connector steek je in je computer. Schakel je mBot in. Wacht even tot Windows de driver heeft geladen. Open dan in het menu Verbinden het onderdeel Seriële Poort en kies de poort die in het submenu staat, zoals COM3. Als alles goed gaat, piept je mBot nu.

De verbinding is er dus, maar nu moet mBlock nog met je pc kunnen communiceren. Daarvoor installeren we het communicatieprotocol op de mBot. Dat doen we in het menu Verbinden / Firmware Upgraden. Als het gelukt is, krijg je de melding Upload gelukt en geeft je mBot twee korte piepjes.

mBlock, de basics

Nu zijn we klaar voor ons eigen programma. We houden dit eerste programma simpel, gewoon om te tonen hoe je je mBot programmeert. Klik in het midden van het hoofdvenster van mBlock op Robots en sleep het blokje mBot Programma naar rechts, waar je programma komt te staan. Sleep ook het blokje Laat een C4 horen in Halve maat naar rechts en klik dat in het blokje mBot Programma. Verander de C4 in F4 en de Halve maat in Hele maat. Dubbelklik op het blokje dat je daar hebt geplaatst om de opdracht op je mBot uit te voeren. Je robot speelt de toon af.

Je hebt je eerste mBot-programma nu al uitgevoerd, maar de robot hangt nog altijd van je pc af. Daar gaan we iets aan doen door het programma naar het interne geheugen van de mBot te uploaden. Klik daarvoor eerst op het menu Bewerken / Arduino mode. Rechts krijg je nu de Arduino-code te zien die overeenkomt met je mBlock-programma. Klik bovenaan rechts op Upload naar Arduino. Als er Upload gelukt staat, staat het programma op je mBot. Om dat te controleren, verwijder je de usb-kabel, schakel je de mBot uit en weer in. Hij begroet dan de wereld door de gevraagde toon af te spelen.

© PXimport

mBot scripts

Ons ‘hello world’ programma bevat eigenlijk al veel wat in elk mBot-programma zit. Je begint altijd met een blok mBot Programma. Dit geeft de start van je programma aan. De bult onderaan het blokje klik je dan in een uitsparing van een volgend blokje. Elk blokje met een bult klik je terug in een uitsparing van het volgende blokje. Zo’n blokje met uitsparingen is een opdracht. Zo zijn er opdrachten om de robot te verplaatsen, om de snelheid van de motoren te wijzigen, om de leds in een bepaalde kleur te laten oplichten enzovoort.

Als je in de scripts van categorie Robots kijkt, zie je ook blokjes die geen bult en uitsparing hebben, maar een ovale vorm hebben. De lijnvolgmodule en ultrasone sensor, maar ook optionele modules zoals een temperatuur- of bewegingssensor zijn voorbeelden hiervan. Zo’n ovaal blokje geeft altijd een bepaald getal terug. Dit soort blokjes klik je op de plaats van een getal (in een ovaal) in een ander blokje.

© PXimport

Een laatste soort blokjes zijn zeshoekig. Zo’n blokje voert een test uit, bijvoorbeeld of de knop van de robot is ingedrukt. Zo’n testblokje klik je normaal in een blokje zoals als … dan …, wacht tot … en herhaal tot … …. Die laatste blokjes vind je in de scripts van categorie Bediening. Kijk tot slot ook eens in de categorie Operatoren. Daar vind je onder andere zeshoekige blokjes … en … of … of … om tests te combineren, of een ovaal blokje kies willekeurig van … tot … om een willekeurig getal te kiezen.

Lees verder op de volgende pagina om je mBot rond te laten rijden aan de hand van je eigen commando's.

Om de kracht van mBlock te tonen, creëren we een programma dat lijnen volgt. Daarvoor eerst even wat uitleg over de algemene aanpak in dit programma. De lijnsensor geeft drie mogelijke waardes terug: 0 als de robot midden op een lijn staat, 1 als de robot zich rechts van een lijn bevindt en 2 als de robot zich links van een lijn bevindt.

Wat de robot moet doen om de lijn te volgen, is dus eenvoudig. Als de robot op de lijn staat, blijft hij rechtdoor rijden. Als de robot zich rechts van de lijn bevindt, stuurt hij naar links. En als de robot zich links van de lijn bevindt, stuurt hij naar rechts. Dat links of rechts sturen doen we door beide motoren met een andere snelheid te bewegen.

Hoe zetten we deze redenering nu om in mBlock? Na het verplichte blokje mBot Programma gaan we eerst variabelen definiëren voor drie snelheden: traag, normaal en snel. Daardoor hoef je later niet op verschillende plaatsen in je programma de getallen te veranderen als je je robot sneller of trager wilt laten draaien.

Klik daarom op de categorie Data&Blokken en dan op Maak een Variabele. Geef als naam voor je variabele normaal en herhaal dit voor snel en traag. Voeg dan drie blokjes wijzig … naar … onder mBot Programma. Wijzig de vakjes in de blokjes zodat je achtereenvolgens de waarde van traag op 50 zet, van normaal op 150 en van snel op 250.

Lijnvolg module

Sleep dan uit de categorie Bediening een blokje herhaal voor altijd en klik daarin een blokje als … dan … anders. Voeg in de uitsparing van anders nog eens een blokje als … dan … anders en in de uitsparing van anders van die laatste een blokje als … dan. Je hebt nu drie tests waarin er als aan een bepaalde voorwaarde is voldaan, bepaalde opdrachten worden uitgevoerd. 

Sleep uit de categorie Operatoren het blokje … = … achter de als, drie keer. Achter het gelijkheidsteken vul je de eerste keer 0 in, de tweede keer 1 en de derde keer 2. Vóór het gelijkheidsteken voeg je telkens het ovaal blokje Lijnvolg module op Poort 2 uit de categorie Robots toe.

We hebben nu de drie posities ten opzichte van de lijn gedefinieerd. Het enige wat er nu nog nodig is, zijn de motoracties in die drie situaties. Voeg daarom achter elke dan twee blokjes wijzig motor … naar snelheid … toe. Zorg dat het telkens om motor M1 en M2 gaat. Wat we nu nog moeten invullen zijn de snelheden van de motoren. 

© PXimport

Snelheid van mBot aanpassen

Ga daarvoor naar de categorie Data&Blokken en sleep het ovaal blokje van de juiste snelheid op de juiste plaats: in het eerste geval draaien beide motoren normaal, in het tweede geval de ene traag en de andere snel en in het derde geval andersom. Upload het programma naar je mBot en kijk hoe hij secuur de lijnen volgt.

Dit is je eerste echte mBot-programma, dus we raden je aan om dit op te slaan. Dat doe je in het menu Bestand / Project opslaan. Het programma staat na het uploaden uiteraard op je mBot, maar als je iets wilt veranderen en je hebt het programma niet op je pc opgeslagen, moet je helemaal opnieuw beginnen. 

mBot stoppen

Toe nu toe volgt onze robot gewoon autonoom de lijn en hebben we er voor de rest geen vat op. Gelukkig is er ook interactie mogelijk. We gaan ervoor zorgen dat de robot stopt als we op de knop vooraan op de mCore klikken. Vervang daarvoor het blokje herhaal voor altijd door herhaal tot en voeg achter tot het blokje knop is ingedrukt uit de categorie Robots toe. Vergeet ook niet onderaan het programma beide motoren stil te zetten met blokjes wijzig motor M1 naar snelheid 0 en wijzig motor M2 naar snelheid 0.

Maar uiteraard is dat nog niet zo handig. We moeten immers een piepklein knopje zien in te drukken op een robotje dat de kamer rond sjeest. Dat kan toch gemakkelijker? Inderdaad, met het blokje IR knop … ingedrukt, waardoor we onze robot laten reageren op de infrarood-afstandsbediening. Daarvoor hergebruiken we een groot deel van onze vorige code. We moeten alleen wat blokjes vervangen en toevoegen.

IR programmeren

In de uitsparing van herhaal voor altijd voeg je wacht tot … toe, daarna herhaal tot … en daarna zet je de snelheid van beide motoren op 0. In de uitsparing van herhaal tot komt het hele als-blok om de lijn te volgen. In de zeshoekige gaatjes bij wacht tot … en herhaal tot … voeg je telkens IR knop … ingedrukt, de eerste keer met het pijltje naar boven en de tweede keer met het pijltje naar beneden. Op die manier start en stop je met de afstandsbediening het volgen van de lijn door je robot.

© PXimport

In deze workshop hebben we het standaard lijnvolgprogramma uitgebreid. Nu is het aan jou om te experimenteren. Probeer bijvoorbeeld eens het standaard handmatige programma na te maken in mBlock en te verbeteren. Of, iets pittiger, de obstakels vermijdende modus. Daarvoor zet je het ovaal blokje Ultrasonische sensor op … meet afstand in. En wie zichzelf echt eens aan een uitdaging wil zetten, kan het lijnvolgprogramma combineren met het vermijden van obstakels: laat je robot een lijn volgen, maar tegelijk ook de lijn verlaten als er een obstakel in zicht is.

Meer informatie

Op deze site vind je meer informatie over de mBot en hoe je alle componenten programmeert. Je vindt er ook wat voorbeeldprogramma’s. De beste manier om je eigen programma’s te schrijven is om op basis van die voorbeeldprogramma’s te starten en die dan aan te passen. En voor je het weet, voert je mBot programma’s uit die je je nooit had kunnen voorstellen.

Deel dit artikel
Voeg toe aan favorieten