Indholdsfortegnelse:

OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino: 5 trin (med billeder)
OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino: 5 trin (med billeder)

Video: OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino: 5 trin (med billeder)

Video: OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino: 5 trin (med billeder)
Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, November
Anonim
Image
Image
OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino
OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino
OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino
OAREE - 3D -printet - Hindring for at undgå robot til ingeniøruddannelse (OAREE) med Arduino

OAREE (Hindring for at undgå robot til ingeniøruddannelse)

Design: Målet med denne instruktør var at designe en OAR (Obstacle Avoiding Robot) robot, der var enkel/kompakt, 3D -udskrivbar, let at samle, bruger kontinuerlige rotationsservoer til bevægelse og har så få indkøbte dele som muligt. Jeg tror på, at det er lykkedes mig at skabe denne fantastiske robot og har navngivet den OAREE (Obstacle Avoiding Robot for Engineering Education). Denne robot vil fornemme forhindringer, stoppe, se til venstre og højre, derefter vende i uhindret retning og fortsætte fremad.

Baggrund: Internettet har adskillige hindringer for at undgå robotter, men de fleste er omfangsrige, svære at samle og dyre. Mange af disse robotter har Arduino -kode leveret, men det var svært at finde et gennemtænkt, fungerende eksempel. Jeg ville også bruge kontinuerlige rotationsservoer til hjulene (i stedet for DC -motorer), hvilket ikke var blevet udført endnu. Så jeg tog ud på en mission om at udvikle en kompakt, opfindsom OAR -robot, der skal deles med verden.

Videreudvikling: Denne robot kan videreudvikles for bedre pingingsnøjagtighed, tilføjelse af IR -sensorer til linjefølge, LCD -skærm til visning af forhindringsafstand og meget mere.

Forbrugsvarer

  • 1x Arduino Uno -
  • 1x V5 Sensor Shield -
  • 1x 4xAA batteriholder med tænd/sluk -switch -
  • 1x SG90 Servo -
  • 2x kontinuerlig rotationsserver -
  • 1x 9V batteristrømkabel til Arduino (VALGFRIT) -
  • 1x HC -SR04 ultralydssensor -
  • 4x Kvinde-Kvinde Jumper Wires-https://www.amazon.com/RGBZONE-120pcs-Multicolored…
  • 2x gummibånd
  • 1x 9V batteri (valgfrit)
  • 4x AA batterier
  • 4x små skruer (4 x 1/2 eller noget lignende)
  • Phillips skruetrækker
  • Lim til fastgørelse af gummibånd til hjul

Trin 1: 3D -print: Karosseri, hjul, marmorhjul, 6 mm bolt/møtrik og ultralydssensormontering

3D -print: Karosseri, hjul, marmorhjul, 6 mm bolt/møtrik og ultralyds sensorophæng
3D -print: Karosseri, hjul, marmorhjul, 6 mm bolt/møtrik og ultralyds sensorophæng
3D -print: Karosseri, hjul, marmorhjul, 6 mm bolt/møtrik og ultralyds sensorophæng
3D -print: Karosseri, hjul, marmorhjul, 6 mm bolt/møtrik og ultralyds sensorophæng
3D -print: Krop, hjul, marmorhjul, 6 mm bolt/møtrik og ultralyds sensorophæng
3D -print: Krop, hjul, marmorhjul, 6 mm bolt/møtrik og ultralyds sensorophæng

Der er 5 dele til 3D -print.

  1. Legeme
  2. Hjul
  3. Marmor Caster
  4. 6 mm bolt/møtrik (valgfri, en metalmøtrik/bolt kan udskiftes)
  5. Ultrasonic Sensor Mount

Alle de påkrævede. STL -filer er inkluderet i denne instruerbare såvel som i Sketchup -filerne. 40% udfyldning anbefales.

Trin 2: Programmer Arduino

Image
Image
Saml robotten
Saml robotten

Send kode til Arduino UNO: Brug Arduino IDE til at sende koden (i den vedhæftede fil) til dit Arduino -modul. Du skal downloade og inkludere servo.h og newping.h bibliotekerne med denne skitse.

Koden er grundigt kommenteret, så du kan se, hvad hver kommando gør. Du kan nemt ændre afstanden til ultralydssensoren til en større eller mindre værdi, hvis det ønskes. Dette er en indledende kode og er beregnet til at blive udvidet og brugt til videre projektudvikling.

// OBSTACLE UNDGÅR ROBOT // [email protected], [email protected], University of TN at Chattanooga, Electrical Engineering, FALL 2019 // Materialer påkrævet: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3) HCSR04 Ultralydssensor, 4) FS90 Servo (til Ultralydssensor) // 5 & 6) 2x KONTINUERLIGE ROTATIONSSERVOS til hjulene // 7) 16 mm Marmor til baghjulsdreje, 8 & 9) 2 gummibånd til hjul // 10- 15) 1x (4xAA) Batteriholder med tænd/sluk -kontakt, 16 & 17) 9V batteri med stik til strømforsyning Arduino UNO // 3D PRINT: // 18) ROBOT Body, 19 & 20) 2x Wheels, 21) Marble Caster, 22) Ultrasonic Sensor Montering og 6 mm skrue (se vedhæftede filer) // -------------------------------------- ---------------------------------------------------------- ----------------------------------------- #include // Include Servo Library #include // Inkluder Newping-bibliotek // ------------------------------------------- ---------------------------------------------------------- ------------------------------------ #definer TRIGGER_PIN 1 2 // US trigger til pin 12 på Arduino #define ECHO_PIN 13 // US Echo til pin 13 på Arduino #define MAX_DISTANCE 250 // Distance til ping (max er 250) int distance = 100; // ------------------------------------------------ ---------------------------------------------------------- ------------------------------- Servo US_Servo; // Ultrasonic Sensor Servo Servo Left_Servo; // Venstre hjul Servo Servo Right_Servo; // Højre hjul servo NewPing ekkolod (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing opsætning af stifter og maksimal afstand. // ------------------------------------------------ ---------------------------------------------------------- ------------------------------- ugyldig opsætning () // INPUT/OUTPUTS, HVOR AT FÆSTE, INDSTILLET Oprindelig position/bevægelse {pinMode (12, OUTPUT); // Trigger pin indstillet som output pinMode (13, INPUT); // Echo pin indstillet som input US_Servo.attach (11); // US Servo indstillet til pin 11 US_Servo.write (90); // US SERVO GLÆDER FREM

Venstre_Servo.attach (9); // Venstre hjul servo til pin 9

Venstre_Servo.skrive (90); // LEFT WHEEL SERVO indstillet til STOP

Right_Servo.attach (10); // Højre hjul servo indstillet til pin 10

Right_Servo.write (90); // RIGHT WHEEL SERVO indstillet til STOP forsinkelse (2000); // Vent i 2 sekunder afstand = readPing (); // Få pingafstand ved lige forsinket positionsforsinkelse (100); // Vent på 100 ms moveForward (); // ROBOT BEVÆGER FREM} // ------------------------------------------ ---------------------------------------------------------- ------------------------------------- void loop () {int distanceRight = 0; // Start US afstand til højre ved 0 int distanceLeft = 0; // Start amerikansk afstand til venstre ved 0 //US_Servo.write(90); // Center US servo // forsinkelse (50); // US_Servo.write (70); // Se lidt til højre // forsinkelse (250); // US_Servo.write (110); // Se lidt til venstre // forsinkelse (250); // US_Servo.write (90); // Look Center

hvis (afstand <= 20) // Robot bevæger sig fremad {moveStop (); // Robot STOPPER på afstand = distanceLeft) // Beslut, hvilken retning der skal drejes {turnRight (); // Højre side har størst afstand, ROBOT DREJER HØJRE for 0,3s forsinkelse (500); // Denne forsinkelse bestemmer drejelængde moveStop (); // Robot STOPPER} else {turnLeft (); // Venstre side største afstand, ROBOT VENDER VENSTRE for 0,3s forsinkelse (500); // Denne forsinkelse bestemmer drejelængde moveStop (); // Robot STOPS}} else {moveForward (); // Robot bevæger sig fremad} distance = readPing (); // USA LÆS NYT PING for den nye rejseretning} // ----------------------------------- ---------------------------------------------------------- -------------------------------------------- int lookRight () // Ultralydssensor SE HØJRE FUNKTION {US_Servo.write (30); // US servo FØLGER HØJRE til vinkelforsinkelse (500); int distance = readPing (); // Indstil pingværdi for højre forsinkelse (100); US_Servo.write (90); // US servo FLYTTER TIL CENTER returafstand; // Afstand er indstillet} // ------------------------------------------ ---------------------------------------------------------- ------------------------------------ int lookLeft () // Ultrasonic Sensor LOOK LEFT FUNCTION {US_Servo.skrive (150); // US servo FØLGER VENSTRE til vinkelforsinkelse (500); int distance = readPing (); // Indstil pingværdi for venstre forsinkelse (100); US_Servo.write (90); // US servo FLYTTER TIL CENTER returafstand; // Afstand er indstillet} // ------------------------------------------ -------------------------------------------------- ------------------------------------ int readPing () // Læs Ping-funktion til ultralydssensor. {forsinkelse (100); // 100ms mellem ping (min ping tid = 0.29ms) int cm = sonar.ping_cm (); // PING -afstanden indsamles og indstilles i cm hvis (cm == 0) {cm = 250; } cm tilbage; } // ----------------------------------------------- ---------------------------------------------------------- -------------------------------- void moveStop () // ROBOT STOP {Left_Servo.write (90); // LeftServo 180 fremad, 0 bagud Right_Servo.write (90); // RightServo 0 fremad, 180 bagud} // --------------------------------------- ---------------------------------------------------------- ---------------------------------------- ugyldig moveForward () // ROBOT FREM {Left_Servo.skriv (180); // LeftServo 180 fremad, 0 bagud Right_Servo.write (0); // RightServo 0 fremad, 180 bagud} // --------------------------------------- -------------------------------------------------- ---------------------------------------- ugyldig bevægelseBackward () // ROBOT BACKWARD {Left_Servo.skriv (0); // LeftServo 180 fremad, 0 bagud Right_Servo.write (180); // RightServo 0 fremad, 180 bagud} // --------------------------------------- ---------------------------------------------------------- ---------------------------------------- ugyldig turnRight () // ROBOT HØJRE {Left_Servo.skriv (180); // LeftServo 180 fremad, 0 bagud Right_Servo.write (90); // RightServo 0 fremad, 180 bagud} // --------------------------------------- ---------------------------------------------------------- ---------------------------------------- void turnLeft () // ROBOT LEFT {Left_Servo.skriv (90); // LeftServo 180 fremad, 0 bagud Right_Servo.write (0); // RightServo 0 fremad, 180 bagud} // --------------------------------------- ---------------------------------------------------------- ----------------------------------------

Trin 3: Saml robotten

Image
Image
Saml robotten
Saml robotten
Saml robotten
Saml robotten

Nu er det tid til at sammensætte din robot. Trinene er anført nedenfor.

1) Fastgør rund servoskive og gummibånd til hjul: Alle servoer leveres med monteringsbeslag i plast og skruer. Find de runde skiver, og skru dem fast i de to huller på den flade side af hjulene. Gummibåndene passer rundt om hjulet for at give greb. Du kan eventuelt tilføje lidt lim for at holde elastikkerne på plads.

2) Montering af marmorhjul: Brug to små skruer til at fastgøre marmorhjulet til de to trekanter på bagsiden. Marmorhjulet er en simpel erstatning for et baghjul og giver et bageste drejepunkt.

3) Sæt servoer i åbninger (ingen skruer er nødvendige): Anbring FS90 -servoen (til ultralydssensoren) i husets forreste åbning. De to kontinuerlige rotation servoer glider ind til venstre og højre slot. Slidserne er designet til en tæt pasform, så der ikke kræves skruer for at holde servoerne på plads. Sørg for, at servotrådene løber gennem rillerne i åbningerne, så de vender mod bagsiden af kroppen.

4) 9V batteriplacering (VALGFRIT): Placer 9V batteri + Arduino -strømstik bag den forreste servo.

5) Ultrasonic Sensor Mount Assembly: Brug to små skruer til at fastgøre en af de medfølgende hvide plast servotilbehør til bunden af Ultrasonic Sensor mount pladen. Brug derefter den 3D -trykte 6 mm bolt/møtrik (eller udskift en metalbolt/møtrik) til at fastgøre ultralydssensorhuset til monteringspladen. Til sidst placeres sensoren i kabinettet med stifterne opad og klikker på bagsiden af kabinettet.

6) 4x AA -batterikasse: Anbring AA -batterikassen i det store rektangulære område, med tænd/sluk -knappen vendt mod bagsiden.

7) Arduino Uno + V5 Sensor Shield: Sæt skjoldet på Arduino og placer det på holderne over batterikassen. Strømstikket skal vende mod venstre.

Din robot er bygget! Hvad er der tilbage? Programmering af Arduino og tilslutning af jumperledninger: Servoer, ultralydssensor og strømforsyning.

Trin 4: Fastgør sensortråde

Image
Image
Færdig!!! Tilslut 9V Arduino -strømforsyning, tænd batteripakken, og begynd at undgå forhindringer med OAREE
Færdig!!! Tilslut 9V Arduino -strømforsyning, tænd batteripakken, og begynd at undgå forhindringer med OAREE

Tilslut Servoledninger til V5 Shield:

  1. Venstre kontinuerlig rotation Servo fastgøres til PIN 9
  2. Højre kontinuerlig rotation Servo fastgøres til PIN 10
  3. Front FS90 Servo fastgøres til PIN 11

Tilslut ultralyds sensorstifter (via 4x hun til hun -jumperkabler) til V5 Shield:

  1. Udløser til PIN 12
  2. Ekko til PIN 13
  3. VCC til en af stifterne mærket med 'V'
  4. Jord til en af stifterne markeret med 'G'

Tilslut AA -batterikassen til V5 -skærmen:

  1. Fastgør den positive, røde ledning til VCC -stikket
  2. Fastgør den negative, sorte ledning til jordforbindelsen

Trin 5: Færdig !!! Tilslut 9V Arduino -strømforsyning, tænd batteripakken, og begynd at undgå forhindringer med OAREE

Image
Image
Færdig!!! Tilslut 9V Arduino -strømforsyning, tænd batteripakken, og begynd at undgå forhindringer med OAREE
Færdig!!! Tilslut 9V Arduino -strømforsyning, tænd batteripakken, og begynd at undgå forhindringer med OAREE

Færdig!

1) Tilslut 9V Arduino -strømforsyningen (valgfri)

2) Tænd batteripakken

3) Start med at undgå forhindringer med OAREE !!!

Jeg er sikker på, at du vil blive glad for din nye ven, OAREE, efter at have set det fornemme en forhindring, sikkerhedskopier og skift retning. OAREE fungerer bedst med store objekter, som ultralydssensoren kan pinge af (som vægge). Det har svært ved at pinge små genstande som stoleben på grund af deres lille overflade og hjørner. Del, udvikl dig videre, og lad mig vide om eventuelle nødvendige justeringer eller fejl. Dette har været en stor læringsoplevelse, og jeg håber, at du har lige så sjov med at lave dette projekt som jeg!

Robotik konkurrence
Robotik konkurrence
Robotik konkurrence
Robotik konkurrence

Runner Up i Robotics -konkurrencen

Anbefalede: