Table des matières:

OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino : 5 étapes (avec photos)
OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino : 5 étapes (avec photos)

Vidéo: OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino : 5 étapes (avec photos)

Vidéo: OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino : 5 étapes (avec photos)
Vidéo: “Poincaré et la robotique : la géométrie pour agir par le mouvement” par Jean Paul Laumond 2024, Juin
Anonim
Image
Image
OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino
OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino
OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino
OAREE - Imprimé en 3D - Robot évitant les obstacles pour l'enseignement de l'ingénierie (OAREE) avec Arduino

OAREE (Robot évitant les obstacles pour la formation en ingénierie)

Conception: le but de cette instructable était de concevoir un robot OAR (Obstacle Avoiding Robot) qui était simple/compact, imprimable en 3D, facile à assembler, utilise des servos à rotation continue pour le mouvement et a le moins de pièces achetées possible. Je crois que j'ai réussi à créer ce robot génial et je l'ai nommé OAREE (Robot évitant les obstacles pour l'enseignement de l'ingénierie). Ce robot détectera les obstacles, s'arrêtera, regardera à gauche et à droite, puis tournera dans la direction dégagée et continuera d'avancer.

Contexte: Internet comporte de nombreux obstacles pour éviter les robots, mais la plupart sont encombrants, difficiles à assembler et coûteux. Beaucoup de ces robots ont un code Arduino fourni, mais il était difficile de trouver un exemple fonctionnel bien pensé. Je voulais aussi utiliser des servos à rotation continue pour les roues (au lieu de moteurs à courant continu), ce qui n'avait pas encore été fait. Je me suis donc lancé dans la mission de développer un robot OAR compact et inventif à partager avec le monde.

Développement ultérieur: Ce robot peut être développé pour une meilleure précision de ping, en ajoutant des capteurs IR pour la capacité de suivi de ligne, un écran LCD pour afficher la distance d'obstacle, et bien plus encore.

Fournitures

  • 1x Arduino Uno -
  • 1x Bouclier de capteur V5 -
  • 1x support de batterie 4xAA avec interrupteur marche/arrêt -
  • 1x Servo SG90 -
  • 2x servos à rotation continue -
  • 1x câble d'alimentation de batterie 9V pour Arduino (OPTIONNEL) -
  • 1x capteur à ultrasons HC-SR04 -
  • 4x fils de connexion femelle-femelle -
  • 2x élastiques
  • 1x pile 9V (EN OPTION)
  • 4x piles AA
  • 4x petites vis (4 x 1/2 ou quelque chose de similaire)
  • Tournevis cruciforme
  • Colle pour fixer les élastiques aux roues

Étape 1: impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons

Impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons
Impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons
Impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons
Impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons
Impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons
Impression 3D: corps, roues, roulette en marbre, boulon/écrou de 6 mm et support de capteur à ultrasons

Il y a 5 parties à imprimer en 3D.

  1. Corps
  2. roues
  3. Roulette en marbre
  4. Boulon/écrou de 6 mm (facultatif, un écrou/boulon en métal peut être remplacé)
  5. Support de capteur à ultrasons

Tous les fichiers. STL requis sont inclus dans cette instructable ainsi que les fichiers Sketchup. 40 % de remplissage recommandé.

Étape 2: programmer l'Arduino

Image
Image
Assembler le robot
Assembler le robot

Envoyer le code à Arduino UNO: À l'aide de l'IDE Arduino, envoyez le code (dans le fichier joint) à votre module Arduino. Vous devrez télécharger et inclure les bibliothèques servo.h et newping.h avec ce croquis.

Le code est soigneusement commenté, vous pouvez donc voir ce que fait chaque commande. Vous pouvez facilement changer la distance du capteur à ultrasons à une valeur plus grande ou plus petite si vous le souhaitez. Ceci est un code initial et est destiné à être développé et utilisé pour le développement ultérieur du projet.

// ROBOT ÉVITANT LES OBSTACLES// [email protected], [email protected], Université du TN à Chattanooga, Génie électrique, AUTOMNE 2019 // Matériel requis: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3)HCSR04 Ultrasonic Sensor, 4)FS90 Servo (pour Ultrasonic Sensor) // 5&6) 2x SERVOS À ROTATION CONTINUE pour les roues // 7) Marbre 16mm pour pivot de roulette arrière, 8&9) 2 élastiques pour roues // 10- 15) 1x (4xAA) Support de pile avec interrupteur marche/arrêt, 16&17) Pile 9V avec connecteur pour alimenter Arduino UNO // IMPRESSION 3D: // 18) Corps du ROBOT, 19&20) 2x Roues, 21) Roulette en marbre, 22) Capteur à ultrasons Monture et vis de 6 mm (voir fichiers joints) //--------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Inclure la bibliothèque Servo #include // Inclure la bibliothèque Newping //-------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // Déclencheur américain sur la broche 12 sur Arduino #define ECHO_PIN 13 // Écho américain sur la broche 13 sur Arduino #define MAX_DISTANCE 250 // Distance au ping (max est de 250) distance int = 100; //------------------------------------------------ -------------------------------------------------- ------------------------------- Servo US_Servo; // Capteur à ultrasons Servo Servo Left_Servo; // Servo de roue gauche Servo Right_Servo; // Sonar NewPing servo de roue droite (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configuration NewPing des broches et de la distance maximale. //------------------------------------------------ -------------------------------------------------- ------------------------------- void setup() // ENTRÉES/SORTIES, O FIXER, DÉFINIR LA POSITION/MOUVEMENT INITIAL { pinMode(12, SORTIE); // Broche de déclenchement définie comme sortie pinMode(13, INPUT); // Broche d'écho définie comme entrée US_Servo.attach(11); // Servo US réglé sur la broche 11 US_Servo.write(90); // US SERVO REGARDE EN AVANT

Left_Servo.attach(9); // Servo de roue gauche à la broche 9

Left_Servo.write(90); // SERVO ROUE GAUCHE réglé sur STOP

Right_Servo.attach(10); // Servo de roue droite réglé sur la broche 10

Right_Servo.write(90); // SERVO ROUE DROIT réglé sur STOP delay (2000); // Attendre 2 secondes distance = readPing(); // Obtenir la distance de ping au délai de position directe (100); // Attendre 100 ms moveForward(); // LE ROBOT AVANCE } //------------------------------------------- -------------------------------------------------- ------------------------------------- boucle vide() { int distanceRight = 0; // Initie la distance US vers la droite à 0 int distanceLeft = 0; // Initie la distance US vers la gauche à 0 //US_Servo.write(90); // Servo central américain //delay(50); // US_Servo.write(70); // Regarde légèrement à droite // delay(250); // US_Servo.write(110); // Regarde légèrement à gauche // delay(250); // US_Servo.write(90); // Centre de recherche

if (distance <= 20) // Le robot avance { moveStop(); // Le robot S'ARRÊTE à distance = distanceLeft) // Décidez dans quelle direction tourner { turnRight(); // Le côté droit a la plus grande distance, LE ROBOT TOURNE À DROITE pendant un délai de 0,3 s (500); // Ce délai détermine la longueur du tour moveStop(); // Le robot s'ARRÊTE } else { turnLeft(); // Plus grande distance du côté gauche, ROBOT TOURNE À GAUCHE pour un délai de 0,3 s (500); // Ce délai détermine la longueur du tour moveStop(); // Le robot s'arrête } } else { moveForward(); // Le robot AVANCE } distance = readPing(); // US READS NEW PING pour le nouveau sens de déplacement } //----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight() // Capteur à ultrasons LOOK RIGHT FUNCTION { US_Servo.write(30); // Le servo US SE DÉPLACE À DROITE pour incliner le retard (500); int distance = readPing(); // Définir la valeur de ping pour le délai de droite (100); US_Servo.write(90); // Le servo US SE DÉPLACE AU CENTRE distance de retour; // La distance est définie } //------------------------------------------- -------------------------------------------------- ------------------------------------- int lookLeft() // Capteur à ultrasons LOOK LEFT FUNCTION { US_Servo.écrire(150); // Le servo US SE DÉPLACE À GAUCHE pour incliner le retard (500); int distance = readPing(); // Définir la valeur de ping pour le délai gauche (100); US_Servo.write(90); // Le servo US SE DÉPLACE AU CENTRE distance de retour; // La distance est définie } //------------------------------------------- -------------------------------------------------- ------------------------------------- int readPing() // Lecture de la fonction Ping pour le capteur à ultrasons. { retard (100); // 100 ms entre les pings (temps de ping min = 0,29 ms) int cm = sonar.ping_cm(); // La distance PING est rassemblée et définie en cm if (cm==0) { cm=250; } renvoie cm; } //------------------------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop() // ROBOT STOP { Left_Servo.write(90); // LeftServo 180 avant, 0 arrière Right_Servo.write(90); // RightServo 0 avant, 180 arrière } //---------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward() // ROBOT FORWARD { Left_Servo.écrire(180); // LeftServo 180 avant, 0 arrière Right_Servo.write(0); // RightServo 0 avant, 180 arrière } //---------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward() // ROBOT BACKWARD { Left_Servo.write(0); // LeftServo 180 avant, 0 arrière Right_Servo.write(180); // RightServo 0 avant, 180 arrière } //---------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight() // ROBOT RIGHT { Left_Servo.écrire(180); // LeftServo 180 avant, 0 arrière Right_Servo.write(90); // RightServo 0 avant, 180 arrière } //---------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft() // ROBOT GAUCHE { Left_Servo.write(90); // LeftServo 180 avant, 0 arrière Right_Servo.write(0); // RightServo 0 avant, 180 arrière } //---------------------------------------- -------------------------------------------------- ----------------------------------------

