Bolide Arduino

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.

bolide_arduino

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.

materiel

 

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

moteurs_boulons

souder_fils_moteurs

Étape 2 : Installer le bloc pile et la roue avant du robot comme dans l’image ci-dessous.

bloc_piles

roue_avant

Étape 3 : Souder l’interrupteur au bloc pile (qui alimentent les moteurs).

interrupteur

Étape 4 : Assembler la carte Arduino UNO et son blindage fourni. Le blindage facilite les connexions vers des capteurs, les moteurs, etc.

uno_blindage

Étape 5 : Assembler le servomoteur et le radar. Des petites vis fournies permettent de fixer le tout.

servi_1

servo_2

servo_3

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

servo_4

servo_5

Le capteur à ultrason (radar) peut être fixé à l’aide d’un élastique comme ci-dessous.

radar

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

radar_servo_installer

Étape 6 : Nous pouvons maintenant connecter les moteurs au pont en H (L298N). Voici les connexions à réaliser.

ponth

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.

moteurs_uno_connexion

É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

radar_connexion

É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)

 

servo_connexion

 

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

 

robot_arduinov2

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.