Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


Panneau latéral

projets:labot-1:accueil

Ceci est une ancienne révision du document !


LABOT-1

  • Porteur du projet : Tom et Julien
  • Date : 05/02/2016
  • Licence : libre !
  • Contexte : Stage en entreprise de 3°
  • Fichiers :
  • Lien : lien vers un site éventuellement

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.

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

- Le châssis

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 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);
}

Photos

Autres photos, galerie, …

/home/resonancg/www/wiki/data/attic/projets/labot-1/accueil.1454681332.txt.gz · Dernière modification: 2016/02/05 15:08 de tom_giribone