Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Maak je eerste Arduino-robot - De beste beginnersgids!

Componenten en benodigdheden

Arduino UNO
× 1
Adafruit L293D Motor Shield
Het is een goedkoop apparaat en gemakkelijk te gebruiken. Het is een algemeen verkrijgbaar motorschild waarvoor geen eerdere vaardigheden vereist zijn. Het kan ook eenvoudig worden geprogrammeerd met behulp van de Adafruit-bibliotheek.
× 1
HC-SR4 ultrasone sensor
× 1
HC-05 Bluetooth-module
× 1
Reductoren
× 2
Wiel
× 2
Zweefwiel
× 2
9V-batterij (algemeen)
× 3
9V batterijclip
× 3
Vrouwelijke/vrouwelijke verbindingsdraden
× 8
Plastic doos
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Hot lijmpistool (algemeen)
Schroevendraaier

Apps en online services

Bluetooth-elektronica
Arduino IDE
Adafruit-Motor-Shield-library

Over dit project

Als je een beginner bent in Arduino en een plan hebt om je eerste robot te maken, dan is hier de tutorial voor jou. Kijk naar de afbeeldingen van wat je vandaag gaat bouwen.

In deze tutorial ga ik laten zien hoe je een Arduino robot maakt met verschillende functionaliteiten. We kunnen het gebruik van verschillende programma's voor verschillende functies leren, voornamelijk een door een smartphone bestuurde robot met obstakelvermijder, muurvolger en doolhofoplosser. Of je kunt het ook voor slechts één functie maken.

Materialen en gereedschappen

Stap 2:Het chassis maken

Boor twee gaten voor motor:

Sluit twee motoren aan:

Maak drie gaten voor het zwenkwiel:

Sluit het zwenkwiel aan:

Maak twee gaten aan weerszijden van de doos voor het aansluiten van de motoren en drie gaten aan de onderkant voor het aansluiten van het zwenkwiel na het meten en markeren van de juiste diameter. Installeer vervolgens de motoren en het zwenkwiel.

Batterijen

De batterijen aansluiten.

Verbindingsdiagram.

Lijm de batterijen in de doos.

Monteer twee 9 volt batterijen in de doos boven het zwenkwiel. Sluit ze vervolgens parallel aan en sluit een schakelaar aan zoals weergegeven in het bovenstaande diagram.

De Arduino en Motor Shield aansluiten

Bevestig het motorschild boven de Arduino.

Sluit de batterijdraden aan op de PWR klemmen van motorafscherming.

Sluit de motoren aan op de motorafscherming.

Verwijder de jumper van deze poort.

Sluit het motorschild boven de Arduino aan en plaats deze boven de batterij. Sluit vervolgens de draden van de motoren en de accu aan op het motorscherm. Bekijk het aansluitschema voordat u verbinding maakt, want dit is erg belangrijk.

Bedradingsinstructies:

  • Sluit de linker motor aan op "M1" van motorafscherming
  • Sluit de juiste motor aan op "M3" van motorafscherming
  • Sluit de draad van de batterij aan op "ext pwr" van het motorscherm

Maak twee gaten en voed de Arduino

Markeer de plek om gaten te maken.

Maak de gaten.

Sluit de batterijclip aan op de mannelijke DC-aansluiting op de 9V-batterij.

Plaats deze 9 volt batterij in de doos.

Maak twee gaten voor toegang tot de USB-poort en de DC-invoerpoort van de Arduino. Neem nog een 9 volt batterij en sluit een batterijclip aan op een DC mannelijke jack-adapter, sluit vervolgens de DC mannelijke jack aan op de Arduino DC-ingang om de Arduino van stroom te voorzien. Plaats vervolgens de batterij tussen de motoren en Arduino in de doos.

Bluetooth-module en schakelaar verbinden

Sluit de Bluetooth-module aan op de Arduino zoals weergegeven in het aansluitschema en plaats deze in de doos. Maak vervolgens een gat om de schakelaar aan de achterkant van de doos te monteren en sluit de schakelaar aan (hier heb ik de schakelaar die eerder werd gebruikt vanwege een soldeerprobleem gewijzigd).

Bekabelingsinstructie van Bluetooth-module:

  • "TX" van Bluetooth-module gaat naar "RX" van Arduino
  • "RX" van Bluetooth-module gaat naar "TX" van Arduino
  • "VCC" van Bluetooth-module gaat naar "5v" van Arduino
  • "GND" van Bluetooth-module gaat naar "GND" van Arduino
  • De status- en sleutelpinnen van de BT-modules blijven ongebruikt.

