Aller au contenu

Le Robot Maqueen

robot

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

maqueen.py

Après avoir copié le fichier maqueen.py dans le dossier mu_code de l'ordinateur, cliquer sur le bouton 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 de avance() ou setVitesse() qui sera utilisée.

Exemple

mq.avance(20)
  • recule() : fait marche arrière en utilisant la valeur de la vitesse indiquée dans avance.
    Si on veut indiquer que la vitesse de recul est par exemple 20, il faut écrire l'instruction mq.setVitesse(20) avant mq.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 par setVitesse() ou avance()

Exemple

vitesse_actuelle = mq.getVitesse()
  • setVitesse() : change la valeur de la vitesse utilisée par avance, recule, moteurDroit et moteurGauche

Exemple

mq.setVitesse(40)
  • distance() : renvoie la distance (en cm) lue par le capteur ultrason

Exemple

dist = mq.distance()
  • son_r2d2() et son_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

  1. Dans le logiciel Mu, cliquer sur le bouton 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 fichier maqueen.py (clic droit sur le lien puis enregistrer la cible du lien sous...) puis le copier dans le dossier mu_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.
  2. 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()
    

  3. 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

  4. recommencer en positionnant le robot par terre.
  5. Faire quelques essais en modifiant le programme.
  6. 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

led

La led gauche est sur la broche 8 et la droite est sur la broche 12

Exercice 2

  1. 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)  
    
  2. Mettre la carte sur le robot et mettre le contact

Capteurs de ligne

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

  1. 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)   
    
  2. Mettre la carte sur le robot et mettre le contact

Détecteur d'obstacle

infra

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

  1. 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) 
    
  2. Mettre la carte sur le robot et mettre le contact

Les neopixels

Les 4 neopixels sont sur la broche 15.

Exercice 5

  1. 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
    
  2. Mettre la carte sur le robot et mettre le contact