Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Créez votre premier robot Arduino - Le meilleur guide pour débutants !

Composants et fournitures

Arduino UNO
× 1
Adafruit L293D Motor Shield
C'est un appareil à faible coût et facile à utiliser. C'est un bouclier moteur couramment disponible qui ne nécessite aucune compétence préalable. Il peut également être programmé facilement à l'aide de la bibliothèque Adafruit.
× 1
Capteur à ultrasons HC-SR4
× 1
Module Bluetooth HC-05
× 1
Motoréducteur
× 2
Roue
× 2
Roue pivotante
× 2
Batterie 9V (générique)
× 3
Clip de batterie 9V
× 3
Câbles de raccordement femelle/femelle
× 8
Boîte en plastique
× 1

Outils et machines nécessaires

Fer à souder (générique)
Pistolet à colle chaude (générique)
Tournevis

Applications et services en ligne

Électronique Bluetooth
Arduino IDE
Adafruit-Motor-Shield-library

À propos de ce projet

Si vous êtes débutant en Arduino et que vous avez l'intention de créer votre premier robot, voici le tutoriel pour vous. Regardez les images de ce que vous allez construire, aujourd'hui.

Dans ce tutoriel, je vais montrer comment faire un robot Arduino avec différentes fonctionnalités. Nous pouvons apprendre à utiliser différents programmes pour différentes fonctions, principalement un robot contrôlé par téléphone intelligent avec éviteur d'obstacles, suiveur de mur et résolveur de labyrinthe. Ou vous pouvez également le faire pour une seule fonction.

Matériaux et outils

Étape 2 :fabrication du châssis

Percez deux trous pour le moteur :

Connectez deux moteurs :

Faites trois trous pour la roulette :

Connectez la roulette :

Faites deux trous de chaque côté de la boîte pour connecter les moteurs et trois trous en bas pour connecter la roulette après avoir mesuré et marqué le bon diamètre. Installez ensuite les moteurs et la roulette.

Piles

Branchement des batteries.

Diagramme de connexion.

Collez les piles à l'intérieur de la boîte.

Montez deux piles de 9 volts à l'intérieur du boîtier au-dessus de la roulette. Ensuite, câblez-les en parallèle et connectez un interrupteur comme indiqué dans le schéma ci-dessus.

Connexion de l'Arduino et du blindage moteur

Fixez le blindage du moteur au-dessus de l'Arduino.

Connectez les fils de la batterie au PWR bornes du blindage du moteur.

Connectez les moteurs au blindage du moteur.

Retirez le cavalier de ce port.

Connectez le blindage du moteur au-dessus de l'Arduino et placez-le au-dessus de la batterie. Connectez ensuite les fils des moteurs et de la batterie au blindage du moteur. Consultez le schéma de connexion avant de connecter, car il est très important.

Instructions de câblage :

  • Connectez le moteur gauche à "M1" du blindage du moteur
  • Connectez le moteur droit au "M3" du blindage du moteur
  • Connectez le fil de la batterie à "ext pwr" du blindage du moteur

Faites deux trous et alimentez l'Arduino

Marquez l'endroit pour faire des trous.

Faites les trous.

Connectez le clip de la batterie à la prise mâle DC à la batterie 9V.

Placez cette pile 9 volts à l'intérieur de la boîte.

Faites deux trous pour accéder au port USB et au port d'entrée DC de l'Arduino. Prenez une autre batterie de 9 volts et connectez un clip de batterie à un adaptateur de prise mâle CC, puis connectez la prise mâle CC au port d'entrée Arduino DC, pour alimenter l'Arduino. Placez ensuite la batterie entre les moteurs et l'Arduino à l'intérieur du boîtier.

Connexion du module et du commutateur Bluetooth

Connectez le module Bluetooth à l'Arduino comme indiqué dans le schéma de connexion et placez-le à l'intérieur de la boîte. Faites ensuite un trou pour monter l'interrupteur à l'arrière du boîtier et connectez l'interrupteur (ici j'ai changé l'interrupteur qui était utilisé plus tôt à cause d'un problème de soudure).

Instruction de câblage du module Bluetooth :

  • "TX" du module Bluetooth va à "RX" d'Arduino
  • "RX" du module Bluetooth va à "TX" d'Arduino
  • "VCC" du module Bluetooth passe à "5v" d'Arduino
  • "GND" du module Bluetooth passe à "GND" d'Arduino
  • Les broches State &Key des modules BT ne sont pas utilisées.

Schéma de circuit global

Montage du capteur par ultrasons

Prenez le capteur à ultrasons et collez-y un petit morceau de plastique en forme de "L" et collez-le sur le dessus de la boîte en plastique (ou si vous n'avez pas de bâton de colle, utilisez du ruban adhésif double face). Ensuite, connectez les fils volants comme indiqué dans le schéma de circuit ci-dessus.

Instruction de câblage du capteur à ultrasons :

  • "VCC" du capteur Ultra sonic passe à "+5" d'Arduino
  • "GND" du capteur Ultra sonique passe à "GND" d'Arduino
  • La broche "Trig" du capteur Ultra sonic va à la "Broche analogique 1" d'Arduino
  • La broche "Echo" du capteur Ultra sonic va à la "Broche analogique 0" d'Arduino

Nous avons maintenant terminé toutes les connexions et il est temps de programmer.

Dernière étape - Codes Arduino et édition d'applications Bluetooth

Téléchargez le "Esquisse finale " fourni dans la section code. Si vous rencontrez une erreur, assurez-vous d'avoir installé la bibliothèque AFmotor.

Maintenant, nous avons appris à programmer un Arduino facilement. J'ai montré ici quelques programmes pour faire fonctionner ce robot comme un obstacle évitant le robot, le suiveur de mur et le contrôle Bluetooth. et enfin j'ai combiné ces trois fonctions ensemble. Regardez la vidéo pour plus de détails et d'informations

Premiers pas avec l'application Bluetooth

Amusez-vous avec Wall Follower &Obstacle Avoidance

Visitez mon blog ici - robotechmaker.com

Si vous avez des questions ou des suggestions, veuillez commenter ci-dessous.

Code

  • Croquis Bluetooth (robot contrôlé)
  • Esquisse finale (code final)
  • Esquisse d'évitement d'obstacles
  • Esquisse du suiveur de mur
Croquis Bluetooth (robot contrôlé)Arduino
/*Auteur :Marcelo Moraes Ce projet contient du code du domaine public. La modification est autorisée sans préavis. *///Bibliothèques#include //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // créer le moteur #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // crée le moteur #3, 64KHz pwm//Constantes et variablechar dataIn ='S';char déterminant;char det;int vel =0; //Configuration Bluetooth Stuffvoid() { Serial.begin(9600); // configurer la bibliothèque série à 9600 bps //Messages d'initialisation Serial.println("ArduinoBymyself - ROVERBot"); Serial.println(" Test du moteur AF !"); // éteindre les moteurs motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE); }boucle vide() { det =check(); //appelez le sous-programme check() pour obtenir le code série //commutateur d'analyse du code série (det){ case 'F' :// F, avancez motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'B' :// B, recule motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det =vérifier(); Pause; case 'L':// L, déplacez les roues vers la gauche motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'R' :// R, déplace les roues vers la droite motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'I' :// I, tournez à droite vers l'avant motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'J' :// J, tournez en arrière à droite motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det =vérifier(); Pause; case 'G' :// G, tournez à gauche vers l'avant motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'H' :// H, tourner à gauche motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det =vérifier(); Pause; case 'S' :// S, stop motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det =vérifier(); Pause; }}//obtenir le code Bluetooth reçu du port sériel check(){ if (Serial.available()> 0){// s'il y a des données valides dans le port série dataIn =Serial.read();// stocke les données dans un varialbe //vérifier le code if (dataIn =='F'){//Forward déterminant ='F'; } else if (dataIn =='B'){//Déterminant arrière ='B'; } else if (dataIn =='L'){//Left déterminant ='L'; } else if (dataIn =='R'){//Déterminant à droite ='R'; } else if (dataIn =='I'){//Froward Right déterminant ='I'; } else if (dataIn =='J'){//Déterminant arrière droit =​​'J'; } else if (dataIn =='G'){//Forward Left déterminant ='G'; } else if (dataIn =='H'){//Déterminant arrière gauche ='H'; } else if (dataIn =='S'){//Déterminant d'arrêt ='S'; } else if (dataIn =='0'){//Speed ​​0 vel =0; } else if (dataIn =='1'){//Speed ​​25 vel =25; } else if (dataIn =='2'){//Speed ​​50 vel =50; } else if (dataIn =='3'){//Speed ​​75 vel =75; } else if (dataIn =='4'){//Speed ​​100 vel =100; } else if (dataIn =='5'){//Speed ​​125 vel =125; } else if (dataIn =='6'){//Speed ​​150 vel =150; } else if (dataIn =='7'){//Speed ​​175 vel =175; } else if (dataIn =='8'){//Speed ​​200 vel =200; } else if (dataIn =='9'){//Speed ​​225 vel =225; } else if (dataIn =='q'){//Speed ​​255 vel =255; } else if (dataIn =='U'){//Back Lights On déterminant ='U'; } else if (dataIn =='u'){//Back Lights Off déterminant ='u'; } else if (dataIn =='W'){//Front Lights On déterminant ='W'; } else if (dataIn =='w'){//Front Lights Off déterminant ='w'; } else if (dataIn =='V'){//Horn On déterminant ='V'; } else if (dataIn =='v'){//Déterminant Horn Off ='v'; } else if (dataIn =='X'){//Extra On déterminant ='X'; } else if (dataIn =='x'){//Extra Off déterminant ='x'; } } retour déterminant;}
Esquisse finale (code final)Arduino
/*Auteur :Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // définit les broches de votre capteur#define echoPin 15 //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // créer le moteur #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // crée le moteur #3, 64KHz pwm//Constantes et variablechar dataIn ='S';char déterminant;char det;int vel =255; //Configuration Bluetooth Stuffvoid() { Serial.begin(9600); // configurer la bibliothèque série à 9600 bps pinMode (trigPin, OUTPUT); // définir la broche de déclenchement sur la sortie (Envoyer des ondes sonores) pinMode (echoPin, INPUT); // définir la broche d'écho sur l'entrée (recevoir des ondes sonores) / /Messages d'initialisation Serial.println("Mr.robot"); Serial.println(" Reday for work!"); // éteindre les moteurs motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop() { det =check(); //appelez le sous-programme check() pour obtenir le code série //commutateur d'analyse du code série (det){ case 'F' :// F, avancez motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'B' :// B, recule motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det =vérifier(); Pause; case 'L':// L, déplacez les roues vers la gauche motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'R' :// R, déplace les roues vers la droite motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'I' :// I, tournez à droite vers l'avant motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'J' :// J, tournez en arrière à droite motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det =vérifier(); Pause; case 'G' :// G, tournez à gauche vers l'avant motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(FORWARD); motorLeft.run(FORWARD); det =vérifier(); Pause; case 'H' :// H, tourner à gauche motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2); motorRight.run(BACKWARD); motorLeft.run(BACKWARD); det =vérifier(); Pause; case 'S' :// S, stop motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det =vérifier(); Pause; case 'm' ://pour le robot suiveur de mur. motorRight.setSpeed(vel); //définir la vitesse des moteurs, entre 0-255 motorLeft.setSpeed ​​(vel); longue durée, distance; // démarre le scan digitalWrite(trigPin, LOW); délaiMicrosecondes(2) ; // des retards sont nécessaires pour une opération de capteur réussie. digitalWrite(trigPin, HAUT); délaiMicrosecondes(10) ; //ce délai est également requis ! digitalWrite(trigPin, LOW); durée =pulseIn(echoPin, HIGH); distance =(durée/2) / 29,1;// convertir la distance en centimètres. if (distance <30)/*La distance qui doit rester avec le mur */ { Serial.println ("Le mur est dit!" );Serial.println (" Commencé en suivant le mur ");Serial.println (" Tournant !"); motorRight.setSpeed(vel); motorLeft.setSpeed(0); motorRight.run(FORWARD); motorLeft.run(RELEASE); retard (500); // attend une seconde} else { Serial.println ("Aucun mur détecté. se retourne"); retard (15) ; motorRight.setSpeed(0); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run (AVANT); } Pause; case 'b' :// robot éviteur d'obstacles motorRight.setSpeed(vel); //définir la vitesse des moteurs, entre 0-255 motorLeft.setSpeed ​​(vel); longue durée, à distance; // démarre le scan digitalWrite(trigPin, LOW); délaiMicrosecondes(2) ; // des retards sont nécessaires pour une opération de capteur réussie. digitalWrite(trigPin, HAUT); délaiMicrosecondes(10) ; //ce délai est également requis ! digitalWrite(trigPin, LOW); Durée =pulseIn(echoPin, HIGH); Adistance =(Aduration/2) / 29,1 ; // convertir la distance en centimètres. if (Adistance <25)/*s'il y a un obstacle à 25 centimètres devant vous, procédez comme suit :*/ { Serial.println ("Fermeture de l'obstacle détecté !" );Serial.println ("Détails de l'obstacle :");Serial.print ("Distance From Robot is " );Serial.print ( Adistance);Serial.print ( " CM!"); // imprimer la distance en centimètres.Serial.println (" L'obstacle est déclaré une menace en raison de la proximité . ");Serial.println (" Tournant !"); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorLeft.run(BACKWARD); // Tourne tant qu'il y a un obstacle devant. motorRight.run (FORWARD);} else { Serial.println ("Aucun obstacle détecté. avancer"); retard (15) ; motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); // s'il n'y a pas d'obstacle devant vous, allez de l'avant ! motorLeft.run(FORWARD); } Pause; }}//obtenir le code Bluetooth reçu du port sériel check(){ if (Serial.available()> 0){// s'il y a des données valides dans le port série dataIn =Serial.read();// stocke les données dans un varialbe//vérifier le code if (dataIn =='F'){//Forward déterminant ='F'; } else if (dataIn =='B'){//Déterminant arrière ='B'; } else if (dataIn =='L'){//Left déterminant ='L'; } else if (dataIn =='R'){//Déterminant à droite ='R'; } else if (dataIn =='I'){//Froward Right déterminant ='I'; } else if (dataIn =='J'){//Déterminant arrière droit =​​'J'; } else if (dataIn =='G'){//Forward Left déterminant ='G'; } else if (dataIn =='H'){//Déterminant arrière gauche ='H'; } else if (dataIn =='S'){//Déterminant d'arrêt ='S'; } else if (dataIn =='0'){//Speed ​​0 vel =0; } else if (dataIn =='1'){//Speed ​​25 vel =25; } else if (dataIn =='2'){//Speed ​​50 vel =50; } else if (dataIn =='3'){//Speed ​​75 vel =75; } else if (dataIn =='4'){//Speed ​​100 vel =100; } else if (dataIn =='5'){//Speed ​​125 vel =125; } else if (dataIn =='6'){//Speed ​​150 vel =150; } else if (dataIn =='7'){//Speed ​​175 vel =175; } else if (dataIn =='8'){//Speed ​​200 vel =200; } else if (dataIn =='9'){//Speed ​​225 vel =225; } else if (dataIn =='b'){//Extra On déterminant ='b'; } else if (dataIn =='m'){//Extra On déterminant ='m'; } } retour déterminant;}
Esquisse d'évitement d'obstaclesArduino
/*Auteur :Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // définit les broches de votre capteur#define echoPin 15 int vel =255 ; // Vitesse du robot//ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // créer le moteur #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // crée le moteur #3, 64KHz pwmvoid setup() { Serial.begin(9600); // configurer la bibliothèque série à 9600 bps pinMode (trigPin, OUTPUT); // définir la broche de déclenchement sur la sortie (Envoyer des ondes sonores) pinMode (echoPin, INPUT); // définir la broche d'écho sur l'entrée (recevoir des ondes sonores) / /Messages d'initialisation Serial.println("Mr.robot"); Serial.println(" Reday for work!"); // éteindre les moteurs motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop() { //robot évitant les obstacles motorRight.setSpeed(vel); //définir la vitesse des moteurs, entre 0-255 motorLeft.setSpeed ​​(vel); longue durée, distance; // démarre le scan digitalWrite(trigPin, LOW); délaiMicrosecondes(2) ; // des retards sont nécessaires pour une opération de capteur réussie. digitalWrite(trigPin, HAUT); délaiMicrosecondes(10) ; //ce délai est également requis ! digitalWrite(trigPin, LOW); durée =pulseIn(echoPin, HIGH); distance =(durée/2) / 29,1;// convertir la distance en centimètres. if (distance <25)/*s'il y a un obstacle à 25 centimètres devant vous, procédez comme suit :*/ { Serial.println ("Obstacle proche détecté !" );Serial.println ("Détails de l'obstacle :");Serial.print ("Distance From Robot is " );Serial.print ( distance);Serial.print ( " CM!"); // imprimer la distance en centimètres.Serial.println (" L'obstacle est déclaré une menace en raison de la proximité . ");Serial.println (" Tournant !"); motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorLeft.run(BACKWARD); // Tourne tant qu'il y a un obstacle devant. motorRight.run (FORWARD);} else { Serial.println ("Aucun obstacle détecté. avancer"); retard (15) ; motorRight.setSpeed(vel); motorLeft.setSpeed(vel); motorRight.run(FORWARD); // s'il n'y a pas d'obstacle devant vous, allez de l'avant ! motorLeft.run(FORWARD); } } 
Croquis du suiveur de murArduino
/*Auteur :Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // définit les broches de votre capteur#define echoPin 15 int vel =255 ; // Vitesse du robot //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // créer le moteur #1, 64KHz pwmAF_DCMotor motorLeft(3, MOTOR12_64KHZ); // crée le moteur #3, 64KHz pwmvoid setup(){ Serial.begin(9600); // configurer la bibliothèque série à 9600 bps pinMode (trigPin, OUTPUT); // définir la broche de déclenchement sur la sortie (Envoyer des ondes sonores) pinMode (echoPin, INPUT); // définir la broche d'écho sur l'entrée (recevoir des ondes sonores) / /Messages d'initialisation Serial.println("Mr.robot"); Serial.println(" Reday for work!"); // éteindre les moteurs motorRight.setSpeed(0); motorLeft.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop(){ //pour le robot suiveur de mur. motorRight.setSpeed(vel); //définir la vitesse des moteurs, entre 0-255 motorLeft.setSpeed(vel); longue durée, distance; // démarre le scan digitalWrite(trigPin, LOW); délaiMicrosecondes(2) ; // des retards sont nécessaires pour une opération de capteur réussie. digitalWrite(trigPin, HAUT); délaiMicrosecondes(10) ; //ce délai est également requis ! digitalWrite(trigPin, LOW); durée =pulseIn(echoPin, HIGH); distance =(durée / 2) / 29,1;// convertir la distance en centimètres. if (distance <30)/*La distance qui doit rester avec le mur */ { Serial.println("Le mur est dit!"); Serial.println(" Commencé en suivant le mur "); Serial.println(" Tournant !"); motorRight.setSpeed(vel); motorLeft.setSpeed(0); motorRight.run(FORWARD); motorLeft.run(RELEASE); retard (500); // attendre une seconde } else { Serial.println("Aucun mur détecté. se retourner"); retard (15); motorRight.setSpeed(0); motorLeft.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(FORWARD); }}

Schémas


Processus de fabrication

  1. Les meilleurs accessoires pour votre Raspberry Pi
  2. Meilleures pratiques en matière de suivi des actifs :comment tirer le meilleur parti de vos données d'actifs durement gagnées
  3. Comment tirer le meilleur parti de votre chaîne d'approvisionnement dès maintenant
  4. Robot pour une navigation intérieure super cool
  5. Supports de moteur 101 :Le guide pour choisir le meilleur matériau de support de moteur
  6. Votre guide ultime des meilleurs produits agricoles industriels
  7. Votre guide des meilleures marques de grues
  8. Le meilleur guide d'achat d'imprimantes 3D pour votre atelier d'usinage
  9. La meilleure façon de construire votre prototype IoT