Algemeen schakelschema

Ultrasone sensormontage

Neem de ultrasone sensor en lijm er een klein 'L'-vormig plastic stukje op en plak het op de plastic doos (of als je geen lijmstift hebt, gebruik dan dubbelzijdig plakband). Sluit vervolgens de jumperdraden aan zoals weergegeven in het bovenstaande schakelschema.

Bekabelingsinstructie van ultrasone sensor:

  • "VCC" van ultrasone sensor gaat naar "+5" van Arduino
  • "GND" van ultrasone sensor gaat naar "GND" van Arduino
  • "Trig"-pin van ultrasonische sensor gaat naar "Analoge pin 1" van Arduino
  • "Echo"-pin van ultrasone sensor gaat naar "Analoge pin 0" van Arduino

Nu hebben we alle verbindingen voltooid en is het tijd om te programmeren.

Laatste stap - Arduino-codes en bewerken van Bluetooth-app

Upload de "Definitieve schets " in de codesectie. Als je een fout tegenkomt, zorg er dan voor dat je de AFmotor-bibliotheek hebt geïnstalleerd.

Nu hebben we geleerd hoe we eenvoudig een Arduino kunnen programmeren. Ik heb hier enkele programma's getoond om deze robot te laten werken als een robot die obstakels ontwijkt, een muurvolger en Bluetooth-gestuurd. en eindelijk heb ik deze drie functies gecombineerd. Bekijk de video voor meer details en informatie

Aan de slag met de Bluetooth-app

Leuk met Wall Follower &Obstacle Avoidance

Bezoek mijn blog hier - robotechmaker.com

Als u vragen of suggesties heeft, kunt u hieronder reageren.

Code

  • Bluetooth (gestuurde robot) schets
  • Definitieve schets (eindcode)
  • Schets van obstakelvermijder
  • Schets van muurvolger
Bluetooth (gestuurde robot) schetsArduino
/*Auteur:Marcelo Moraes Dit project bevat code voor het publieke domein. De wijziging is toegestaan ​​zonder kennisgeving. *///Libraries#include //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // maak motor #1, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // maak motor #3, 64KHz pwm//Constanten en variabelechar dataIn ='S';char determinant;char det;int vel =0; // Bluetooth Stuffvoid setup () {Serial.begin (9600); // stel seriële bibliotheek in op 9600 bps // Initialisatieberichten Serial.println ("ArduinoBymyself - ROVERBot"); Serial.println ("AF-motortest!"); // zet motoren motorRight.setSpeed ​​(0) uit; motorLinks.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE); }void loop() { det =check(); //call check() subrotine om de seriële code te krijgen //serial code analysis switch (det){ case 'F':// F, move forward motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'B':// B, ga terug motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(ACHTERUIT); motorLinks.run(ACHTERUIT); det =check(); pauze; case 'L':// L, verplaats wielen naar links motorRight.setSpeed(vel); motorLinks.setSpeed(vel/4); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'R':// R, verplaats wielen naar rechts motorRight.setSpeed(vel/4); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'I':// I, draai rechts vooruit motorRight.setSpeed(vel/2); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'J':// J, draai rechts terug motorRight.setSpeed(vel/2); motorLinks.setSpeed(vel); motorRight.run(ACHTERUIT); motorLinks.run(ACHTERUIT); det =check(); pauze; case 'G':// G, draai links vooruit motorRight.setSpeed(vel); motorLinks.setSpeed(vel/2); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'H':// H, draai links terug motorRight.setSpeed(vel); motorLinks.setSpeed(vel/2); motorRight.run(ACHTERUIT); motorLinks.run(ACHTERUIT); det =check(); pauze; case 'S':// S, stop motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det =check(); pauze; }}// ontvang bluetooth-code ontvangen van seriële poort check(){ if (Serial.available()> 0){// if er zijn geldige gegevens in de seriële poort dataIn =Serial.read();// slaat gegevens op in een varialbe //check de code if (dataIn =='F'){//Forward determinant ='F'; } else if (dataIn =='B'){//Achterwaartse determinant ='B'; } else if (dataIn =='L'){//Links determinant ='L'; } else if (dataIn =='R'){//Right determinant ='R'; } else if (dataIn =='I'){//Froward Right determinant ='I'; } else if (dataIn =='J'){//Backward Right determinant ='J'; } else if (dataIn =='G'){//Forward Left determinant ='G'; } else if (dataIn =='H'){//Terug naar links determinant ='H'; } else if (dataIn =='S'){//Stop determinant ='S'; } else if (dataIn =='0'){//Snelheid 0 vel =0; } else if (dataIn =='1'){//Snelheid 25 vel =25; } else if (dataIn =='2'){//Snelheid 50 vel =50; } else if (dataIn =='3'){//Snelheid 75 vel =75; } else if (dataIn =='4'){//Snelheid 100 vel =100; } else if (dataIn =='5'){//Snelheid 125 vel =125; } else if (dataIn =='6'){//Snelheid 150 vel =150; } else if (dataIn =='7'){//Snelheid 175 vel =175; } else if (dataIn =='8'){//Snelheid 200 vel =200; } else if (dataIn =='9'){//Snelheid 225 vel =225; } else if (dataIn =='q'){//Snelheid 255 vel =255; } else if (dataIn =='U'){//Back Lights On determinant ='U'; } else if (dataIn =='u'){//Back Lights Off determinant ='u'; } else if (dataIn =='W'){//Front Lights On determinant ='W'; } else if (dataIn =='w'){//Front Lights Off determinant ='w'; } else if (dataIn =='V'){//Horn On determinant ='V'; } else if (dataIn =='v'){//Horn Off determinant ='v'; } else if (dataIn =='X'){//Extra On determinant ='X'; } else if (dataIn =='x'){//Extra Uit-determinant ='x'; } } determinant van het rendement;}
Definitieve schets (eindcode)Arduino
/*Auteur:Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // definieer de pinnen van uw sensor#define echoPin 15 //ObjectsAF_DCMotor motorRight(1, MOTOR12_64KHZ); // maak motor #1, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // maak motor #3, 64KHz pwm//Constanten en variabelechar dataIn ='S';char determinant;char det;int vel =255; // Bluetooth Stuffvoid setup () {Serial.begin (9600); // stel seriële bibliotheek in op 9600 bps pinMode (trigPin, OUTPUT);// stel de trig-pin in op output (Send soundwaves) pinMode (echoPin, INPUT);// stel de echo-pin in op input (ontvang geluidsgolven) // /Initaliseringsberichten Serial.println ("Mr.robot"); Serial.println ("Reday om te werken!"); // zet motoren motorRight.setSpeed ​​(0) uit; motorLinks.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop() { det =check(); //call check() subrotine om de seriële code te krijgen //serial code analysis switch (det){ case 'F':// F, move forward motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'B':// B, ga terug motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(ACHTERUIT); motorLinks.run(ACHTERUIT); det =check(); pauze; case 'L':// L, verplaats wielen naar links motorRight.setSpeed(vel); motorLinks.setSpeed(vel/4); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'R':// R, verplaats wielen naar rechts motorRight.setSpeed(vel/4); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'I':// I, draai rechts vooruit motorRight.setSpeed(vel/2); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'J':// J, draai rechts terug motorRight.setSpeed(vel/2); motorLinks.setSpeed(vel); motorRight.run(ACHTERUIT); motorLinks.run(ACHTERUIT); det =check(); pauze; case 'G':// G, draai links vooruit motorRight.setSpeed(vel); motorLinks.setSpeed(vel/2); motorRight.run(VOORUIT); motorLinks.lopen(VOORUIT); det =check(); pauze; case 'H':// H, draai links terug motorRight.setSpeed(vel); motorLinks.setSpeed(vel/2); motorRight.run(ACHTERUIT); motorLinks.run(ACHTERUIT); det =check(); pauze; case 'S':// S, stop motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(RELEASE); motorLeft.run(RELEASE); det =check(); pauze; case 'm'://voor muurvolgerrobot. motorRight.setSpeed(vel); // stel de snelheid van de motoren in, tussen 0-255 motorLeft.setSpeed ​​(vel); lange duur, afstand; // start de scan digitalWrite (trigPin, LOW); vertragingMicroseconden(2); // vertragingen zijn vereist voor een succesvolle sensorwerking. digitalWrite(trigPin, HOOG); vertraging Microseconden (10); // deze vertraging is ook vereist! digitalWrite(trigPin, LAAG); duur =pulseIn(echoPin, HOOG); afstand =(duur/2) / 29.1;// zet de afstand om in centimeters. if (afstand <30)/*De afstand die moet worden gehouden met de muur */ { Serial.println ("Muur is verwijderd!" );Serial.println (" Begonnen met het volgen van de muur ");Serial.println (" Draaien !"); motorRight.setSpeed(vel); motorLinks.setSpeed(0); motorRight.run(VOORUIT); motorLeft.run(RELEASE); vertraging (500); // wacht even} else { Serial.println ("Geen muur gedetecteerd. Draait om"); vertraging (15); motorRight.setSpeed(0); motorLinks.setSpeed(vel); motorRight.run(RELEASE); motorLinks draaien (VOORUIT); } pauze; geval 'b':// obstakelvermijder robot motorRight.setSpeed(vel); // stel de snelheid van de motoren in, tussen 0-255 motorLeft.setSpeed ​​(vel); lange bewondering, afstand; // start de scan digitalWrite (trigPin, LOW); vertragingMicroseconden(2); // vertragingen zijn vereist voor een succesvolle sensorwerking. digitalWrite(trigPin, HOOG); vertraging Microseconden (10); // deze vertraging is ook vereist! digitalWrite(trigPin, LAAG); Aduratie =pulseIn (echoPin, HOOG); Adistance =(Aduration/2) / 29.1;// zet de afstand om in centimeters. if (afstand <25)/*als er een obstakel is 25 centimeter, vooruit, doe het volgende:*/ { Serial.println ("Sluit obstakel gedetecteerd!" );Serial.println ("Obstacle Details:");Serial.print ("Distance From Robot is " );Serial.print ( Adistance);Serial.print (" CM!");// print de afstand in centimeters.Serial.println (" Het obstakel wordt als een bedreiging bestempeld vanwege de korte afstand . ");Serial.println (" Draaien !"); motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorLinks.run(ACHTERUIT); // Draai zolang er een obstakel voor je ligt. motorRight.run (FORWARD);} else { Serial.println ("Geen obstakel gedetecteerd. gaat vooruit"); vertraging (15); motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); //Als er geen obstakel voor de boeg is, ga dan vooruit! motorLinks.lopen(VOORUIT); } pauze; }}// ontvang bluetooth-code ontvangen van seriële poort check(){ if (Serial.available()> 0){// if er zijn geldige gegevens in de seriële poort dataIn =Serial.read();// slaat gegevens op in a varialbe//check de code if (dataIn =='F'){//Forward determinant ='F'; } else if (dataIn =='B'){//Achterwaartse determinant ='B'; } else if (dataIn =='L'){//Links determinant ='L'; } else if (dataIn =='R'){//Right determinant ='R'; } else if (dataIn =='I'){//Froward Right determinant ='I'; } else if (dataIn =='J'){//Backward Right determinant ='J'; } else if (dataIn =='G'){//Forward Left determinant ='G'; } else if (dataIn =='H'){//Terug naar links determinant ='H'; } else if (dataIn =='S'){//Stop determinant ='S'; } else if (dataIn =='0'){//Snelheid 0 vel =0; } else if (dataIn =='1'){//Snelheid 25 vel =25; } else if (dataIn =='2'){//Snelheid 50 vel =50; } else if (dataIn =='3'){//Snelheid 75 vel =75; } else if (dataIn =='4'){//Snelheid 100 vel =100; } else if (dataIn =='5'){//Snelheid 125 vel =125; } else if (dataIn =='6'){//Snelheid 150 vel =150; } else if (dataIn =='7'){//Snelheid 175 vel =175; } else if (dataIn =='8'){//Snelheid 200 vel =200; } else if (dataIn =='9'){//Snelheid 225 vel =225; } else if (dataIn =='b'){//Extra On determinant ='b'; } else if (dataIn =='m'){//Extra On determinant ='m'; } } determinant van het rendement;}
Obstacle Avoider SketchArduino
/*Auteur:Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // definieer de pinnen van uw sensor#define echoPin 15 int vel =255; // Snelheid van de robot//ObjectsAF_DCMotor motorRight (1, MOTOR12_64KHZ); // maak motor #1, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // maak motor #3, 64KHz pwmvoid setup() {Serial.begin (9600); // stel seriële bibliotheek in op 9600 bps pinMode (trigPin, OUTPUT);// stel de trig-pin in op output (Send soundwaves) pinMode (echoPin, INPUT);// stel de echo-pin in op input (ontvang geluidsgolven) // /Initaliseringsberichten Serial.println ("Mr.robot"); Serial.println ("Reday om te werken!"); // zet motoren motorRight.setSpeed ​​(0) uit; motorLinks.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop() {//obstakelvermijder robot motorRight.setSpeed(vel); // stel de snelheid van de motoren in, tussen 0-255 motorLeft.setSpeed ​​(vel); lange duur, afstand; // start de scan digitalWrite (trigPin, LOW); vertragingMicroseconden(2); // vertragingen zijn vereist voor een succesvolle sensorwerking. digitalWrite(trigPin, HOOG); vertraging Microseconden (10); // deze vertraging is ook vereist! digitalWrite(trigPin, LAAG); duur =pulseIn(echoPin, HOOG); afstand =(duur/2) / 29.1;// zet de afstand om in centimeters. if (afstand <25)/*als er een obstakel is 25 centimeter, vooruit, doe het volgende:*/ { Serial.println ("Sluit obstakel gedetecteerd!" );Serial.println ("Obstacle Details:");Serial.print ("Distance From Robot is " );Serial.print ( distance);Serial.print (" CM!");// print de afstand in centimeters.Serial.println (" Het obstakel wordt als een bedreiging bestempeld vanwege de korte afstand . ");Serial.println (" Draaien !"); motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorLinks.run(ACHTERUIT); // Draai zolang er een obstakel voor je ligt. motorRight.run (FORWARD);} else { Serial.println ("Geen obstakel gedetecteerd. gaat vooruit"); vertraging (15); motorRight.setSpeed(vel); motorLinks.setSpeed(vel); motorRight.run(VOORUIT); // als er geen obstakel voor de boeg is, ga dan vooruit! motorLinks.lopen(VOORUIT); } } 
Muurvolger SchetsArduino
/*Auteur:Muhammed Azharvisit - robotechmaker.com*/#include #define trigPin 14 // definieer de pinnen van uw sensor#define echoPin 15 int vel =255; // Snelheid van de robot // ObjectsAF_DCMotor motorRight (1, MOTOR12_64KHZ); // maak motor #1, 64KHz pwmAF_DCMotor motorLeft (3, MOTOR12_64KHZ); // maak motor #3, 64KHz pwmvoid setup(){Serial.begin(9600); // stel seriële bibliotheek in op 9600 bps pinMode (trigPin, OUTPUT);// stel de trig-pin in op output (Send soundwaves) pinMode (echoPin, INPUT);// stel de echo-pin in op input (ontvang geluidsgolven) // /Initaliseringsberichten Serial.println ("Mr.robot"); Serial.println ("Reday om te werken!"); // zet motoren motorRight.setSpeed ​​(0) uit; motorLinks.setSpeed(0); motorRight.run(RELEASE); motorLeft.run(RELEASE);}void loop(){ // for wall follower robot. motorRight.setSpeed(vel); // stel de snelheid van de motoren in, tussen 0-255 motorLeft.setSpeed ​​(vel); lange duur, afstand; // start de scan digitalWrite (trigPin, LOW); vertragingMicroseconden(2); // vertragingen zijn vereist voor een succesvolle sensorwerking. digitalWrite(trigPin, HOOG); vertraging Microseconden (10); // deze vertraging is ook vereist! digitalWrite(trigPin, LAAG); duur =pulseIn(echoPin, HOOG); afstand =(duur / 2) / 29,1;// zet de afstand om in centimeters. if (afstand <30)/*De afstand die moet worden gehouden met de muur */ { Serial.println("Muur is verwijderd!"); Serial.println(" Begonnen met het volgen van de muur "); Serial.println(" Draait !"); motorRight.setSpeed(vel); motorLinks.setSpeed(0); motorRight.run(VOORUIT); motorLinks.run(RELEASE); vertraging (500); // wacht even } else { Serial.println ("Geen muur gedetecteerd. Draait om"); vertraging (15); motorRight.setSpeed(0); motorLinks.setSpeed(vel); motorRight.run(RELEASE); motorLinks.lopen(VOORUIT); }}

Schema's


Productieproces

  1. De beste accessoires voor je Raspberry Pi
  2. Praktische tips voor het bijhouden van activa:hoe u uw zuurverdiende activagegevens optimaal kunt benutten
  3. Hoe u nu het beste uit uw toeleveringsketen haalt
  4. Robot voor supercoole indoornavigatie
  5. Motorsteunen 101:de gids voor het kiezen van het beste motormontagemateriaal
  6. Uw ultieme gids voor de beste industriële landbouwproducten
  7. Uw gids voor de beste kraanmerken
  8. De beste koopgids voor 3D-printers voor uw machinewerkplaats
  9. De beste manier om uw IoT-prototype te bouwen
  10. CNC draadvonken:uw beste vriend in de werkplaats
  11. Kies de beste freesboor voor uw taak