Inhoudsopgave:

OAREE - 3D-geprint - obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino - Ajarnpa
OAREE - 3D-geprint - obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino - Ajarnpa

Video: OAREE - 3D-geprint - obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino - Ajarnpa

Video: OAREE - 3D-geprint - obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino - Ajarnpa
Video: Anycubic i3 MEGA+Klipper - офигенный апгрейд, почему я не сделал этого раньше!? #diy #3dprinting #3d 2024, Juni-
Anonim
Image
Image
OAREE - 3D-geprint - Obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino
OAREE - 3D-geprint - Obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino
OAREE - 3D-geprint - Obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino
OAREE - 3D-geprint - Obstakel vermijdende robot voor technisch onderwijs (OAREE) met Arduino

OAREE (Obstacle Avoiding Robot for Engineering Education)

Ontwerp: het doel van deze instructable was om een OAR-robot (Obstacle Avoiding Robot) te ontwerpen die eenvoudig/compact, 3D-afdrukbaar, eenvoudig te monteren was, servo's met continue rotatie gebruikt voor beweging en zo min mogelijk gekochte onderdelen heeft. Ik geloof dat ik erin geslaagd ben deze geweldige robot te maken en hem OAREE (Obstacle Avoiding Robot for Engineering Education) genoemd heb. Deze robot zal obstakels detecteren, stoppen, naar links en rechts kijken, dan in de onbelemmerde richting draaien en vooruit rijden.

Achtergrond: Het internet heeft talloze robots die obstakels vermijden, maar de meeste zijn omvangrijk, moeilijk in elkaar te zetten en duur. Veel van deze robots hebben Arduino-code geleverd, maar het was moeilijk om een goed doordacht, werkend voorbeeld te vinden. Ik wilde ook continu roterende servo's gebruiken voor de wielen (in plaats van DC-motoren), wat nog niet was gedaan. Dus begon ik aan een missie om een compacte, inventieve OAR-robot te ontwikkelen om met de wereld te delen.

Verdere ontwikkeling: deze robot kan verder worden ontwikkeld voor een betere ping-nauwkeurigheid, het toevoegen van IR-sensoren voor het volgen van lijnen, een LCD-scherm om de afstand tot obstakels weer te geven en nog veel meer.

Benodigdheden

  • 1x Arduino Uno -
  • 1x V5-sensorschild -
  • 1x 4xAA batterijhouder met aan/uit schakelaar -
  • 1x SG90-servo -
  • 2x continu roterende servo's -
  • 1x 9V batterijvoedingskabel voor Arduino (OPTIONEEL) -
  • 1x HC-SR04 ultrasone sensor -
  • 4x Female-Female Jumper Wires -
  • 2x Elastiekjes
  • 1x 9V Batterij (OPTIONEEL)
  • 4x AA-batterijen
  • 4x kleine schroeven (4 x 1/2 of iets dergelijks)
  • kruiskopschroevendraaier
  • Lijm voor het bevestigen van elastiekjes aan wielen

Stap 1: 3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging

3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging
3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging
3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging
3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging
3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging
3D-print: body, wielen, marmeren zwenkwiel, 6 mm bout/moer en ultrasone sensorbevestiging

Er zijn 5 onderdelen om te 3D printen.

  1. Lichaam
  2. Wielen
  3. Marmeren Caster
  4. 6 mm bout/moer (optioneel, een metalen moer/bout kan worden vervangen)
  5. Ultrasone sensorbevestiging

Alle vereiste. STL-bestanden zijn opgenomen in deze instructable, evenals de Sketchup-bestanden. 40% infill aanbevolen.

Stap 2: Programmeer de Arduino

Image
Image
Monteer de robot
Monteer de robot

Stuur code naar Arduino UNO: Stuur met behulp van de Arduino IDE de code (in het bijgevoegde bestand) naar uw Arduino-module. U moet de servo.h- en newping.h-bibliotheken downloaden en bij deze schets voegen.

De code is grondig becommentarieerd, zodat u kunt zien wat elke opdracht doet. Indien gewenst kunt u de afstand van de Ultrasone Sensor eenvoudig wijzigen in een grotere of kleinere waarde. Dit is een eerste code en is bedoeld om uit te breiden en te gebruiken voor verdere projectontwikkeling.

// OBSTACLE VERMIJDEN ROBOT// [email protected], [email protected], University of TN in Chattanooga, Electrical Engineering, HERFST 2019 // Benodigde materialen: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3) HCSR04 Ulrasone Sensor, 4) FS90 Servo (voor Ultrasone Sensor) // 5&6) 2x CONTINU ROTERENDE SERVOS voor de wielen // 7) 16 mm Marmer voor het achterste zwenkwiel, 8&9) 2 rubberen banden voor wielen // 10- 15) 1x (4xAA) Batterijhouder met aan/uit schakelaar, 16&17) 9V batterij met connector om Arduino UNO van stroom te voorzien // 3D PRINT: // 18) ROBOT Body, 19&20) 2x Wielen, 21) Marmerwiel, 22) Ultrasone sensor Mount, en 6mm Schroef (zie bijgevoegde bestanden) //-------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Include Servo Library #include // Voeg nieuwe bibliotheek toe //------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // US-trigger naar pin 12 op Arduino #define ECHO_PIN 13 // US Echo naar pin 13 op Arduino #define MAX_DISTANCE 250 // Afstand tot ping (max is 250) int distance = 100; //------------------------------------------------ -------------------------------------------------- ------------------------------- Servo US_Servo; // Ultrasone sensor Servo Servo Left_Servo; // Linkerwiel Servo Servo Rechts_Servo; // Rechter wiel servo NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing-instellingen van pinnen en maximale afstand. //------------------------------------------------ -------------------------------------------------- ------------------------------- void setup() // INPUT/OUTPUTS, WAAR AANSLUITEN, EERSTE POSITIE/BEWEGING INSTELLEN { pinMode (12, UITGANG); // Trigger pin ingesteld als output pinMode (13, INPUT); // Echo-pin ingesteld als invoer US_Servo.attach (11); // US Servo ingesteld op pin 11 US_Servo.write (90); // US SERVO KIJKT VOORUIT

Left_Servo.attach (9); // Linker wiel servo naar pin 9

Left_Servo.write(90); // LINKERWIEL SERVO ingesteld op STOP

Right_Servo.attach(10); // Rechter wiel servo ingesteld op pin 10

Right_Servo.write(90); // RECHTERWIEL SERVO ingesteld op STOP vertraging (2000); // Wacht 2 seconden afstand = readPing(); // Krijg pingafstand bij ongecompliceerde positievertraging (100); // Wacht 100 ms moveForward(); // ROBOT BEWEEGT VOORUIT } //------------------------------------------ -------------------------------------------------- ------------------------------------ void loop() {int distanceRight = 0; // Start de Amerikaanse afstand naar rechts op 0 int distanceLeft = 0; // Start de Amerikaanse afstand naar links op 0 //US_Servo.write (90); // Centrale Amerikaanse servo // vertraging (50); // US_Servo.write(70); // Kijk een beetje goed // vertraging (250); // US_Servo.write (110); // Kijk iets naar links // vertraging (250); // US_Servo.write(90); // Kijk centrum

if (afstand <= 20) // Robot beweegt VOORUIT {moveStop(); // Robot STOPT op afstand = distanceLeft) // Bepaal in welke richting je moet draaien { turnRight(); // Rechterkant heeft de grootste afstand, ROBOT DRAAIT RECHTS voor 0,3 s vertraging (500); // Deze vertraging bepaalt de lengte van de beurt moveStop(); // Robot STOPT } else { turnLeft(); // Links grootste afstand, ROBOT DRAAIT LINKS voor 0,3 s vertraging (500); // Deze vertraging bepaalt de lengte van de beurt moveStop(); // Robot STOPT } } else { moveForward(); // Robot BEWEEGT VOORUIT } distance = readPing(); // ONS LEEST NIEUWE PING voor de nieuwe rijrichting } //----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight() // Ultrasone sensor KIJK JUISTE FUNCTIE {US_Servo.write (30); // US servo BEWEEGT RECHTS naar hoekvertraging (500); int afstand = readPing(); // Stel ping-waarde in voor rechtervertraging (100); US_Servo.write(90); // US servo BEWEEGT NAAR CENTER retourafstand; // Afstand is ingesteld } //------------------------------------------ -------------------------------------------------- ------------------------------------ int lookLeft() // Ultrasone sensor KIJK LINKS FUNCTIE { US_Servo.schrijf(150); // US servo BEWEEGT LINKS naar hoekvertraging (500); int afstand = readPing(); // Stel ping-waarde in voor linkervertraging (100); US_Servo.write(90); // US servo BEWEEGT NAAR CENTER retourafstand; // Afstand is ingesteld } //------------------------------------------ -------------------------------------------------- ------------------------------------ int readPing () // Lees Ping-functie voor ultrasone sensor. { vertraging (100); // 100 ms tussen pings (min. pingtijd = 0,29 ms) int cm = sonar.ping_cm(); // PING-afstand wordt verzameld en ingesteld in cm if (cm==0) { cm=250; } retour cm; } //----------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop () // ROBOT STOP { Left_Servo.write (90); // LeftServo 180 vooruit, 0 achteruit Right_Servo.write (90); // RightServo 0 vooruit, 180 achteruit} //--------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward() // ROBOT FORWARD { Left_Servo.schrijf(180); // LeftServo 180 vooruit, 0 achteruit Right_Servo.write (0); // RightServo 0 vooruit, 180 achteruit} //--------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward() // ROBOT BACKWARD { Left_Servo.schrijf(0); // LeftServo 180 vooruit, 0 achteruit Right_Servo.write (180); // RightServo 0 vooruit, 180 achteruit} //--------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight() // ROBOT RECHTS { Left_Servo.schrijf(180); // LeftServo 180 vooruit, 0 achteruit Right_Servo.write (90); // RightServo 0 vooruit, 180 achteruit} //--------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft() // ROBOT LEFT { Left_Servo.schrijf(90); // LeftServo 180 vooruit, 0 achteruit Right_Servo.write (0); // RightServo 0 vooruit, 180 achteruit} //--------------------------------------- -------------------------------------------------- ----------------------------------------

Stap 3: Monteer de robot

Image
Image
Monteer de robot
Monteer de robot
Monteer de robot
Monteer de robot

Nu is het tijd om je robot in elkaar te zetten. De stappen staan hieronder vermeld.

1) Bevestig ronde servoschijf en rubberen banden aan wielen: alle servo's worden geleverd met plastic bevestigingsmateriaal en schroeven. Zoek de ronde schijven en schroef ze in de twee gaten aan de platte kant van de wielen. De rubberen banden passen om het wiel om grip te bieden. Misschien wilt u een beetje lijm toevoegen om de elastiekjes op hun plaats te houden.

2) Bevestiging van marmeren gieter: Gebruik twee kleine schroeven om de marmeren gieter aan de twee driehoeken aan de achterkant te bevestigen. De marmeren gieter is een eenvoudige vervanging voor een achterwiel en biedt een achterste draaipunt.

3) Plaats servo's in sleuven (geen schroeven nodig): plaats de FS90-servo (voor de ultrasone sensor) in de voorste gleuf van de behuizing. De twee continu draaiende servo's schuiven in de linker- en rechtersleuf. De sleuven zijn ontworpen voor een strakke pasvorm, zodat er geen schroeven nodig zijn om de servo's op hun plaats te houden. Zorg ervoor dat de servodraden door de groeven in de sleuven lopen, zodat ze naar de achterkant van het lichaam wijzen.

4) 9V-batterijplaatsing (OPTIONEEL): plaats de 9V-batterij + Arduino-voedingsconnector achter de voorservo.

5) Montage van ultrasone sensor: gebruik twee kleine schroeven om een van de meegeleverde witte plastic servo-bevestigingen aan de onderkant van de montageplaat van de ultrasone sensor te bevestigen. Gebruik vervolgens de 3D-geprinte 6 mm bout/moer (of vervang een metalen bout/moer) om de behuizing van de ultrasone sensor aan de montageplaat te bevestigen. Plaats ten slotte de sensor in de behuizing met de pinnen naar boven gericht en klik de achterkant van de behuizing vast.

6) 4x AA-batterijhouder: plaats de AA-batterijhouder in het grote rechthoekige gebied, met de aan/uit-schakelaar naar achteren gericht.

7) Arduino Uno + V5 Sensor Shield: Bevestig het schild aan de Arduino en plaats het op de steunen boven de batterijhouder. De voedingsconnector moet naar links wijzen.

Uw robot is gebouwd! Wat is er over? De Arduino programmeren en verbindingsdraden aansluiten: servo's, ultrasone sensor en voeding.

Stap 4: Bevestig sensordraden

Image
Image
Afgewerkt!!! Sluit de 9V Arduino-voeding aan, schakel het batterijpakket in en begin met het vermijden van obstakels met OAREE
Afgewerkt!!! Sluit de 9V Arduino-voeding aan, schakel het batterijpakket in en begin met het vermijden van obstakels met OAREE

Sluit servodraden aan op V5 Shield:

  1. Links continue rotatie servo hecht aan PIN 9
  2. Rechts continue rotatie servo hecht aan PIN 10
  3. Front FS90 Servo hecht aan PIN 11

Sluit de ultrasone sensorpennen (via 4x vrouwelijke naar vrouwelijke jumperdraden) aan op V5 Shield:

  1. Trigger naar PIN 12
  2. Echo naar pincode 13
  3. VCC naar een van de pinnen gemarkeerd met 'V'
  4. Geaard op een van de pinnen gemarkeerd met 'G'

Sluit de AA-batterijhouder aan op het V5-schild:

  1. Bevestig de positieve, rode draad aan de VCC-connector
  2. Bevestig de negatieve, zwarte draad aan de massaverbinding

Stap 5: Klaar!!! Sluit de 9V Arduino-voeding aan, schakel het batterijpakket in en begin met het vermijden van obstakels met OAREE

Image
Image
Afgewerkt!!! Sluit de 9V Arduino-voeding aan, schakel het batterijpakket in en begin met het vermijden van obstakels met OAEE
Afgewerkt!!! Sluit de 9V Arduino-voeding aan, schakel het batterijpakket in en begin met het vermijden van obstakels met OAEE

Afgewerkt!

1) Sluit de 9V Arduino-voeding aan (optioneel)

2) Schakel de batterij in

3) Begin met het vermijden van obstakels met OAREE!!!

Ik weet zeker dat je dol zult worden op je nieuwe vriend, OAREE, nadat je hem een obstakel hebt zien voelen, achteruitrijdt en van richting verandert. OAREE werkt het beste met grote objecten waar de ultrasone sensor vanaf kan pingen (zoals muren). Het heeft moeite met het pingen van kleine objecten zoals stoelpoten vanwege hun kleine oppervlak en hoeken. Gelieve te delen, verder te ontwikkelen en mij op de hoogte te stellen van eventuele aanpassingen of fouten. Dit was een geweldige leerervaring en ik hoop dat je net zoveel plezier hebt bij het maken van dit project als ik!

Robotica-wedstrijd
Robotica-wedstrijd
Robotica-wedstrijd
Robotica-wedstrijd

Tweede plaats in de robotica-wedstrijd

Aanbevolen: