Vous êtes sur la page 1sur 20

TM 2022 Robot suiveur de ligne Léonard & Arthur

Construction d’un robot suiveur de ligne

Travail de maturité présenté par


Léonard Blöchlinger et Arthur Gorgeu
Novembre 2022

1
TM 2022 Robot suiveur de ligne Léonard & Arthur

Abstract :
Construction d’un robot suiveur de ligne
Gymnase de Chamblandes Léonard Blöchlinger
Arthur Gorgeu

Travail de maturité 2022


Répondant : M. Urfer

07.11.2022

Ce travail de maturité est effectué à deux.


L’objectif principal est de construire un robot suiveur de ligne fonctionnel. Ajouté à cela un
rapport qui expliquera en détail chaque composant du robot et le programme. En second temps
le but est d’ajouter une spécificité au suiveur de ligne.
Pour réussir ce projet il fallut commencer par s’informer sur les composants d’un robot suiveur
de ligne. Puis nous avons fait un plan de châssis et de la forme du robot et des emplacements
des composants.
Après cette phase d’apprentissage nous avons décidé de séparer le travail pour pouvoir mieux
se consacrer chacun à une partie. Cette répartition a permis à chacun de nous d’acquérir une
meilleure expertise : l’un dans les composants du robot et ses fonctionnalités, l’autre dans la
partie plus technique avec la programmation notamment. Effectivement, le robot étant assez
fragile, il était préférable que l’un de nous en soit en charge.
La partie écrite avec la mise en forme était sous la responsabilité de Léonard tandis que le code
et l’assemblage du robot se faisait par Arthur.

Finalement notre projet fut concrétisé. Nous avons réussi à faire un suiveur de ligne fonctionnel
qui peut faire des virages à plus de 90 degrés, qui suit bien une ligne et peut continuer en
autonomie. Nous lui a ajouté un capteur ultrason pour qu’il s’arrête s'il y’a un obstacle. Le
projet est fini mais est toujours améliorable. Maintenant que la base d’un suiveur de ligne est
construite, nous pouvons l’optimiser en lui ajoutant des options, comme le capteur ultrason. Le
seul problème est que sur le nôtre la place est limitée par le nombre de port analogiques. Il
faudrait revoir certaines pièces.

2
TM 2022 Robot suiveur de ligne Léonard & Arthur

Remerciements :
Nous tenons à remercier toutes les personnes nous ayant aidé pour notre travail de maturité.

Tout d’abord merci à Monsieur Urfer, notre répondant, de nous avoir bien encadré durant
cette année, d’avoir pris de son temps afin de répondre à nos questions, de nous avoir aidé à
résoudre nos problèmes sur notre robot pour obtenir un résultat concluant.

Deuxièmement merci à notre ami Romain Lentz pour l’apprentissage du code et du père
d’Arthur Gorgeu pour la construction du châssis. Nous remercions aussi les parents de
Léonard pour la relecture et la correction de notre travail de maturité.

3
TM 2022 Robot suiveur de ligne Léonard & Arthur

Table des matières


1) Introduction : ............................................................................................................. 5
2) Solution technique choisie : ........................................................................................ 6
2.1 Châssis + roues : .................................................................................................................... 6
2.2 Le cerveau (Arduino Uno) : .................................................................................................... 7
2.3 Shield moteur :...................................................................................................................... 8
2.4 Alimentation : ....................................................................................................................... 9
2.5 La partie moteur : ................................................................................................................. 9
2.6 Les Capteurs pour suivre la ligne ........................................................................................ 10
2.6.1 Capteur infrarouge : ............................................................................................................................ 10
2.6.2 Capteur à ultrason : ............................................................................................................................. 11
................................................................................................................................................. 12
3) Code : ........................................................................................................................13
4) Problèmes et solution : ..............................................................................................16

4
TM 2022 Robot suiveur de ligne Léonard & Arthur

1) Introduction :
Dans le cadre de notre travail de maturité, nous avons décidé de construire un robot suiveur de
ligne. Nous voudrions qu’à la fin, notre robot soit capable de suivre parfaitement une ligne.

Pour commencer, qu’est-ce qu’un suiveur de ligne ?


Un suiveur de ligne est un robot qui à l’aide de différents capteurs a comme but de suivre une
ligne tracée au sol. Les principaux avantages d’un suiveur de ligne sont leur faible coût de
fabrication, et leur bonne fiabilité mécanique.
Dans le domaine industriel, ces robots sont souvent utilisés pour déplacer des produits comme
un stock de marchandise, des pièces lourdes à transporter. Leur but en industrie est de pouvoir
transporter de lourdes marchandises d’un point A à un point B et ce de manière rapide et sûre.
Pour fonctionner le véhicule a besoin de se repérer dans son environnement pour pouvoir se
déplacer correctement. (Gootrio, s.d.)
Par exemple, le véhicule à guidage automatique (VGA) est une version plus développée du
robot suiveur de ligne mais fonctionne sur le même principe. (Maxon)
On peut aussi trouver des exemples de suiveur de lignes dans des jeux pour enfants (Robot à
induction suiveur de ligne). (Aliexpress)
Par exemple, un jeu où l’enfant va dessiner une ligne avec un stylo noir. Le robot tournera en
cercles jusqu'à ce qu'il trouve la ligne et dès que les capteurs captent la ligne, le robot va la
suivre.

