LABOT-1

  • Porteur du projet : Tom et Julien
  • Date : 05/02/2016
  • Licence : libre !
  • Contexte : Stage de 3° au LFO
  • Fichiers : [Les .png sont téléchargeables dans leurs sections respectives]
  • Lien : Ø

Description

Le LABOT-1 est un prototype de robot disposant d'un capteur infrarouge et de 2 servomoteurs. Il a été réalisé en 3 jours par 2 stagiaires. Disposant d'une intelligence artificielle simple, le LABOT-1 sait éviter les obstacles sur sa route, et repartir dans une autre direction. Il est conçu à partir d'une carte Arduino Romeo v2.0 sur un châssis de contreplaqué et est conçu pour être simple à monter.

Résultat

Contrôle XBEE

Voir page LaBOT XBee.

Matériaux

Liste de matériel et composants nécessaires :

  • 4 vis Ø 3 courtes
  • 10 vis Ø 3 moyennes
  • 2 vis Ø 3 longues
  • 2 espaceurs 5mm Ø 3
  • 16 écrous Ø 3
  • 1 Planche de CP de 3mm d'épaisseur de 16x18mm minimum
  • 1 Pile 6LR61 / 9 Volts
  • 1 Boîtier pour cette pile
  • 1 Roulette à bille ronde de 3,2×4,9mm possédant 2 trous à vis Ø 3
  • 1 Rehausseur de 16mm possédant 2 trous à vis Ø 3 imprimé en 3D adapté à la roulette
  • 1 Carte Arduino Romeo V2.0
  • 1 Capteur infrarouge SHARP 2Y0A02 F 48
  • 2 Servomoteurs à courant continu avec leurs roues DGServo S04NF STD
  • 2 Équerre servant de support aux servomoteurs (fournies avec)

Tutoriel

1) Le châssis

Ouvrir le fichier contenant les plans de découpe du châssis, puis le charger dans RD Works, régler ensuite la puissance de découpe en fonction des couleurs [pour le rouge : Puissance = 100; Vitesse = 20. Pour le noir : Puissance = 20; Vitesse = 80]

Lancer L'impression.

Voici le résultat.

2) Le support de roulette

Ouvrir le fichier contenant les plans de la roulette ( en .svg ou en bitmap ) dans CURA http://reso-nance.org/wiki/logiciels/cura/accueil puis extruder manuellement ( à l'aide de l'outil d'extrusion en fonction du contraste ) en introduisant une valeur de 16mm. Lancer ensuite l'impression.

Voici le résultat.

3) Le montage

Commencer par monter les servomoteurs sur les équerres à l'aide de 4 vis longues et de 4 écrous, les roues vers l'avant, puis fixer ces 2 équerres au châssis des deux côtés de celui-ci à l'aide des 4 vis courtes et de 4 écrous. Lors de la fixation des équerres, faire bien attention que les roues soient à l'avant de l'équerre et qu'elles soient à l'extérieur du châssis. Fixer enfin à l'aide des 2 vis longues et de 2 écrous la roulette et son support à l'arrière du robot.

Maintenant, fixer la carte Arduino en haut du châssis avec 2 vis moyennes, 2 écrous et les 2 espaceurs, de manière à ce que l'inscription “DF ROBOT” se retrouve en avant à droite. Ensuite, fixer le support de pile à l'aide de scotch double face, de manière à ce que le capot du support de retire vers l'arrière, et non en direction de la carte, entre les pas des 2 vis de fixation de la roulette.

Enfin, fixer à l'aide de scotch double face le capteur en dessous du châssis vers l'avant.

Voici le résultat.

4) La connectique

Connecter les servomoteurs, le capteur et la pile sur le carte Arduino selon de schéma de l’électronique (voire la rubrique dédiée).

5) La programmation

Ouvrir le logiciel Arduino et régler dans “outils” le type de carte pour le définir comme “Arduino Leonardo”. Coller dans la fenêtre, après l'avoir vidée, le code Arduino (voire rubrique dédiée). Connecter ensuite la carte à l'ordinateur à l'aide d'un câble adaptateur USB → Micro_USB. Aller ensuite dans “outils” et choisir le port de la carte sélectionnée (généralement COM6). Appuyer enfin sur “téléverser” et attendre que le programme soit entièrement chargé dans la carte. La connexion avec le PC n'est alors plus nécessaire , le programme étant sauvegardé dans la mémoire cache du microcontrôleur et le robot étant alimenté par le pile 9V.

Le robot est alors terminé et prêt à fonctionner.

CNC laser

Les lignes noires sont des repères à graver, tandis que les rouges sont à découper. Les pas de vis et les encoches sont également à découper.

Voici le fichier .svg du châssis.

Modèle 3D

Le modèle 3d du support de la roulette arrière est obtenu en extrudant de 16mm sur CURA ( http://reso-nance.org/wiki/logiciels/cura/accueil ) ou autre logiciel d'impression 3d, le fichier .svg ou le bitmap .png du rehausseur.

Circuit électronique

Le circuit électronique se base sur la carte Arduino Romeo v2.0 à laquelle sont connectés 2 servomoteurs, 1 capteur infrarouge et 1 pile 9V.

Code Arduino

/* --- LABOT-1 ---
 *  
 *  par Julien et Tom
 *  
 *  Le LABOT-1 est un robot simple équipé de 2 servomoteurs et d'un capteur à infrarouge.
 *  Son comportement consiste à avancer jusqu'à ce qu'il rencontre un obstacle.
 *  Il évitera alors la collision, puis choisira de reculer et de trourner soit à droite, soit à gauche, une fois sur deux.
 *  Il recommence alors à avancer.
 */
 
 
#include <Servo.h> // On inclue au scope la fonction des servomoteurs
 
 
// Variables
 
Servo servo_d, servo_g;
int repos_d = 92; // valeur de repos (autour de 90)
int repos_g = 91; // valeur de repos (autour de 90)
int capteur = 0; // valeur de départ du capeur
int choix = 0; // valeur du choix de tourner soit à gauche, soit à droite
 
// Setup
 
void setup() {
  Serial.begin(9600); // On définit la vitesse de transfert des données
  servo_d.attach(10); // Le servo droit est connecté au pin 10
  servo_g.attach(11); // Le servo gauche est connecté au pin 11 (à l'envers)
  idle(2000); // Attend 2sec au démarrage
}
 
// Logique
 
void loop() {
  capteur = analogRead(A0); //Readout du capteur infrarouge
  Serial.println(capteur); // Impression sur l'écran de la valeur du Readoup (contrôle)
  delay(10); // Stabilise la lecture
 
  if(capteur > 500) { //si le capteur est proche d'un objet, le robot va s'arrêter...
    idle(1000);  // ...pour 1s
 
    if(choix == 0) { // ici, on alterne la valeur du choix (de 1 à 0 ou de 0 à 1)
      choix = 1;
    }
    else {
      choix = 0;
    }
 
    if(choix == 0) { // si le choix est à 0...
      rot_g(5000, 20); // ...le robot tournera à gauche
    }
    else { // autrement, si le choix est à 1...
      rot_d(8500, 20); // ...le robot tournera à droite
    }
  }
  else { // si le capteur est loin d'un objet...
    avancer(20); // ... le robot avancera
  }
 delay(50); // On a 1/20 de s avant de recommencer le cycle
 
}
 
// Fonctions
 
// Fonction l'avancer (vitesse au repos + vitesse d'avancement)
void avancer(int vitesse) {
  servo_d.write(repos_d + vitesse);
  servo_g.write(repos_g - vitesse);
}
 
// Fonction de rester au repos
void idle(int temps) {
  servo_d.write(repos_d);
  servo_g.write(repos_g);
  delay(temps);
}
 
// Fonction de tourner en arrière vers la gauche
void rot_g(int temps_g, int vitesse) {
  servo_d.write(repos_d);
  servo_g.write(repos_g + vitesse);
  delay(temps_g);
}
 
// Fonction de tourner en arrière vers la droite
void rot_d(int temps_d, int vitesse) {
  servo_d.write(repos_d - vitesse);
  servo_g.write(repos_g);
  delay(temps_d);
}

N.B. : Les valeurs d'idle des deux moteurs sont environ de 90. Si besoin est, modifiez ces valeurs de manière à ce que les servomoteurs soient immobiles.

Galerie