Catégories
Liens
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.
Voir page LaBOT XBee.
Liste de matériel et composants nécessaires :
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.
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.
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.
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.
/* --- 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.