Un robot suiveur de ligne est un type de robot conçu pour suivre une ligne tracée sur le sol. Cette ligne peut être noire, blanche, ou d'une autre couleur contrastante, et elle est généralement utilisée dans des environnements contrôlés, comme sur un parcours de compétition ou dans des applications industrielles.
Le principe de fonctionnement repose sur des capteurs qui détectent la ligne et permettent au robot d'ajuster ses mouvements pour la suivre. Les capteurs les plus courants sont des capteurs de réflexion infrarouge (IR), qui détectent la différence entre la couleur de la ligne (par exemple, noire) et la couleur du fond (par exemple, blanche ou claire). Lorsque le robot s'éloigne de la ligne, les capteurs envoient des informations au contrôleur qui ajuste la direction des roues pour recentrer le robot sur la ligne.
Les robots suiveurs de ligne sont souvent utilisés pour des démonstrations de robotique, des compétitions (comme la RoboCup ou les défis FIRST) et des applications industrielles où des robots doivent se déplacer le long de parcours prédéfinis.
Le fonctionnement d'un robot suiveur de ligne commandé par un Arduino UNO et basé sur les composants suivants :
2 capteurs KY-032 (capteurs de ligne)
Châssis à deux roues
Module L298N (contrôleur de moteur)
2 batteries de 9V (alimentation)
Voici les étapes de base que suit le robot pour suivre une ligne :
1- Détection de la ligne :
Les capteurs KY-032 envoient des valeurs logiques (0 ou 1) à l'Arduino en fonction de la présence ou non de la ligne sous eux.
Typiquement, l'un des capteurs est placé à gauche et l'autre à droite du robot pour détecter si le robot est centré sur la ligne.
2- Analyse par l'Arduino :
L'Arduino analyse les informations des capteurs et prend une décision en fonction de leur état. Voici quelques scénarios typiques :
Si les deux capteurs détectent la ligne (0,0) : Le robot continue tout droit.
Si seul le capteur gauche détecte la ligne (0,1) : Le robot tourne à droite.
Si seul le capteur droit détecte la ligne (1,0) : Le robot tourne à gauche.
Si aucun des capteurs ne détecte la ligne (1,1) : Le robot arrête ou cherche à se réaligner.
3- Commande des moteurs :
L'Arduino envoie les signaux appropriés au module L298N pour commander les moteurs en fonction des décisions précédentes.
En fonction des informations des capteurs, l'Arduino ajustera les moteurs pour faire tourner le robot à gauche, à droite ou continuer tout droit.
Arduino UNO
L'Arduino UNO est l'un des modèles les plus populaires de la plateforme Arduino. C'est une carte de développement à microcontrôleur qui permet de créer des projets électroniques interactifs. Elle est utilisée pour programmer et contrôler des capteurs, des moteurs, des LED, et autres composants électroniques.
L'Arduino UNO analyse les informations des capteurs et prend une décision en fonction de leur état pour commander le robot
Capteurs KY-032
Les capteurs KY-032 sont utilisés pour détecter la ligne tracée au sol. Chaque capteur dispose de deux LED infrarouges (une émettrice et une réceptrice) qui permettent de distinguer la couleur de la surface. En fonction de la couleur (ligne noire ou fond clair), le capteur va envoyer une information logique (0 ou 1) à l'Arduino.
0 indique que la ligne est sous le capteur (détecte la couleur sombre de la ligne).
1 indique que le capteur ne détecte pas la ligne (détecte la surface claire autour de la ligne).
Le robot utilise ces informations pour ajuster sa trajectoire.
2. Module L298N (Contrôleur de moteur)
Le module L298N est un contrôleur de moteur qui permet de contrôler la direction et la vitesse des moteurs du robot. Il est capable de piloter deux moteurs en même temps et permet de les faire tourner dans les deux sens (avant et arrière), selon les commandes envoyées par l'Arduino. Le module reçoit les signaux de commande (via des broches de contrôle de l'Arduino) et alimente les moteurs en courant.
3. Moteurs à courant continu et roues
Le robot est équipé de deux moteurs à courant continu (DC) qui sont montés sur un châssis à deux roues. Ces moteurs permettent au robot de se déplacer en avant, en arrière, ou de tourner, selon la commande reçue du microcontrôleur.
Si les deux moteurs tournent dans la même direction, le robot se déplace en ligne droite.
Si les moteurs tournent dans des directions opposées, le robot tourne sur place.
4. Alimentation (2 batteries de 9V)
Les deux batteries de 9V sont utilisées pour alimenter le robot. Une batterie alimente l'Arduino et les capteurs, tandis que l'autre est utilisée pour alimenter les moteurs via le module L298N.
Capteurs KY-032 :
Chaque capteur a deux broches de sortie (une pour la détection gauche et l'autre pour la détection droite de la ligne).
GND du capteur -> GND de l'Arduino.
VCC du capteur -> 3V3 de l'Arduino.
OUT du capteur gauche -> A0 de l'Arduino (capteur gauche).
OUT du capteur droit -> A1 de l'Arduino (capteur droit).
Module L298N :
IN1 (contrôle du moteur gauche) -> Pin 3 de l'Arduino (moteur gauche avant).
IN2 (contrôle du moteur gauche) -> Pin 4 de l'Arduino (moteur gauche arrière).
IN3 (contrôle du moteur droit) -> Pin 5 de l'Arduino (moteur droit avant).
IN4 (contrôle du moteur droit) -> Pin 6 de l'Arduino (moteur droit arrière).
ENA (pour contrôler la vitesse) -> Pin 2
ENB (pour contrôler la vitesse) -> Pin 7
GND du L298N -> GND de l'Arduino.
12V du L298N (alimentation de l'Arduino) -> Batterie 9V .
Moteurs DC :
Moteur gauche :
Moteur gauche A (sur L298N) -> Un des fils du moteur gauche.
Moteur gauche B (sur L298N) -> L'autre fil du moteur gauche.
Moteur droit :
Moteur droit A (sur L298N) -> Un des fils du moteur droit.
Moteur droit B (sur L298N) -> L'autre fil du moteur droit.
Voici le code Arduino pour contrôler le robot suiveur de ligne avec deux capteurs KY-032 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
// connect motor controller pins to Arduino digital pins // motor one int enA = 2; int in1 = 3; int in2 = 4; int in3 = 5; int in4 = 6; int enB = 7; int capteur_ligne1 = A0; int capteur_ligne2 = A1; int analogVal1,analogVal2; //analog readings void setup() { //Initialize Serial Monitor Serial.begin(9600); analogVal2 = analogRead(capteur_ligne2); // set all the motor control pins to outputs pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); analogWrite(enA, 255); pinMode(enB, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); analogWrite(enB, 255); } void loop() { analogVal1 = analogRead(capteur_ligne1); // lire la valeur envoyé par le capteur gauche KY-032 analogVal2 = analogRead(capteur_ligne2); // lire la valeur envoyé par le capteur droit KY-032 //Serial.println(analogVal1); //le moteur tourne if(analogVal1<100){ // Si le capteur gauche détecte que le robot sort de la ligne digitalWrite(in3, LOW); // arrêter la roue droite du robot digitalWrite(in4, LOW); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); delay(10); //stop le moteur digitalWrite(in1, LOW); digitalWrite(in2, LOW); delay(50); } if(analogVal2<100){ // Si le capteur droit détecte que le robot sort de la ligne digitalWrite(in1, LOW); // arrêter la roue gauche du robot digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(10); //stop le moteur digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(50); } if ((analogVal1>100)&&(analogVal2>100)) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(10); //stop le moteur digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(50); } } |
Explication du code :
1- Définition des broches : Les broches pour les capteurs (à gauche et à droite) et pour le contrôle des moteurs sont définies.
2- Lecture des capteurs : À chaque boucle, les valeurs des capteurs sont lues pour déterminer la position du robot par rapport à la ligne.
3- Commandes de déplacement : Selon la lecture des capteurs, le robot avance tout droit, tourne à gauche, tourne à droite, ou s'arrête.
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info