Blog
Robot Maqueen Micro:bit : Suivi de Ligne Autonome
🤖 Robot Micro:bit 2WD : Suivi de Ligne Autonome avec Capteurs Infrarouges
Programmez un robot suiveur de ligne autonome avec le kit robot micro:bit 2WD ! Grâce aux capteurs infrarouges intégrés et à la programmation en MakeCode/JavaScript, votre robot suivra un parcours tracé au sol de manière autonome. Ce tutoriel de didactico.tn est parfait pour initier les jeunes tunisiens à la robotique et à la programmation.
🧰 Matériel Nécessaire
Kit Robot Micro:bit 2WD
Châssis robot avec moteurs, capteurs IR de ligne, LEDs RGB, buzzer et support micro:bit
Kit Senior Micro:bit Renardo
Carte micro:bit V2 avec accessoires et projets pour débuter la programmation
Pour le parcours
- Ruban adhésif noir (2-3 cm de large)
- Surface blanche (carton ou papier blanc)
- 3 piles AAA (pour le robot)
- Câble USB Micro-B (pour programmer)
📖 Principe du Suivi de Ligne par Capteurs IR
Le robot utilise 2 capteurs infrarouges (IR) placés sous le châssis, de part et d’autre de la ligne noire. Chaque capteur émet de la lumière IR et mesure la quantité réfléchie. Une surface blanche réfléchit beaucoup (valeur 0 = blanc), une surface noire absorbe la lumière (valeur 1 = noir).
CAS 1 : Les deux capteurs sur blanc → AVANCER TOUT DROIT ┌─────────────────────────────────────────────┐ │ ○ ← capteur gauche (blanc = 0) │ │ ═══════════ (ligne noire) │ │ ○ ← capteur droit (blanc = 0) │ │ │ │ Moteur G: ████ Moteur D: ████ │ │ (avancer) (avancer) │ └─────────────────────────────────────────────┘ CAS 2 : Capteur gauche sur noir → TOURNER À GAUCHE ┌─────────────────────────────────────────────┐ │ ● ← capteur gauche (noir = 1) │ │ ═══════════ │ │ ○ ← capteur droit (blanc = 0) │ │ │ │ Moteur G: ░░░░ Moteur D: ████ │ │ (stop) (avancer) → tourne gauche│ └─────────────────────────────────────────────┘ CAS 3 : Capteur droit sur noir → TOURNER À DROITE ┌─────────────────────────────────────────────┐ │ ○ ← capteur gauche (blanc = 0) │ │ ═══════════ │ │ ● ← capteur droit (noir = 1) │ │ │ │ Moteur G: ████ Moteur D: ░░░░ │ │ (avancer) (stop) → tourne droite │ └─────────────────────────────────────────────┘ CAS 4 : Les deux sur noir → STOP ou DEMI-TOUR ┌─────────────────────────────────────────────┐ │ ● ← capteur gauche (noir = 1) │ │ ══════════════════════ │ │ ● ← capteur droit (noir = 1) │ │ │ │ Moteur G: ░░░░ Moteur D: ░░░░ │ │ (stop) (stop) → arrêt │ └─────────────────────────────────────────────┘
🔌 Schéma du Robot
AVANT (capteurs IR)
┌─────────────────────────┐
│ ◉ IR-G ◉ IR-D │ ← Capteurs de ligne
│ │
│ ┌──────────────────┐ │
│ │ micro:bit V2 │ │ ← Carte micro:bit
│ │ ┌──────────┐ │ │ (insérée dans le connecteur)
│ │ │ 5×5 LED │ │ │
│ │ └──────────┘ │ │
│ │ [A] [B] │ │ ← Boutons A et B
│ └──────────────────┘ │
│ │
┌────┤ 🔴 LED-G LED-D 🔴 ├────┐
│ MG │ │ MD │ ← Moteurs G et D
│ │ 🔋 Piles AAA ×3 │ │
└────┤ ├────┘
│ ◎ Roue folle (bille) │
└─────────────────────────┘
ARRIÈRE
Broches utilisées par le robot :
- P0 : Buzzer
- P1 : Capteur IR gauche (0=blanc, 1=noir)
- P2 : Capteur IR droit (0=blanc, 1=noir)
- P8 : LED RGB (NeoPixel)
- P12 : Moteur gauche direction
- P13 : Moteur gauche vitesse (PWM)
- P14 : Moteur droit direction
- P15 : Moteur droit vitesse (PWM)
💻 Code MakeCode JavaScript — Suivi de Ligne
Ouvrir makecode.microbit.org, cliquer sur “Nouveau projet”, puis basculer en mode JavaScript et coller ce code. Ajouter l’extension maqueen via “Extensions” si vous utilisez le robot DFRobot Maqueen.
// ============================================= // Robot Micro:bit 2WD — Suivi de Ligne // Programmation en JavaScript (MakeCode) // Tutoriel didactico.tn // ============================================= // --- Configuration de la vitesse --- let vitesseBase = 120 // Vitesse normale (0-255) let vitesseTournage = 80 // Vitesse en virage let robotActif = false // État du robot // --- Fonctions moteur (adaptées au kit 2WD) --- function avancer(vitesse: number) { // Les deux moteurs en avant pins.analogWritePin(AnalogPin.P13, vitesse) pins.digitalWritePin(DigitalPin.P12, 0) pins.analogWritePin(AnalogPin.P15, vitesse) pins.digitalWritePin(DigitalPin.P14, 0) function tournerGauche(vitesse: number) { // Moteur gauche stop, moteur droit avance pins.analogWritePin(AnalogPin.P13, 0) pins.digitalWritePin(DigitalPin.P12, 0) pins.analogWritePin(AnalogPin.P15, vitesse) pins.digitalWritePin(DigitalPin.P14, 0) function tournerDroite(vitesse: number) { // Moteur gauche avance, moteur droit stop pins.analogWritePin(AnalogPin.P13, vitesse) pins.digitalWritePin(DigitalPin.P12, 0) pins.analogWritePin(AnalogPin.P15, 0) pins.digitalWritePin(DigitalPin.P14, 0) function arreter() { // Tout arrêter pins.analogWritePin(AnalogPin.P13, 0) pins.analogWritePin(AnalogPin.P15, 0) // --- Lire les capteurs IR de ligne --- function lireCapteurGauche(): number { // P1 : 0 = surface blanche, 1 = ligne noire return pins.digitalReadPin(DigitalPin.P1) function lireCapteurDroit(): number { // P2 : 0 = surface blanche, 1 = ligne noire return pins.digitalReadPin(DigitalPin.P2) // --- Bouton A : Démarrer le robot --- input.onButtonPressed(Button.A, function () { robotActif = true basic.showIcon(IconNames.Happy) // Smiley content music.playTone(523, music.beat(BeatFraction.Half)) basic.pause(1000) basic.showArrow(ArrowNames.North) // Flèche vers l'avant }) // --- Bouton B : Arrêter le robot --- input.onButtonPressed(Button.B, function () { robotActif = false arreter() basic.showIcon(IconNames.Sad) // Smiley triste music.playTone(262, music.beat(BeatFraction.Half)) }) // --- Démarrage --- basic.showString("DID") // Afficher "DID" pour Didactico basic.showIcon(IconNames.Heart) basic.pause(500) basic.showString("A=GO") // Instructions // --- Boucle principale --- basic.forever(function () { if (robotActif) { let gauche = lireCapteurGauche() let droite = lireCapteurDroit() if (gauche == 0 && droite == 0) { // Deux capteurs sur blanc → avancer tout droit avancer(vitesseBase) basic.showArrow(ArrowNames.North) else if (gauche == 1 && droite == 0) { // Capteur gauche sur noir → tourner à gauche tournerGauche(vitesseTournage) basic.showArrow(ArrowNames.West) else if (gauche == 0 && droite == 1) { // Capteur droit sur noir → tourner à droite tournerDroite(vitesseTournage) basic.showArrow(ArrowNames.East) else { // Deux capteurs sur noir → arrêt (fin de ligne ou croisement) arreter() basic.showIcon(IconNames.Square) basic.pause(200) basic.pause(10) // Petite pause pour stabilité })
📲 Comment Programmer le Micro:bit
- Aller sur makecode.microbit.org
- Créer un Nouveau Projet
- Basculer en mode JavaScript (en haut)
- Coller le code ci-dessus
- Cliquer sur Télécharger
- Copier le fichier
.hexsur le micro:bit (lecteur USB) - Insérer le micro:bit dans le robot
- Appuyer sur Bouton A pour démarrer !
🛤️ Créer le Parcours
┌────────────────────────────────────────────┐ │ │ │ DÉPART │ │ ↓ │ │ ║ │ │ ║══════════╗ │ │ ║ │ │ ║ │ │ ╔══════════╝ │ │ ║ │ │ ║ │ │ ╚══════════════════════╗ │ │ ║ │ │ ║ │ │ ╔══════════════════════╝ │ │ ║ │ │ ↓ │ │ ARRIVÉE │ │ │ │ Conseils : │ │ • Ruban noir : 2-3 cm de large │ │ • Fond : papier blanc ou carton blanc │ │ • Virages : rayon ≥ 10 cm │ │ • Éviter les croisements au début │ │ • Surface plane et bien éclairée │ └────────────────────────────────────────────┘
📋 Résultat Attendu
1. Au démarrage :
┌─────────┐
│ D I D │ → Affiche "DID" puis cœur
└─────────┘
2. Appui bouton A :
┌─────────┐
│ ☺ → ↑ │ → Smiley puis flèche (robot démarre)
└─────────┘
3. En mouvement :
↑ = avance tout droit
← = tourne à gauche (capteur G sur noir)
→ = tourne à droite (capteur D sur noir)
■ = arrêté (deux capteurs sur noir)
4. Appui bouton B :
┌─────────┐
│ ☹ │ → Robot s'arrête, smiley triste
└─────────┘
🔧 Dépannage
| Problème | Cause probable | Solution |
|---|---|---|
| Robot ne bouge pas | Piles faibles ou interrupteur éteint | Vérifier les piles AAA (3×1.5V = 4.5V). Activer l’interrupteur ON du robot. Appuyer sur bouton A |
| Robot quitte la ligne | Vitesse trop élevée ou virages trop serrés | Réduire vitesseBase à 80-100. Augmenter le rayon des virages. Utiliser un ruban plus large (3 cm) |
| Capteurs ne détectent pas la ligne | Hauteur capteurs trop grande ou surface brillante | Les capteurs IR doivent être à 5-10mm du sol. Utiliser du ruban adhésif noir mat (pas brillant) |
| Robot tourne dans le mauvais sens | Moteurs inversés ou capteurs inversés | Inverser les fonctions tournerGauche et tournerDroite dans le code, ou inverser P1/P2 pour les capteurs |
| Oscillations permanentes | Réaction trop rapide ou vitesse de tournage trop haute | Réduire vitesseTournage à 60. Ajouter un petit basic.pause(20) dans la boucle. Élargir l’écart entre capteurs |
🚀 Pour Aller Plus Loin
1. Robot Éviteur d’Obstacles
Ajoutez un capteur ultrason HC-SR04 pour que le robot évite les obstacles sur son chemin.
2. Robot Télécommandé Bluetooth
Contrôlez le robot depuis votre téléphone via Bluetooth avec l’app micro:bit.
3. Compétition de Robots
Organisez une course de suivi de ligne entre plusieurs robots ! Optimisez la vitesse et les algorithmes PID.
❓ Questions Fréquentes
Où acheter un kit robot micro:bit en Tunisie ?
Le kit robot micro:bit 2WD et le kit senior Renardo sont disponibles sur didactico.tn avec livraison dans toute la Tunisie. Ces kits incluent le châssis, les moteurs, les capteurs IR et le support micro:bit.
Le micro:bit est-il adapté pour enseigner la robotique aux enfants en Tunisie ?
Absolument ! Le micro:bit est spécialement conçu pour l’éducation. Avec MakeCode, les enfants peuvent programmer en blocs visuels (comme Scratch) avant de passer au JavaScript. De nombreuses écoles et clubs de robotique en Tunisie utilisent déjà le micro:bit pour initier les jeunes dès 8 ans.
Quel robot suiveur de ligne choisir pour une compétition robotique en Tunisie ?
Pour les compétitions de robotique tunisiennes (comme les olympiades de robotique), le kit robot micro:bit 2WD de didactico.tn est un excellent choix. Il est facile à programmer, les capteurs IR sont précis et vous pouvez implémenter un algorithme PID pour des performances optimales en compétition.