Le Robot Maqueen
Le robot Maqueen micro:bit est un robot contrôlé par la carte micro:bit. Il est petit, maniable et facile d'utilisation. Il possède beaucoup de fonctionnalités :
- capteurs de suivi de ligne
- LEDs
- 4 LED RVB neopixel pour éclairage d'ambiance
- capteur de distance ultrason
- buzzer pour effets sonores
- moteurs à engrenage contrôlables séparément par i2c
- alimentation par pack de 3 piles AAA
- capteur infrarouge permettant au robot d'être télécommandé
A l'origine, ce robot se programme par blocs. Oliver Lecluse a développé un module python permettant de le programmer facilement sous Python.
Pour utiliser ce module, il faut copier le fichier maqueen.py
sur la carte, ce qui se fait facilement avec l'éditeur Mu.
Info
Le dossier mu_code
est crée lors de l'installation de Mu sur votre ordinateur. Pour trouver ce dossier :
- taper C: dans la barre d'adresse de l'explorateur de fichier.
- cliquer sur Utilisateurs ou Users
- cliquer sur votre nom d'utilisateur
- cliquer sur mu_code
A télécharger
Faire un clic droit sur le fichier et choisir enregistrer la cible du lien vers
Après avoir copié le fichier maqueen.py
dans le dossier mu_code
de l'ordinateur, cliquer sur le bouton :
vous devriez le voir apparaître coté ordinateur; il suffit ensuite de le glisser sur la carte micro:bit.
Info
Le dossier mu_code
est crée lors de l'installation de Mu sur votre ordinateur. Pour trouver ce dossier :
- taper C: dans la barre d'adresse de l'explorateur de fichier.
- cliquer sur Utilisateurs ou Users
- cliquer sur votre nom d'utilisateur
- cliquer sur mu_code
Méthodes fournies par le module
Il faut pour utiliser ces méthodes, définir une variable contenant l'objet Maqueen
de la façon suivante :
from maqueen import Maqueen
mq = Maqueen()
avance(vitesse)
: avance en ligne droite ;vitesse
est un nombre entre 0 et 100. Ce paramètre est optionnel. S'il est non spécifié, c'est la dernière vitesse spécifiée lors deavance()
ousetVitesse()
qui sera utilisée.
Exemple
mq.avance(20)
recule()
: fait marche arrière en utilisant la valeur de la vitesse indiquée dansavance
.
Si on veut indiquer que la vitesse de recul est par exemple 20, il faut écrire l'instructionmq.setVitesse(20)
avantmq.recule()
Exemple
mq.recule()
stop()
: stoppe les moteurs
Exemple
mq.stop()
moteurDroit(vitesse)
: fait tourner la roue droite ; pour faire tourner la roue dans l'autre sens, on indique une vitesse négative.
Exemple
mq.moteurDroit(40)
moteurGauche(vitesse)
: fait tourner la roue gauche ; pour faire tourner la roue dans l'autre sens, on indique une vitesse négative.
Exemple
mq.moteurGauche(20)
getVitesse()
: renvoie la vitesse paramétrée parsetVitesse()
ouavance()
Exemple
vitesse_actuelle = mq.getVitesse()
setVitesse()
: change la valeur de la vitesse utilisée paravance
,recule
,moteurDroit
etmoteurGauche
Exemple
mq.setVitesse(40)
distance()
: renvoie la distance (en cm) lue par le capteur ultrason
Exemple
dist = mq.distance()
son_r2d2()
etson_bip()
: effets sonores
Exemple
mq.son_r2d2()
mq.son_bip()
Remarque
Si vitesse
n'est pas renseigné alors les fonctions utilisent celle paramétrée par setVitesse()
ou avance()
Exercice 1
- Dans le logiciel Mu, cliquer sur le bouton pour vérifier si le fichier
maqueen.py
est présent sur la carte.
S'il ne l'est pas, télécharger le fichiermaqueen.py
(clic droit sur le lien puis enregistrer la cible du lien sous...) puis le copier dans le dossiermu_code
de l'ordinateur (faire une recherche dans un explorateur de fichier). De retour dans Mu, vous devriez le voir apparaître coté ordinateur : il suffit ensuite de le glisser sur la carte micro:bit. -
Prévoir l'effet du programme ci-dessous puis le flasher sur la carte.
from microbit import* from maqueen import Maqueen mq=Maqueen() while True: if button_a.was_pressed(): mq.avance(20) sleep(5000) mq.stop() sleep(1000) mq.moteurDroit(0) mq.moteurGauche(-20) sleep(5000) mq.avance(20) sleep(1000) mq.stop()
-
Mettre la carte sur le robot, le tenir hors du sol, mettre le contact puis appuyer sur le bouton a. Vérifier vos prédictions
- recommencer en positionnant le robot par terre.
- Faire quelques essais en modifiant le programme.
- En faisant des essais, remplir le tableau donnant la trajectoire du robot en fonction des vitesses des moteurs droit et gauche. On note vD la vitesse du moteur droit et vG celle du moteur gauche
Configuration | Trajectoire |
---|---|
vD = vG avec vd > 0 | Trajectoire rectiligne. Marche avant |
vD = vG avec vd < 0 | |
vD = -vG | |
vD < vG | |
vD > vG |
Accès aux autres fonctions du robot
Sur le circuit imprimé du robot figurent les adresses des broches pour les LEDs et capteurs de ligne.
Leds rouges
La led gauche est sur la broche 8 et la droite est sur la broche 12
Exercice 2
- Prévoir l'effet du programme ci-dessous puis le flasher sur la carte.
from microbit import * while True: pin8.write_digital(1) # allume sleep(500) pin12.write_digital(1) sleep(500) pin8.write_digital(0) # éteint sleep(500) pin12.write_digital(0) sleep(500)
- Mettre la carte sur le robot et mettre le contact
Capteurs de ligne
Le capteur gauche est sur la broche 13 et le droit sur le capteur 14
Le capteur optique infrarouge est constitué :
- d'une LED infrarouge
- d'un photo-transistor Le capteur envoie un signal haut lorsqu'il détecte le blanc et un signal bas quand il détecte le noir.
Exercice 3
- Prévoir l'effet du programme ci-dessous puis le flasher sur la carte.
from microbit import * while True: # Lecture état capteur valeur_gauche = pin13.read_digital() if valeur_gauche == 0: pin8.write_digital(0) else: pin8.write_digital(1)
- Mettre la carte sur le robot et mettre le contact
Détecteur d'obstacle
Le capteur infrarouge est sur la broche 16.
La détection des obstacles utilise un capteur à ultrasons.
Le module ultrason est constitué :
- d'un émetteur d'ultrasons
- d'un récepteur d'ultrasons
La distance parcourue par les ultrasons est proportionnelle au temps du parcours. La vitesse du son est de 340 m/s.
La mesure s'effectue à l'aide de la méthode distance ()
Exercice 4
- Prévoir l'effet du programme ci-dessous puis le flasher sur la carte.
from microbit import * from maqueen import Maqueen mq = Maqueen() while True: dist_cm = mq.distance() if dist_cm < 10: display.show(Image.HAPPY) else: display.show(Image.SAD)
- Mettre la carte sur le robot et mettre le contact
Les neopixels
Les 4 neopixels sont sur la broche 15.
Exercice 5
- Prévoir l'effet du programme ci-dessous puis le flasher sur la carte.
from microbit import * from neopixel import NeoPixel np = NeoPixel(pin15, 4) for i in range(4): np[i] = (255, 0, 255) np.show() # np.clear() pour éteindre les neopixels
- Mettre la carte sur le robot et mettre le contact