Étape 3: Assembler le robot

Image
Image
Assembler le robot
Assembler le robot
Assembler le robot
Assembler le robot

Il est maintenant temps de monter votre robot. Les étapes sont énumérées ci-dessous.

1) Fixez le disque de servomoteur rond et les bandes de caoutchouc aux roues: tous les servos sont livrés avec du matériel de montage en plastique et des vis. Trouvez les disques ronds et vissez-les dans les deux trous sur le côté plat des roues. Les élastiques s'ajustent autour de la roue pour assurer l'adhérence. Vous pouvez ajouter un peu de colle pour maintenir les élastiques en place.

2) Fixation de la roulette en marbre: utilisez deux petites vis pour fixer la roulette en marbre aux deux triangles à l'arrière. La roulette en marbre remplace simplement une roue arrière et fournit un point de pivot arrière.

3) Insérez les servos dans les fentes (aucune vis nécessaire): placez le servo FS90 (pour le capteur à ultrasons) dans la fente avant du corps. Les deux servos à rotation continue glissent dans les fentes gauche et droite. Les fentes sont conçues pour un ajustement serré, de sorte qu'aucune vis n'est nécessaire pour maintenir les servos en place. Assurez-vous que les câbles des servos passent dans les rainures des fentes de manière à ce qu'ils soient orientés vers l'arrière du corps.

4) Placement de la batterie 9V (FACULTATIF): placez la batterie 9V + le connecteur d'alimentation Arduino derrière le servo avant.

5) Assemblage de montage du capteur à ultrasons: utilisez deux petites vis pour fixer l'un des accessoires de servo en plastique blanc inclus au bas de la plaque de montage du capteur à ultrasons. Ensuite, utilisez le boulon/écrou de 6 mm imprimé en 3D (ou remplacez un boulon/écrou en métal) pour fixer le boîtier du capteur à ultrasons à la plaque de montage. Enfin, placez le capteur dans le boîtier avec les broches vers le haut et enclenchez l'arrière du boîtier.

6) Boîtier de 4 piles AA: placez le boîtier de piles AA dans la grande zone rectangulaire, avec l'interrupteur marche/arrêt tourné vers l'arrière.

7) Blindage de capteur Arduino Uno + V5: Fixez le blindage à l'Arduino et placez-le sur les supports au-dessus du boîtier de la batterie. Le connecteur d'alimentation doit être orienté vers la gauche.

Votre robot est construit ! Ce qui reste? Programmation de l'Arduino et connexion des cavaliers: servos, capteur à ultrasons et alimentation.

Étape 4: Fixez les fils du capteur

Image
Image
Fini!!! Connectez l'alimentation Arduino 9V, allumez la batterie et commencez à éviter les obstacles avec OAREE
Fini!!! Connectez l'alimentation Arduino 9V, allumez la batterie et commencez à éviter les obstacles avec OAREE

Connectez les fils du servo au blindage V5:

  1. Le servomoteur à rotation continue gauche se fixe à la broche 9
  2. Le servomoteur à rotation continue droit se fixe à la broche 10
  3. Le servo avant FS90 se fixe à la broche 11

Connectez les broches du capteur à ultrasons (via 4 câbles de raccordement femelle à femelle) au blindage V5:

  1. Déclencher sur PIN 12
  2. Écho au PIN 13
  3. VCC à l'une des broches marquées d'un « V »
  4. Mettez à la terre l'une des broches marquées d'un « G »

Connectez le boîtier des piles AA au blindage V5:

  1. Fixez le fil rouge positif au connecteur VCC
  2. Fixez le fil noir négatif à la connexion à la terre

Étape 5: Terminé !!! Connectez l'alimentation Arduino 9V, allumez la batterie et commencez à éviter les obstacles avec OAREE

Image
Image
Fini!!! Connectez l'alimentation Arduino 9V, allumez la batterie et commencez à éviter les obstacles avec OAREE
Fini!!! Connectez l'alimentation Arduino 9V, allumez la batterie et commencez à éviter les obstacles avec OAREE

Fini!

1) Connectez l'alimentation 9V Arduino (en option)

2) Allumez la batterie

3) Commencez à éviter les obstacles avec OAREE !!!

Je suis sûr que vous aimerez votre nouvel ami, OAREE, après l'avoir vu détecter un obstacle, reculer et changer de direction. OAREE fonctionne mieux avec des objets volumineux sur lesquels le capteur à ultrasons peut détecter (comme les murs). Il a du mal à cingler les petits objets comme les pieds de chaise en raison de leur petite surface et de leurs coins. Veuillez partager, développer davantage et me faire part de tout ajustement ou erreur nécessaire. Cela a été une excellente expérience d'apprentissage et j'espère que vous aurez autant de plaisir à réaliser ce projet que moi !

Concours de robotique
Concours de robotique
Concours de robotique
Concours de robotique

Finaliste du concours de robotique

Conseillé: