Inhaltsverzeichnis:

OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino - Gunook
OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino - Gunook

Video: OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino - Gunook

Video: OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino - Gunook
Video: 3D-Drucker und die Magie der Technik. 2024, Juni
Anonim
Image
Image
OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino
OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino
OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino
OAREE - 3D gedruckt - Hindernisvermeidender Roboter für die Ingenieurausbildung (OAREE) mit Arduino

OAREE (Obstacle Avoiding Robot forEngineering Education)

Design: Das Ziel dieser Anleitung war es, einen OAR-Roboter (Obstacle Avoiding Robot) zu entwerfen, der einfach / kompakt, 3D-druckbar, einfach zu montieren war, kontinuierliche Rotationsservos für die Bewegung verwendet und so wenig Kaufteile wie möglich hat. Ich glaube, dass es mir gelungen ist, diesen großartigen Roboter zu erschaffen und ihn OAREE (Obstacle Avoiding Robot for Engineering Education) genannt zu haben. Dieser Roboter erkennt Hindernisse, stoppt, schaut nach links und rechts, dreht sich dann in die freie Richtung und fährt weiter vorwärts.

Hintergrund: Das Internet hat zahlreiche Hindernisse, die Roboter vermeiden, aber die meisten sind sperrig, schwer zu montieren und teuer. Viele dieser Roboter haben Arduino-Code geliefert, aber es war schwierig, ein gut durchdachtes, funktionierendes Beispiel zu finden. Ich wollte auch kontinuierliche Rotationsservos für die Räder verwenden (anstelle von DC-Motoren), was noch nicht gemacht wurde. Also habe ich mich auf den Weg gemacht, einen kompakten, erfinderischen OAR-Roboter zu entwickeln, den ich mit der Welt teilen kann.

Weiterentwicklung: Dieser Roboter kann für eine bessere Ping-Genauigkeit weiterentwickelt werden, indem IR-Sensoren für die Linienverfolgung, ein LCD-Bildschirm zur Anzeige der Hindernisentfernung und vieles mehr hinzugefügt werden.

Lieferungen

  • 1x Arduino Uno -
  • 1x V5 Sensorschild -
  • 1x 4xAA Batteriehalter mit Ein/Aus Schalter -
  • 1x SG90 Servo -
  • 2x Kontinuierliche Rotationsservos -
  • 1x 9V Batteriestromkabel für Arduino (OPTIONAL) -
  • 1x HC-SR04 Ultraschallsensor -
  • 4x Buchse-weiblich Überbrückungskabel -
  • 2x Gummibänder
  • 1x 9V Batterie (OPTIONAL)
  • 4x AA-Batterien
  • 4x kleine Schrauben (4 x 1/2 oder ähnliches)
  • Kreuzschlitzschraubendreher
  • Kleber zum Befestigen von Gummibändern an Rädern

Schritt 1: 3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube / Mutter und Ultraschallsensorhalterung

3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube/Mutter und Ultraschallsensorhalterung
3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube/Mutter und Ultraschallsensorhalterung
3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube/Mutter und Ultraschallsensorhalterung
3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube/Mutter und Ultraschallsensorhalterung
3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube/Mutter und Ultraschallsensorhalterung
3D-Druck: Körper, Räder, Marmorrolle, 6 mm Schraube/Mutter und Ultraschallsensorhalterung

Es gibt 5 Teile für den 3D-Druck.

  1. Körper
  2. Räder
  3. Marmorgießer
  4. 6mm Schraube/Mutter (optional, eine Metallmutter/-schraube kann ersetzt werden)
  5. Ultraschallsensorhalterung

Alle erforderlichen. STL-Dateien sind in diesem anweisbaren sowie den Sketchup-Dateien enthalten. 40% Füllung empfohlen.

Schritt 2: Programmieren Sie das Arduino

Image
Image
Bauen Sie den Roboter zusammen
Bauen Sie den Roboter zusammen

Code an Arduino UNO senden: Senden Sie den Code (in der angehängten Datei) mit der Arduino IDE an Ihr Arduino-Modul. Sie müssen die Bibliotheken servo.h und newping.h herunterladen und in diese Skizze einbinden.

Der Code ist ausführlich kommentiert, sodass Sie sehen können, was jeder Befehl tut. Sie können den Ultraschallsensorabstand bei Bedarf einfach auf einen größeren oder kleineren Wert ändern. Dies ist ein initialer Code, der erweitert und für die weitere Projektentwicklung verwendet werden soll.

// OBSTACLE AVOIDING ROBOT// [email protected], [email protected], University of TN at Chattanooga, Elektrotechnik, HERBST 2019 // Benötigte Materialien: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3)HCSR04 Ultraschallsensor, 4)FS90 Servo (für Ultraschallsensor) // 5&6) 2x KONTINUIERLICHE ROTATION SERVOS für die Räder // 7) 16mm Murmel für Hinterraddrehpunkt, 8&9) 2 Gummibänder für Räder // 10- 15) 1x (4xAA) Batteriehalter mit Ein-/Ausschalter, 16&17) 9V Batterie mit Anschluss zur Stromversorgung von Arduino UNO // 3D PRINT: // 18) ROBOT Body, 19&20) 2x Räder, 21) Marble Caster, 22) Ultraschallsensor Halterung und 6mm Schraube (siehe angehängte Dateien) //-------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Servobibliothek einbinden #include // Newping-Bibliothek einbinden //------------------------------------------------------ -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // US-Trigger auf Pin 12 auf Arduino #define ECHO_PIN 13 // US-Echo auf Pin 13 auf Arduino #define MAX_DISTANCE 250 // Entfernung zum Ping (max. 250) int distance = 100; //------------------------------------------------ -------------------------------------------------- ------------------------------------------ Servo US_Servo; // Ultraschallsensor Servo Servo Left_Servo; // Linkes Rad-Servo-Servo Right_Servo; // Rechtes Rad Servo NewPing Sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing-Setup von Pins und maximalem Abstand. //------------------------------------------------ -------------------------------------------------- ------------------------------------------- void setup() // EINGANG/AUSGÄNGE, WO ANHÄNGEN, ANFANGSPOSITION/BEWEGUNG EINSTELLEN { PinMode (12, AUSGANG); // Trigger-Pin als Ausgang eingestellt PinMode (13, INPUT); // Echo-Pin als Eingang eingestellt US_Servo.attach (11); // US-Servo auf Pin 11 gesetzt US_Servo.write (90); // US-SERVO BLICKT NACH VORN

Left_Servo.attach(9); // Linkes Radservo an Pin 9

Left_Servo.write(90); // LINKER RADSERVO auf STOP gestellt

Right_Servo.attach(10); // Rechtes Radservo auf Pin 10. eingestellt

Right_Servo.write(90); // RECHTES RAD SERVO auf STOPP-Verzögerung (2000) gesetzt; // Warten Sie 2 Sekunden Abstand = readPing (); // Ping-Distanz bei gerader Vorwärtsposition abrufen delay (100); // 100 ms warten moveForward(); // ROBOTER BEWEGT VORWÄRTS } //-------------------------------------------------------- -------------------------------------------------- -------------------------------------- Void Schleife () { Int DistanceRight = 0; // US-Distanz nach rechts bei 0 einleiten int distanceLeft = 0; // US-Distanz nach links bei 0 einleiten //US_Servo.write(90); // US-Servo zentrieren // Verzögerung (50); // US_Servo.write(70); // Etwas rechts schauen // delay(250); // US_Servo.write(110); // Etwas nach links schauen // delay(250); // US_Servo.write(90); // Blick ins Zentrum

if (Abstand <= 20) // Roboter bewegt sich VORWÄRTS { moveStop(); // Roboter STOPPT bei Abstand = distanceLeft) // Entscheiden Sie, in welche Richtung er abbiegen soll { turnRight(); // Rechte Seite hat den größten Abstand, ROBOT DREHT RECHTS für 0,3s Verzögerung (500); // Dieses Delay bestimmt die Drehlänge moveStop(); // Roboter STOPPT} else { turnLeft(); // Größter Abstand auf der linken Seite, ROBOT DREHT LINKS für 0,3s Verzögerung (500); // Dieses Delay bestimmt die Drehlänge moveStop(); // Roboter stoppt } } else { moveForward(); // Roboter BEWEGT VORWÄRTS} Abstand = readPing (); // US LESEN NEUEN PING für die neue Fahrtrichtung } //---------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight() // Ultraschallsensor RICHTIGE FUNKTION AUSSEHEN { US_Servo.write (30); // US-Servo BEWEGT RECHTS zur Winkelverzögerung (500); int-Abstand = readPing(); // Ping-Wert für rechte Verzögerung einstellen (100); US_Servo.write(90); // US-Servo BEWEGT ZUM ZENTRUM Rückweg; // Abstand ist eingestellt } //----------------------------------------------------- -------------------------------------------------- ------------------------------------- int lookLeft() // Ultraschallsensor LOOK LEFT FUNCTION { US_Servo.write(150); // US-Servo BEWEGT LINKS zur Winkelverzögerung (500); int-Abstand = readPing(); // Ping-Wert für linke Verzögerung einstellen (100); US_Servo.write(90); // US-Servo BEWEGT ZUM ZENTRUM Rückweg; // Abstand ist eingestellt } //----------------------------------------------------- -------------------------------------------------- -------------------------------------- int readPing () // Ping-Funktion für Ultraschallsensor lesen. { Verzögerung (100); // 100 ms zwischen Pings (min. Ping-Zeit = 0,29 ms) int cm = sonar.ping_cm (); // PING-Abstand wird erfasst und in cm eingestellt if (cm = = 0) { cm = 250; } zurück cm; } //----------------------------------------------------------- -------------------------------------------------- -------------------------------- Void moveStop () // ROBOT STOP { Left_Servo.write (90); // LeftServo 180 vorwärts, 0 rückwärts Right_Servo.write (90); // RightServo 0 vorwärts, 180 rückwärts } //----------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward() // ROBOT FORWARD { Left_Servo.write(180); // LeftServo 180 vorwärts, 0 rückwärts Right_Servo.write (0); // RightServo 0 vorwärts, 180 rückwärts } //----------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward() // ROBOT BACKWARD { Left_Servo.write(0); // LeftServo 180 vorwärts, 0 rückwärts Right_Servo.write (180); // RightServo 0 vorwärts, 180 rückwärts } //----------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight() // ROBOT RIGHT { Left_Servo.write(180); // LeftServo 180 vorwärts, 0 rückwärts Right_Servo.write (90); // RightServo 0 vorwärts, 180 rückwärts } //----------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft() // ROBOT LEFT { Left_Servo.write(90); // LeftServo 180 vorwärts, 0 rückwärts Right_Servo.write (0); // RightServo 0 vorwärts, 180 rückwärts } //----------------------------------------- -------------------------------------------------- ----------------------------------------

Schritt 3: Montieren Sie den Roboter

Image
Image
Bauen Sie den Roboter zusammen
Bauen Sie den Roboter zusammen
Bauen Sie den Roboter zusammen
Bauen Sie den Roboter zusammen

Jetzt ist es an der Zeit, Ihren Roboter zusammenzustellen. Die Schritte sind unten aufgeführt.

1) Befestigen Sie die runde Servoscheibe und die Gummibänder an den Rädern: Alle Servos werden mit Befestigungsteilen und Schrauben aus Kunststoff geliefert. Suchen Sie die runden Scheiben und schrauben Sie sie in die beiden Löcher auf der flachen Seite der Räder. Die Gummibänder passen sich um das Rad an, um Halt zu bieten. Vielleicht möchten Sie ein wenig Kleber hinzufügen, um die Gummibänder an Ort und Stelle zu halten.

2) Befestigung der Marmorrolle: Verwenden Sie zwei kleine Schrauben, um die Marmorrolle an den beiden Dreiecken an der Rückseite zu befestigen. Die Marmorrolle ist ein einfacher Ersatz für ein Hinterrad und bietet einen hinteren Drehpunkt.

3) Setzen Sie die Servos in die Schlitze ein (keine Schrauben erforderlich): Setzen Sie das FS90-Servo (für den Ultraschallsensor) in den vorderen Schlitz des Gehäuses ein. Die beiden Servos mit kontinuierlicher Rotation gleiten in die linken und rechten Schlitze. Die Schlitze sind auf einen festen Sitz ausgelegt, sodass keine Schrauben erforderlich sind, um die Servos an Ort und Stelle zu halten. Achten Sie darauf, dass die Servokabel durch die Nuten in den Schlitzen verlaufen, sodass sie zur Rückseite des Gehäuses zeigen.

