Note aux débutants : La présente documentation a pour but d’inspirer, non pas d’être copiée-collée sans comprendre le programme et les circuits. Car le copier-coller en Arduino ne fonctionne pas nécessairement.
La technologie Arduino permet de réaliser plusieurs types de robots. Mais un bolide reste un bolide, on aime le voir rouler et interagir avec son environnement. Nous proposons ici un bolide qui peut être acheté en «kit» (celui que nous avons utilisé).
Note : Nous avons une liste de pièces nécessaires pour créer un ensemble de formation pour les enseignants (autre que l’ensemble de démarrage Arduino) qui permettrait de s’approprier la robotique Arduino tout en construisant (et améliorant) un robot.
Montage
L’assemblage du robot n’est pas très compliqué, voici les quelques étapes pour obtenir ce robot.
Voici le matériel de notre ensemble (cliquer sur les images pour agrandir). Retirer le protecteur collant des pièces de plastique. À noter que nous ajoutons à ce matériel une pile 9V et un connecteur pour alimenter la carte UNO.
Étape 1 : Souder des fils (nous récupérons les fils réseau pour ce genre de connexion) sur les moteurs et utiliser de la colle chaude pour solidifier le tout. Puis boulonner les moteurs à l’aide des pièces fournies.
Étape 2 : Installer le bloc pile et la roue avant du robot comme dans l’image ci-dessous.
Étape 3 : Souder l’interrupteur au bloc pile (qui alimentent les moteurs).
Étape 4 : Assembler la carte Arduino UNO et son blindage fourni. Le blindage facilite les connexions vers des capteurs, les moteurs, etc.
Étape 5 : Assembler le servomoteur et le radar. Des petites vis fournies permettent de fixer le tout.
La base du support du servomoteur peut être fixée de diverses façons (vis, colle, gommette…). On obtient le support (blanc ici) en découpant une des pièces fournies avec le servomoteur. Nous l’avons collé avec de la colle chaude (pour pouvoir démonter au besoin).
Le capteur à ultrason (radar) peut être fixé à l’aide d’un élastique comme ci-dessous.
Pour finalement pouvoir monter le tout sur le châssis du robot (pour augmenter la solidité de cette pièce, un peu de colle chaude fera l’affaire).
Étape 6 : Nous pouvons maintenant connecter les moteurs au pont en H (L298N). Voici les connexions à réaliser.
Pour connecter les broches IN1, IN2,IN3,IN4 du pont en H, nous avons utilisé des fils Dupont femelles. À noter également que nous avons relié la mise à la terre de la carte UNO à celui du pont en H.
Étape 7 : Connecter le capteur ultrason à la carte UNO comme ci-dessous.
Pont en H | Fils | UNO |
Vcc | Orange | V |
Trig | Jaune | 9 |
Echo | Vert | 8 |
Gnd | Bleu | G |
Étape 8 : Connecter le servomoteur (qui servira à orienter le capteur ultrason dans un projet de programmation plus complexe) à la carte UNO comme ci-dessous.
Fils du servomoteurs | UNO |
Brun | G |
Rouge | V |
Orange | S (11) |
Programmation
La programmation peut être comme celle du robot labyrinthe déjà documenté. Voici à quoi ressemble notre programmation de base (le capteur ultrason mesure la distance, si la distance est supérieure à 25 cm le robot avance, sinon il recule et tourne).
Version XML (importable dans http://recitmst.qc.ca/blockly@rduino/).
Le code Arduino est le suivant :
float cm; int lecture_echo; void Avance() { digitalWrite(7, LOW); digitalWrite(6, HIGH); digitalWrite(5, HIGH); digitalWrite(4, LOW); } void Recule() { digitalWrite(7, HIGH); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, HIGH); } void TourneGauche() { digitalWrite(7, HIGH); digitalWrite(6, LOW); digitalWrite(5, HIGH); digitalWrite(4, LOW); } void TourneDroite() { digitalWrite(7, LOW); digitalWrite(6, HIGH); digitalWrite(5, LOW); digitalWrite(4, HIGH); } void Arrete() { digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, LOW); } void setup() { Serial.begin(9600); pinMode(9, OUTPUT); pinMode(8, INPUT); digitalWrite(9, LOW); cm = (float)(0); lecture_echo = (int)(0); pinMode(7, OUTPUT); pinMode(6, OUTPUT); pinMode(5, OUTPUT); pinMode(4, OUTPUT); } void loop() { digitalWrite(9, HIGH); delay(10); digitalWrite(9, LOW); lecture_echo = (int)(pulseIn(8,HIGH)); cm = (float)(lecture_echo / 58); Serial.print(cm); delay(10); if (cm > 25) { Avance(); } else { Arrete(); delay(1000); Recule(); delay(1000); TourneGauche(); delay(300); Arrete(); delay(1000); } }
Suite du projet
À ce robot nous pouvons ajouter divers capteurs (intensité lumineuse, son, couleur, position en fonction du temps…) ainsi que d’autres moteurs (bras, treuil, etc.) afin de le rendre plus complet. En ce faisant par contre, nous complexifions la programmation. À vous de voir jusqu’où vous désirez aller avec ce robot.