Robot à induction suiveur de ligne Robot suiveur de ligne (VGA)

Robot suivant une ligne noir tracé Robot VGA transportant marchandises
au sol sur un fond blanc grâce à ses capteurs. D’un point A à un point B
(Aliexpress) (Maxon)

5
TM 2022 Robot suiveur de ligne Léonard & Arthur

2) Solution technique choisie :


Pour notre projet, nous nous sommes basés sur un modèle de suiveur de ligne avec 3 roues et 2
capteurs. (Arduino t. , 2018).
Nous avons par la suite décidé de rajouter un troisième capteur pour améliorer la fiabilité.
Il est donc composé de 2 roues motorisées et d’une roue libre. Les moteurs sont alimentés par
une source d’énergie (piles). Pour pouvoir faire fonctionner le tout et contrôler les moteurs,
l’utilisation d’un « cerveau » est requis. Nous avons utilisé l’Arduino uno, une plateforme avec
laquelle on peut insérer un programme pour animer notre robot. Nous avons utilisé un shield
moteur, collé à l’Arduino uno pour faciliter les branchements et diminuer le nombre de câbles
nécessaires.

Matériel :

Notre robot suiveur de ligne est constitué des parties suivantes :


- Châssis + roues
- Le cerveau (Arduino Uno)
- Shield moteur
- Alimentation
- La partie moteur
- Les capteurs pour suivre la ligne (infrarouges et ultrason)
- Code

Pour être plus précis dans le choix et l’utilisation de chaque pièce, voilà une description plus
détaillée.

2.1 Châssis + roues :

Pour la construction du châssis nous avons découpé une planche de bois en forme de triangle
de façon à accrocher 3 roues. Aux deux extrémités arrière du robot nous avons vissé un moteur
de chaque côté sur lesquels une roue a été accrochée. Sous le châssis, à l’avant, une roue libre
est vissée pour permettre une rotation de 360º et faciliter les mouvements du robot.

6
TM 2022 Robot suiveur de ligne Léonard & Arthur

2.2 Le cerveau (Arduino Uno) :

C’est une carte électronique équipée d'un micro-contrôleur programmable. Le micro-contrôleur


permet, à partir d'événements détectés par des capteurs, de commander certains éléments
comme les moteurs des roues.

Composant de la carte Arduino Uno (Dimensionnel, 2020)

Bouton de
réinitialisation

Légende :
- Bouton de réinitialisation : Ce bouton sert à éteindre et réinitialiser l’Arduino.
- Port de téléversement/alimentation : permet de charger le programme de l’ordinateur à
l’Arduino
- Connexions numériques : C’est un signal numérique permettant de recueillir un signal
électrique signal pouvant prendre deux états binaires : haut (HIGH) ou bas (LOW).
- Connexions analogiques : il y’a 6 entrées analogiques, pouvant mesurer des tensions
comprises entre 0 et 5 volts. Ils permettent de recueillir un signal électrique pouvant
prendre une infinité de valeurs intermédiaires.
- Microcontrôleur : c’est un petit processeur informatique. Il est relié à des entrées et des
sorties numériques (0 ou 1) ou analogiques (tension variable). Il est capable de
mémoriser et d'exécuter un programme visant à interpréter les entrées pour agir sur les
sorties.
- Connexions : pas utilisé
(skywodd, 2017) (Bobroff, 2015)

Utilité :
Positionné au centre du châssis, il est relié avec toutes les autres pièces à l’aide de petits câbles
à l’exception du Shield moteur qui est directement branché dessus. Pour programmer le
microcontrôleur il faut l’IDE Arduino avec laquelle on écrit un programme en langage C et le
téléverser grâce à un câble USB sur le microcontrôleur. Les pin numériques et analogiques vont
servir à accrocher le shield moteur, et nous allons utiliser les pins analogiques du shield moteur
pour accrocher les capteurs et les moteurs. Pour téléverser notre code nous allons utiliser le
connecteur USB.

7
TM 2022 Robot suiveur de ligne Léonard & Arthur

2.3 Shield moteur :

C’est un module qui s’emboîte sur la carte Arduino pour faciliter le contrôle des moteurs. Il sert
aussi à fournir la puissance nécessaire.

Composant du Shield moteur (Arduino, 2021)

Légende :
-DCmotor : Ce sont les emplacements réservés aux moteurs avec des espace pour viser les
câbles plus et moins. Il y’a 4 emplacements pour les moteurs avec 2 mises en terre qui sont
inutile ici car nos moteurs n’en ont pas besoin.
-Reset switch : ce bouton permet d’effacer le programme de la mémoire de l’arduino
-External Power supply terminal : Cela sert à alimenter les moteurs à l’aide d’une batterie
extérieur relié au Shield moteur par le même processus que les moteurs (câbles visés)
-L293D Driver : Ce dispositif permet de piloter 2 moteurs à courant continu dans les deux sens
de rotation et peut faire varier la vitesse.
74HC595 shift register : reçoit des données en série du microcontrôleur et les envoie ensuite
via des broches parallèles.
-Servo motor terminal et Power supply selections jumpers : pas utilisé.

Utilité :
Le shield moteur permet de contrôler la vitesse et le sens de rotation de nos deux moteurs. Il
s’emboîte dans l’Arduino ce qui malheureusement utilise toutes les broches mais en
contrepartie économise de la place et évite de rajouter des câbles supplémentaires. Il a besoin
d’une alimentation externe car l'Arduino n’a pas assez de puissance à lui seul pour faire tourner
les moteurs

8
TM 2022 Robot suiveur de ligne Léonard & Arthur

2.4 Alimentation :

Chaque moteur utilise 2 câbles. L’un se trouve à gauche du moteur et l’autre à droite. Les deux
se branchent sur le shield moteur. Un sur le Pin DC motor 1 et l’autre sur le pin DC moteur 4.
Pour l’alimentation des moteurs nous avons utilisé une batterie avec des piles qui est
directement branché sur le pin « External power » (voir figure du shield moteur)
L’alimentation de l'Arduino et des capteurs proviennent d’une pile 500 mAh qu’on branche sur
les pins disponibles sur le shield moteur, qui sont positionnés en bas à droite du module.

2.5 La partie moteur :

Moteur à engrenage :
Nous avons utilisé le Gebildet DC3V-12V DC comme référence. Il fonctionne en courant
continu et sa tension de fonctionnement varie entre 3 et 12 volts. Le moteur effectue 17000
rotations par minute. Pour son courant nominal, il a un courant de charge à 70 milliampères qui
peut monter jusqu’à 250milliampère si la charge à tracter augmente.
Le couple est la force de torsion liée à la force de rotation d'un moteur. Il mesure la force que
peut délivrer le moteur dans son mouvement.
Les 17000 rotations par minute sont divisées par 48 pour n’avoir plus que 354 rotations par
minute soit 6 par seconde. Cela permet d’augmenter le Couple. Bien que le robot roule moins
vite il à la force nécessaire pour supporter le poids du suiveur de ligne.
Le sens de rotation des moteurs est réglable selon le branchement du
plus et du moins. Si on inverse les branchements le sens de rotations
s’inverse. (WORKSHOP, 2020)

(Amazon)

9
TM 2022 Robot suiveur de ligne Léonard & Arthur

Composant d’un moteur à engrenage (olyte, 2021)

Légende :
- Le stator est la partie fixe avec les 2 aimants permanents.
- Le rotor quant à lui est la partie mobile au centre du stator. Il est aussi composé de deux
aimants.
- Le système charbon-collecteurs a pour rôle de faire commuter le sens du courant dans
les deux conducteurs au passage de la ligne neutre. Le courant étant inversé, les forces
motrices sur les conducteurs le sont aussi permettant ainsi de poursuivre la rotation de
la spire.

2.6 Les Capteurs pour suivre la ligne

2.6.1 Capteur infrarouge :


Caractéristique :
Ces capteurs ont une portée de détection qui vont de 2cm à 30cm. Elle peut être ajustée à l’aide
d’un potentiomètre intégré. Pour la broche, +out pour le transfert d’information et vcc et gnd
pour l’alimentation. Ils sont composés d’un Phototransistor d’une LED infra rouge et d’un
potentiomètre. Leur sortie est en signaux binaires. (Ruscassié, Juillet 2016)

10
TM 2022 Robot suiveur de ligne Léonard & Arthur

Fonctionnement :
La LED IR envoie des rayonnements infrarouges qui se réfléchissent contre la matière. Puis le
phototransistor reçoit les rayonnements et les converties en une tension proportionnelle. Cette
tension est soit élevée donc égale à 1 ou faible donc égale à 0, cela dépend du taux de réflexion
de la matière. Si la couleur de la matière est noire elle renverra un faible taux et la tension sera
de 0, à l’inverse si la couleur est autre (tout sauf noir) le rayonnement sera assez fort pour que
quand il soit converti par le phototransistor il soit converti en tension égalant 1. Ces données 0
et 1 s’appellent le langage binaire. (EPFL, 2008)

Nous avons installé trois de ces capteurs à l’avant de notre robot et voici comment on les utilise.

Différentes situations possibles avec les capteurs :

Il y a trois capteurs infrarouges. Un à gauche un au milieu et le troisième à droite.

Situation Idéale :
-Tant que celui du milieu ne capte rien (sur la ligne noir) et que celui de droite et de gauche
captent (pas sur la ligne noir), le robot avance.

Légère déviation :
-Si celui de gauche ne capte plus, que celui du milieu ne capte toujours rien et que celui à droite
capte, le robot tourne à gauche.
-Inversement si celui de droite ne capte plus, que celui du milieu ne capte toujours rien et que
celui de gauche capte, le robot tourne à droite.

Grosse déviation :
-Si celui de gauche ne capte plus et ceux du milieu et à droite captent, le robot tourne à gauche
-Si celui de droite ne capte plus et ceux du milieu et à gauche captent, le robot tourne à droite

En dehors de la ligne :
- Si les 3 capteurs captent (aucun sur la ligne). Le robot continu de tourner dans le sens de la
dernière information du capteur.
-Si celui de gauche n’a rien capté en dernier (le dernier à avoir été sur la ligne noir) le robot
continue à tourner à gauche
-Si celui de droite n’a rien capté en dernier (le dernier à avoir été sur la ligne noir) le robot
continue à tourner à droite.

2.6.2 Capteur à ultrason :


Caractéristique :
La portée de détection est réglable entre 3cm et 3m dans le code, à l’inverse des capteurs
infrarouges qu’on fait manuellement. Même si c’est plus compliqué, ce système est meilleur
car plus précis. Ce capteur est composé d’un récepteur et d’un émetteur. Il y’a aussi 4 branches
Gnd et Vcc pour l’alimentation, la branche Echo pour le récepteur et la branche Trig pour
l’émetteur.

11
TM 2022 Robot suiveur de ligne Léonard & Arthur

Fonctionnement :

L’émetteur envoie un signal en ultrasons. Le son réfléchi sur la surface doit être plate pour
repartir. Si la surface est arrondie cela ne marche pas car le son ne reviendra jamais dans le
récepteur. Si le son revient, il devient l’écho et il est capté par le récepteur.
Ce qui est important c’est la durée du signal à parcourir la distance entre l’émetteur et le
récepteur. Il ne faut pas oublier de diviser cette valeur par 2 car le son fait un aller-retour. Si on
veut la distance on ne veut que la moitié de l’aller-retour. Mais il faut aussi la vitesse du son.
La formule est donc “distance = vitesse (du son) fois temps diviser par 2” (CFAURY, 2016)

Composant d’un capteur à Ultrason (CFAURY, 2016)

Différentes situations possibles avec le capteur ultrason :

- Si la distance que le signal parcourt est au-dessus de 18 cm ou si aucun Echo est perçu
par le récepteur : le robot avance normalement pour suivre la ligne.
- Si la distance que le signal parcourt est en-dessous de 18 cm : le robot s’arrête.

12
TM 2022 Robot suiveur de ligne Léonard & Arthur

3) Code :
Pour apprendre à coder nous avons utilisé le livre mis à notre disposition dans le kit Arduino
(Arduino) Et différents tutoriels vus sur internet (DESROCHERS, 2017)
Pour coder, nous avons utilisé IDE Arduino avec le langage de programmation C.
Nous avons aussi utilisé la bibliothèque AFMotor.h. (bitDealer, 2014) Cette bibliothèque est
du code pré-préparé qui permet la compréhension de commande comme ici set_Speed.
Voici le code avec les commentaires en vert qui se retrouvent après les signes “ // ”

// bibliothèque utilisée pour faire comprendre les raccourcis


#include<AFMotor.h>

//définit les moteurs à la bonne fréquence pour leur canal


AF_DCMotor motor1(1,MOTOR12_1KHZ); //moteur 1 soit le gauche
AF_DCMotor motor4(4, MOTOR34_1KHZ); //moteur 4 soit le droit

// définit les entrées des capteurs infrarouges, ici capteur Gauche


int sensorPin1 = A0; //capteur Gauche
int sensorPin2 = A3;//capteur Milieu
int sensorPin3 = A5;//capteur Droite

// définit les broches du capteur central Avant, capteur Ultrason


#define trigPinAvant 9 // branché sur le servo_2 sur Shield moteur
#define echoPinAvant 10 // branché sur le servo 1 sur Shield moteur

void setup() {//démarrage, commande qui se font qu'une fois au début

// transfert des informations via le port série pour voir si les capteurs
marchent dans la section Tools, dans serial monitor
Serial.begin(9600);
pinMode(trigPinAvant, OUTPUT);// envoie les ultra-sons AVANT CENTRAL
pinMode(echoPinAvant, INPUT);// reçoit l'écho AVANT CENTRAL
//configure la broche spécifiée comme une entrée
pinMode(sensorPin1, INPUT); //capteur Gauche
pinMode(sensorPin2, INPUT); //capteur Milieu
pinMode(sensorPin3, INPUT); //capteur Droite
}
//cycle, boucle qui continue perpétuellement tant que le robot est alimenté
void loop() {

long duration, distance; // MESURE OBSTACLE FRONTAL AVANT


digitalWrite(trigPinAvant, LOW); // on définit la variable : "triPinAvant" en
low
delayMicroseconds(2); // délai en microseconde
digitalWrite(trigPinAvant, HIGH); // on définit la variable : "triPinAvant" en
high
delayMicroseconds(10); // délai en microseconde
duration = pulseIn(echoPinAvant, HIGH); // il met la valeur des échos qu'il
reçoit en HIGH
distance = (duration/2) / 29.1;// convertit la distance en cm

13
TM 2022 Robot suiveur de ligne Léonard & Arthur

if (distance < 18)/* TESTE SI OBSTACLE FRONTAL AVANT A MOINS DE 18CM */


{ motor1.setSpeed (0);//vitesse moteur1 nul, moteur1 s'arrête
motor4.setSpeed (0);}//vitesse moteur4 nul, moteur4 s'arrête
//si capteur milieu ne capte pas et capteur gauche et droite capte
if (digitalRead(sensorPin1) == LOW && digitalRead(sensorPin2) == HIGH &&
digitalRead(sensorPin3) == LOW){
//si condition remplie les deux moteurs avance à la vitesse 155
motor4.setSpeed (155); motor1.setSpeed (155);
//dans serial moniteur, dans Tools écrit "go1" (grâce au serial begin dans
le void setup). Permet de savoir si on est dans la bonne situation.
Serial.println("go1");}
//si capteur gauche ne capte pas et capteur milieu et droite captent
if (digitalRead(sensorPin1) == LOW && digitalRead(sensorPin2) == HIGH &&
digitalRead(sensorPin3) == HIGH){
//moteur4 se stoppe et motor 1 continue d'avancer pour tourner à gauche
motor4.setSpeed (0); motor1.setSpeed (155);
//dans serial monitor, dans Tools écrit "tourner_a_gauche_POV_Robot1" (grâce
au serial begin dans le void setup). Permet de savoir si on est dans la bonne
situation.
Serial.println("tourner_a_gauche_POV_Robot1");}
//si capteur Gauche et capteur Droite captent et Milieu ne capte pas
if (digitalRead(sensorPin1) == LOW && digitalRead(sensorPin2) == LOW &&
digitalRead(sensorPin3) == HIGH){
//moteur4 se stoppe et motor 1 continu d'avancer pour tourner à gauche
motor4.setSpeed (0); motor1.setSpeed (155);
//dans serial monitor, dans Tools écrit "tourner_a_gauche_POV_Robot2" (grâce
au serial begin dans le void setup). Permet de savoir si on est dans la bonne
situation.
Serial.println("tourner_a_gauche_POV_Robot2");}
//si capteur milieu et droite ne capte pas et capteur gauche capte
if (digitalRead(sensorPin1) == HIGH && digitalRead(sensorPin2) == HIGH &&
digitalRead(sensorPin3) == LOW){
//moteur1 se stoppe et motor 4 continue d'avancer pour tourner à droite
motor4.setSpeed (155); motor1.setSpeed (0);
//dans serial monitor, dans Tools écrit "tourner_a_droite_POV_Robot1"
(grâce au serial begin dans le void setup). Permet de savoir si on est dans la
bonne situation.
Serial.println("tourner_a_droite_POV_Robot1");}
//si capteur Droite capte et capteur Gauche et Milieu ne capte pas
if (digitalRead(sensorPin1) == HIGH && digitalRead(sensorPin2) == LOW &&
digitalRead(sensorPin3) == LOW){
//moteur1 se stoppe et motor 4 continue d'avancer pour tourner à droite
motor4.setSpeed (155); motor1.setSpeed (0);
//dans serial monitor, dans Tools écrit "tourner_a_droite_POV_Robot2" (grâce au
serial begin dans le void setup). Permet de savoir si on est dans la bonne
situation.
Serial.println("tourner_a_droite_POV_Robot2");}

14
TM 2022 Robot suiveur de ligne Léonard & Arthur

//si les trois capteurs sont sur la ligne noir le robot continue d'avancer.
Cela permet au robot de ne pas rester bloqué s'il arrive dans une intersection
avec deux virages à 90 degrés
if (digitalRead(sensorPin1) == HIGH && digitalRead(sensorPin2) == HIGH &&
digitalRead(sensorPin3) == HIGH){
//si condition remplie les deux moteurs avance à la vitesse 155
motor4.setSpeed (155); motor1.setSpeed (155);
//dans serial monitor, dans Tools écrit "retrouve la ligne" (grâce au serial
begin dans le void setup). Permet de savoir si on est dans la bonne situation.
Serial.println("retrouve la ligne");

}}

15
TM 2022 Robot suiveur de ligne Léonard & Arthur

4) Problèmes et solution :
Problème technique dans l’ordre chronologique :
En premier lieu le châssis devait être acheté ou fait à l’imprimante 3D. L’achat aurait été fait
par internet sans mesure du châssis et nous n’aurions pas pu être sûrs que tous les composants
du robot aient assez de place sur le châssis. L’imprimante 3D est difficile à utiliser sans
expérience et connaissance. Il aurait fallu se renseigner sur le sujet longuement ou trouver un
modèle 3D d’un châssis qui correspond à ce que nous voulions. L’option de faire nous-même
le châssis en bois était la meilleure solution par sa simplicité de conception. Il nous a fallu juste
une scie électrique, une planche de bois et un étau.
Puis la fixation des moteurs fut plus difficile que prévu. Il fallait des clous fins pour passer par
les encoches prévues à la fixation des moteurs. Les clous ont été difficiles à trouver et encore
plus difficiles à fixer car le châssis n’est pas très large.

La roue libre a aussi été défectueuse au début. La première roue provenait d’un ancien projet
robotique et était trop petite, il y’avait donc un problème d’équilibre. De plus, elle était rouillée
et cela rendait le mouvement compliqué vu qu’elle n’arrivait pas à effectuer un 360º. Après
plusieurs achats de roues, nous avons trouvé la roue idéale. Une roue libre avec deux trous à la
base pour la fixer. a utilisé des vis en métal avec des écrous et des rondelles. C’était pour nous
la meilleure solution car la hauteur de la roue pouvait être réglée en vissant ou en dévissant les
écrous. Les autres roues libres n’étaient pas à la hauteur souhaitée pour avoir un châssis à plat
et les emplacements pour les fixer étaient trop petits pour y mettre des vis en métal.
L’ajout du Shield moteur avait des défauts. Car bien qu’il économise énormément de
branchements sur une breadboard, il utilise tous les ports digitaux. Mais ce n’est pas un
problème car les ports analogiques peuvent être utilisé en tant que port digital.
L’alimentation du Shield moteur fut lui aussi un problème. nous ne comprenions pas comment
on pouvait l’alimenter sans qu’il reste câblé à l’ordinateur. Nous utilisions le câble qui sert à
télécharger le code aussi en tant qu’alimentation de l'Arduino et du Shield moteur. Il suffisait
simplement de brancher une pile 9volt aux emplacements Gnd (sortie sol) et 9v du Shield
moteur.
Les capteurs infrarouges étaient trop éloignés du sol ce qui brouillait leur signal et les empêchait
de capter la ligne noire. Quand les capteurs étaient trop éloignés il fallait augmenter leur portée,
soit la puissance. Cette augmentation de puissance était négative car elle permettait d’envoyer
un signal trop puissant qui réfléchissait sur la ligne noir. Ce qui voulait dire que le capteur
n’était pas sur la ligne noire, car le capteur captait le signal qu’il envoyait. Pour régler ce
problème il fallait rajouter une planche verticalement à l’avant du robot pour pouvoir y fixer
les capteurs à la hauteur voulue. La planche s’allonge jusqu’à 2cm du sol. Cette longueur a été
choisie comme cela si on fixe le capteur au bout de la planche il est au ras du sol et à la meilleure
efficience dans le signal. Nous avons quand même choisi de visser les capteurs à la hauteur où
l’émetteur et le récepteur ne dépasse pas la planche pour une optique de protection. Avec tout
le transport du robot (école à chez nous, et son transport où on partait en vacances pour y
continuer à y travailler) c’était la meilleur solution ne pas faire dépasser l’émetteur et le
récepteur qui sont fragiles et qui peuvent se tordre.

Il y avait énormément de faux contacts avec les câbles des capteurs infrarouge quand ils
arrivaient aux emplacements du Shield moteur. Cela nous a fait perdre énormément de temps
car certains codes test qui marchaient ne marchaient plus juste après. Cela nous a énormément
confus, car rien ne changeait et le robot agissait quand même différemment. Pour régler ce
problème il fallait souder le robot. Malheureusement à cause d’un malentendu nous pensions
qu’il fallait souder nous-même. Nous n’avions pas le niveau pour ce niveau de précision avec

16
TM 2022 Robot suiveur de ligne Léonard & Arthur

nos compétences. Heureusement après notre dernier rendez-vous TM le malentendu a été


dissipé et notre maître de TM a soudé pour nous les câbles. Notre autre solution aurait été de
souder à l'Arnold Reymond où on aurait eu un contact.

Pour la batterie qui est composé de 4 piles AA il y a un léger défaut de fabrication. Un des
quatre ressorts n’est pas assez rigide pour tenir une pile. La solution aurait été de retourner le
boitier et visser directement le boitier principal avec les piles mais ce n’est pas possible car des
câbles passent aux endroits utilisés. Donc nous avons choisi de fixer le capot et de déposer le
boitier principal dessus en faisant attention de bien caler la pile avec le ressort détendu.
Le capteur à ultrason ne marche que contre de grandes surfaces en face (mur) de lui. Si l’objet
est bas ou sur le côté il ne le détectera pas. La solution serait d’agrandir la planche à l’avant
pour qu’elle soit plus large que les roues et rajouter des capteurs ultrason. Mais ce n’est pas
possible car nous ne possédons pas assez de ports analogiques.

Problème code :
Le plus gros problème en code fut les commandes “RELEASE” et “FORWARD” que nous
avons utilisées dans notre premier code (code qui servait juste à gérer les moteurs sans capteurs)
et qui ne marchaient plus dans notre code final. Nous avons finalement décidé de remplacer les
commandes “RELEASE” et “FORWARD” par le contrôle de la vitesse.
On voulait aussi faire reculer le robot s’il sortait de la ligne mais finalement cette solution n’était
pas optimisée, le robot était très lent car perdait beaucoup de temps à reculer pour retrouver la
ligne. Nous avons préféré que quand il perd la ligne il continue à exécuter sa dernière
commande. S’il sort à droite de la ligne il tournera à l’infini à gauche où il retrouve la ligne et
continue normalement à suivre la ligne. La situation où il continue à tourner à l’infini n’arrive
que quand le robot s’est trop éloigné de la ligne. Cela se règle facilement en diminuant la vitesse.
la vitesse de 155 était la plus adéquate pour que quand il sort de la ligne il ne soit pas trop
éloigné.
La vitesse 155 a aussi été choisie pour deux autres raisons. Tout d’abord les vitesses en-dessous
ne sont pas assez puissantes pour faire avancer le robot quand il effectue un virage. Car quand
le robot tourne, il n’y a qu’une roue qui fonctionne, soit 2x moins de puissance. Et au-dessus
de 200 le robot sort trop souvent de la ligne, il passe plus de temps à chercher la ligne qu’à la
suivre. On peut légèrement augmenter la vitesse du robot au risque de sortir plus souvent de la
ligne. On préfère perdre de la vitesse en échange d’un meilleur suivi de la ligne.

17
TM 2022 Robot suiveur de ligne Léonard & Arthur

Annexes

Annexe 1:

Avis personnel

Arthur
Pour moi ce projet est une réussite. Tout d’abord j’ai beaucoup appris en programmation, ce
qui était mon but premier. J’ai pris ce TM pour me forcer à me mettre au programme. Ce qui
était une très bonne idée. Grâce aux délais j’étais obligé de travailler et d’apprendre.
De plus le fait de faire un robot permet de voir réellement l’avancement du TM. Rien que par
sa construction mais aussi par l’implantation de programme qui l’anime. Plus il fonctionne et
plus on a ajouté de pièces plus le projet semble réel.
Finalement bien que le projet soit fini il est toujours possible d’améliorer le robot, de l’optimiser.

Léonard
Pour moi ce projet est aussi une réussite. J’ai appris pleins de choses. La programmation n’était
pas un sujet que je connaissais énormément et ce TM m’a permis d’en apprendre davantage.
J’ai bien aimé le fait de devoir gardé toute trace écrite de l’avancement de notre robot pour
pouvoir établir ce journal de bord. Comme l’a dit Arthur même si notre projet est fini, nous
pouvons toujours améliorer le robot ce qui ne nous laisse pas de contrainte.

Annexe 2 :
Journal de bord
Pour mener à bien notre construction, nous écrivons au fur et à mesure notre avancé et nos
différents problèmes rencontrés.
21.03.2022 : Commande de toutes les pièces indispensables pour notre suiveur de ligne Après
la recherche des matériaux nous avons acheté tous les éléments que nous avions besoins et plus
encore pour pouvoir faire des tests supplémentaires pour améliorer notre compréhension de
l’électronique
. 25.03.2022 -25.04.2022 : Entraînement de codage à l’aide du kit (Arduino Uno) Nous nous
sommes retrouvées pour faire les exercices du kit Arduino.
15.04.2022 : Réception du matériel + construction de notre Premier châssis peu concluant
26.04.2022 – (encore en cours) Rédaction de la partie écrite + second prototype : Le deuxième
prototype est beaucoup plus soigné car le bois était de meilleure qualité, a été coupé à la scie
sauteuse et l’idée d’étage a été abandonné à cause de la difficulté à mettre en place pour le peu
de place gagnée.
14.05.2022 : Deuxième essai de codage sur le prototype. Les moteurs fonctionnent et on peut
les contrôler. (Avec Résultats) . Ce fut plus simple que prévue grâce à la bibliothèque adafruit
et pour le codage le shield moteur pour les branchements.
24.05.2022: Rendez-vous Tm avec comme objectif 3 pages et de pouvoir contrôler les moteurs
+ réponse à nos questions Le principal problème était la méthode d’alimentation de notre robot.
Nous ne savions pas qu’en plus d’alimenter les moteurs il fallait une autre source d’énergie
pour alimenter le cerveau, ici l'Arduino et le shield moteur. Problème résolu il était enfin
possible de voir notre robot se mouvoir seul et avoir un aperçu des valeurs données au moteur
dans le codage. Car nous n’avions aucune idée de ce que représentais réellement les valeurs
qu’on donnait à la vitesse et temps d’attentes. De plus on a pu voir que notre roue libre dévié la
trajectoire

18
TM 2022 Robot suiveur de ligne Léonard & Arthur

24.05.2022 - 02.7.2022 :
Avancement parti écrite.
03.07.2022 :
Premier code suivant une ligne.
23.08.2022
Rectification du code à cause d'un problème inconnu qui ne faisait plus marcher le code
24.08.2022 - fixation du robot et amélioration du code mais gros problème de test à cause de
faux contact.
05.09.2022 : première correction de la partie écrite.
13.09.2022 : rendez-vous Tm dans le but de trouver l’erreur dans le code qui pénalise notre
avancement.
01.10.2022-5.10.2022 : focalisation sur le code pour l’améliorer et faire fonctionner le suiveur
de ligne.
31.10.2022 : version finale de l’assemblage du robot
18.10.2022 : dernière correction faite par le répondant avant la réédition finale.
06.11.2022 : finalisation du code (suit une ligne + capteur ultrason)
07.11.2022 : finalisation et rendu de l’écrit.

19
TM 2022 Robot suiveur de ligne Léonard & Arthur

Annexe 3: bibliographie :

Adafruit. (s.d.). Adafruit Industries, Unique & fun DIY electronics and kits. Consulté le 30
avril 2022, sur adafruit.com: https://www.adafruit.com
Aliexpress. (s.d.). Robot à Induction suiveur de ligne, jouets éducatifs ... Consulté le 10
septembre 2022, sur https://fr.aliexpress.com/item/1005001912919586.html
Amazon. (s.d.). Gebildet 8pcs DC3V-12V DC .
Arduino. (2021, août 23). Controleur de moteurs avec L293D Arduino. Consulté le 30 avril
2022, sur Tutoriels et Projets avec l'Arduino: https://arduino-france.site/motor-shield/
Arduino. (s.d.). le livre des projets. france: Scott Fitzgerald, Michael Shiloh, Mirco
Piccin ,Tom Igoe, Arturo Guadalupi.
Arduino, t. (2018, septembre 02). Un robot suiveur de ligne avec Arduino. Consulté le 25
fevrier 2022, sur tutoriel-Arduino: https://www.tutoriel-arduino.com/suiveur-de-ligne-
arduino/
bitDealer. (2014, février 1). Adafruit-Motor-Shield-library/AFMotor.h. Consulté le 30 mars
2022, sur adafruit / Adafruit-Motor-Shield-library:
https://github.com/adafruit/Adafruit-Motor-Shield-library/blob/master/AFMotor.h
Bobroff, F. B. (2015). MICROCONTROLEUR ARDUINO. Université Paris Sud. Récupéré sur
http://hebergement.u-psud.fr/projets/documents/poly_s4s5_arduino.pdf
CFAURY. (2016, janvier 15). Capteur de distance à Ultrason. Consulté le 3 novembre 2022,
sur Tout ce qu'il faut savoir pour utiliser un Arduino:
https://arduino.blaisepascal.fr/capteur-de-distance-a-ultrasons/
DESROCHERS, T. (2017, juillet 19). ROBOT ARDUINO: SUIVEUR DE LIGNE. Consulté le
30 mars 2022, sur BLOG, ÉLECTRONIQUE ET PROGRAMMATION:
https://tommydesrochers.com/robot-arduino-suiveur-de-ligne/
Dimensionnel, L. D. (2020, octobre 13). Présentation de la carte Arduino et de son IDE.
Consulté le 3 octobre 2022, sur Le Disrupteur Dimensionnel:
https://ledisrupteurdimensionnel.com/presentation-de-la-carte-arduino-et-de-son-ide/
EPFL. (2008). LE CAPTEUR INFRAROUGE.
Gootrio. (s.d.). La Technique Pour Tous. Consulté le 2 septembre 2022, sur Réaliser un Robot
suiveur de ligne avec une carte Arduino UNO: https://gootrio.com/realiser-un-robot-
suiveur-de-ligne-avec-une-carte-arduino-uno/
Maxon. (s.d.). restons curieux. Consulté le 30 septembre 2022, sur AGV : Top 3 des secteurs
porteurs: https://drive.tech/fr/stream-content/agv-top-3-des-secteurs-porteurs
olyte, E. (2021, juin 27). Principe de fonctionnement du moteur à courant continu. Consulté
le 30 0ctobre 2022, sur Zeste de Savoir:
https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-
embarquee/747_le-mouvement-grace-aux-moteurs/3437_le-moteur-a-courant-continu/
Ruscassié, G. (Juillet 2016). MODULE CAPTEUR INFRAROUGE DÉTECTION
D’OBSTACLE. Toulouse.
skywodd. (2017, février 21). La conversion analogique / numérique avec Arduino / Genuino.
Consulté le 2 octobre 2022, sur Carnet du maker:
https://www.carnetdumaker.net/articles/la-conversion-analogique-numerique-avec-
arduino-genuino/
WORKSHOP, M. . (2020, avril 24). Consulté le 25 septembre 2022, sur youtube:
https://www.youtube.com/watch?v=GPVC84D5ULw&t=246s

20

Vous aimerez peut-être aussi