4) 9-V-Batterieplatzierung (OPTIONAL): Platzieren Sie die 9-V-Batterie + den Arduino-Stromanschluss hinter dem vorderen Servo.

5) Montage der Ultraschallsensorhalterung: Verwenden Sie zwei kleine Schrauben, um eine der mitgelieferten weißen Kunststoff-Servohalterungen an der Unterseite der Ultraschallsensorhalterungsplatte zu befestigen. Verwenden Sie als Nächstes die 3D-gedruckte 6-mm-Schraube / -Mutter (oder ersetzen Sie eine Metallschraube / -mutter), um das Ultraschallsensorgehäuse an der Montageplatte zu befestigen. Zum Schluss den Sensor mit den Stiften nach oben in das Gehäuse legen und an der Gehäuserückseite einrasten.

6) 4x AA Batteriefach: Legen Sie das AA Batteriefach in den großen rechteckigen Bereich, mit dem Ein-/Ausschalter nach hinten zeigend.

7) Arduino Uno + V5 Sensor Shield: Befestigen Sie das Shield am Arduino und legen Sie es auf die Halterungen über dem Batteriefach. Der Stromanschluss sollte nach links zeigen.

Ihr Roboter ist gebaut! Was ist übrig? Programmierung des Arduino und Anschließen der Jumper-Drähte: Servos, Ultraschallsensor und Stromversorgung.

Schritt 4: Sensordrähte anbringen

Image
Image
Fertig!!! Schließen Sie das 9-V-Arduino-Netzteil an, schalten Sie den Akku ein und vermeiden Sie Hindernisse mit OAREE
Fertig!!! Schließen Sie das 9-V-Arduino-Netzteil an, schalten Sie den Akku ein und vermeiden Sie Hindernisse mit OAREE

Verbinden Sie die Servokabel mit dem V5-Schirm:

  1. Linkes Servo mit kontinuierlicher Rotation wird an PIN 9. befestigt
  2. Rechtes Servo mit kontinuierlicher Rotation wird an PIN 10. befestigt
  3. Front-FS90-Servo wird an PIN 11. befestigt

Verbinden Sie die Ultraschallsensor-Pins (über 4x Buchse-zu-Buchse-Überbrückungsdrähte) mit dem V5-Schirm:

  1. Trigger auf PIN 12
  2. Echo an PIN 13
  3. VCC an einen der mit 'V' gekennzeichneten Pins
  4. Masse an einem der mit 'G' gekennzeichneten Pins

Verbinden Sie das AA-Batteriegehäuse mit dem V5-Schild:

  1. Schließen Sie das positive, rote Kabel an den VCC-Anschluss an
  2. Schließen Sie das negative, schwarze Kabel an den Masseanschluss an

Schritt 5: Fertig!!! Schließen Sie das 9-V-Arduino-Netzteil an, schalten Sie den Akku ein und vermeiden Sie Hindernisse mit OAREE

Image
Image
Fertig!!! Schließen Sie das 9-V-Arduino-Netzteil an, schalten Sie den Akku ein und vermeiden Sie Hindernisse mit OAREE
Fertig!!! Schließen Sie das 9-V-Arduino-Netzteil an, schalten Sie den Akku ein und vermeiden Sie Hindernisse mit OAREE

Fertig!

1) Schließen Sie das 9-V-Arduino-Netzteil an (optional)

2) Schalten Sie den Akku ein

3) Vermeiden Sie Hindernisse mit OAREE!!!

Ich bin sicher, Sie werden Ihren neuen Freund OAREE lieben, nachdem Sie beobachtet haben, wie er ein Hindernis erkannt hat, zurückweicht und die Richtung ändert. OAREE funktioniert am besten mit großen Objekten, von denen der Ultraschallsensor pingen kann (wie Wände). Kleine Gegenstände wie Stuhlbeine können aufgrund ihrer kleinen Oberfläche und Ecken nur schwer angepingt werden. Bitte teilen Sie sie mit, entwickeln Sie sie weiter und teilen Sie mir notwendige Anpassungen oder Fehler mit. Dies war eine großartige Lernerfahrung und ich hoffe, Sie haben genauso viel Spaß bei der Erstellung dieses Projekts wie ich!

Robotik-Wettbewerb
Robotik-Wettbewerb
Robotik-Wettbewerb
Robotik-Wettbewerb

Zweiter im Robotik-Wettbewerb

Empfohlen: