Cuprins:

OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino: 5 pași (cu imagini)
OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino: 5 pași (cu imagini)

Video: OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino: 5 pași (cu imagini)

Video: OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino: 5 pași (cu imagini)
Video: Intro - robo.nextlab.tech 2024, Iunie
Anonim
Image
Image
OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino
OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino
OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino
OAREE - Imprimat 3D - Robot de evitare a obstacolelor pentru educația inginerească (OAREE) cu Arduino

OAREE (Obstacle Avoiding Robot forEngineering Education)

Proiectare: Scopul acestui instructabil a fost de a proiecta un robot OAR (Obstacle Avoiding Robot) care era simplu / compact, imprimabil 3D, ușor de asamblat, utilizează servouri de rotație continuă pentru mișcare și are cât mai puține piese cumpărate posibil. Cred că am reușit să creez acest robot minunat și l-am numit OAREE (Robot Avoiding Robot for Engineering Education). Acest robot va simți obstacolele, se va opri, se va uita la stânga și la dreapta, apoi se va întoarce în direcția neobstrucționată și va continua înainte.

Context: Internetul are numeroase obstacole care evită roboții, dar majoritatea sunt voluminoase, greu de asamblat și costisitoare. Mulți dintre acești roboți au codul Arduino furnizat, dar a fost dificil să găsim un exemplu de lucru bine gândit. De asemenea, am vrut să folosesc servouri de rotație continuă pentru roți (în loc de motoare de curent continuu), ceea ce nu fusese făcut încă. Așadar, am pornit într-o misiune de a dezvolta un robot OAR compact, inventiv, pentru a-l împărtăși lumii.

Dezvoltare suplimentară: Acest robot poate fi dezvoltat în continuare pentru o precizie mai bună a pingului, adăugând senzori IR pentru funcția de urmărire a liniei, ecran LCD pentru a afișa distanța obstacolului și multe altele.

Provizii

  • 1x Arduino Uno -
  • 1 x ecran senzor V5 -
  • 1x suport baterie 4xAA cu comutator pornit / oprit -
  • 1x SG90 Servo -
  • 2 servere de rotație continuă -
  • 1x cablu de alimentare pentru baterie de 9V pentru Arduino (OPȚIONAL) -
  • 1x senzor cu ultrasunete HC-SR04 -
  • 4x fire jumper feminin-feminin - https://www.amazon.com/RGBZONE-120pcs-Multicolored …
  • 2 benzi de cauciuc
  • 1x baterie de 9V (OPȚIONAL)
  • 4x baterii AA
  • 4x șuruburi mici (4 x 1/2 sau ceva similar)
  • Surubelnita Phillips
  • Lipici pentru fixarea benzilor de cauciuc pe roți

Pasul 1: Imprimare 3D: caroserie, roți, rotor din marmură, șurub / piuliță de 6 mm și montare pentru senzori cu ultrasunete

Imprimare 3D: caroserie, roți, rotor de marmură, șurub de 6 mm / piuliță și suport pentru senzor cu ultrasunete
Imprimare 3D: caroserie, roți, rotor de marmură, șurub de 6 mm / piuliță și suport pentru senzor cu ultrasunete
Imprimare 3D: caroserie, roți, rotor din marmură, șurub de 6 mm / piuliță și montare pentru senzori cu ultrasunete
Imprimare 3D: caroserie, roți, rotor din marmură, șurub de 6 mm / piuliță și montare pentru senzori cu ultrasunete
Imprimare 3D: caroserie, roți, rotor din marmură, șurub de 6 mm / piuliță și montare pentru senzori cu ultrasunete
Imprimare 3D: caroserie, roți, rotor din marmură, șurub de 6 mm / piuliță și montare pentru senzori cu ultrasunete

Imprimarea 3D are 5 părți.

  1. Corp
  2. Roți
  3. Marmură Caster
  4. Șurub / piuliță de 6 mm (opțional, se poate înlocui o piuliță / șurub metalic)
  5. Montare senzor cu ultrasunete

Toate fișierele. STL necesare sunt incluse în acest instructable, precum și în fișierele Sketchup. 40% umplutură recomandată.

Pasul 2: Programați Arduino

Image
Image
Asamblați robotul
Asamblați robotul

Trimiteți codul către Arduino UNO: utilizând IDE-ul Arduino, trimiteți codul (în fișierul atașat) la modulul dvs. Arduino. Va trebui să descărcați și să includeți bibliotecile servo.h și newping.h cu această schiță.

Codul este comentat cu atenție, astfel încât să puteți vedea ce face fiecare comandă. Puteți modifica cu ușurință distanța senzorului ultrasonic la o valoare mai mare sau mai mică, dacă doriți. Acesta este un cod inițial și este menit să fie extins și utilizat pentru dezvoltarea ulterioară a proiectului.

// ROBOT DE EVITARE A OBSTACULULUI // [email protected], [email protected], Universitatea din TN la Chattanooga, Inginerie electrică, TOAMNA 2019 // Materiale necesare: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3) Senzor ultrasonic HCSR04, 4) Servo FS90 (pentru senzor cu ultrasunete) // 5 și 6) 2x SERVICII DE ROTARE CONTINUĂ pentru roți // 7) Marmură de 16 mm pentru pivotul rotorului spate, 8 și 9) 2 benzi de cauciuc pentru roți // 10- 15) 1x (4xAA) Suport baterie cu comutator pornire / oprire, 16 și 17) Baterie 9V cu conector pentru alimentare Arduino UNO // PRINT 3D: // 18) Corp ROBOT, 19 și 20) 2x roți, 21) Rulă marmură, 22) Senzor ultrasonic Montare și șurub de 6 mm (vezi fișierele atașate) // -------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Include Servo Library #include // Include Newping Library // ------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // Declanșator SUA la pinul 12 pe Arduino #define ECHO_PIN 13 // US Echo la pinul 13 pe Arduino #define MAX_DISTANCE 250 // Distanța până la ping (max este 250) int distance = 100; // ------------------------------------------------ -------------------------------------------------- ------------------------------- Servo US_Servo; // Senzor cu ultrasunete Servo Servo Left_Servo; // Servo roata stânga Servo dreapta_Servo; // Sonar roata dreapta NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configurare NewPing a pinilor și distanței maxime. // ------------------------------------------------ -------------------------------------------------- ------------------------------- setare nulă () // INTRARE / IEȘIRI, UNDE ATAȘAȚI, SETAȚI POZIȚIA / MIȘCAREA INIȚIALĂ {pinMode (12, OUTPUT); // Trigger pin setat ca pin pin Mode (13, INPUT); // Echo pin setat ca intrare US_Servo.attach (11); // Servo SUA setat la pin 11 US_Servo.write (90); // SERVO-ul SUA AȘTEPTĂ ÎNAINTE

Left_Servo.attach (9); // Servo roata stângă la pinul 9

Left_Servo.write (90); // SERVOUL DE ROȚĂ STÂNGĂ setat la STOP

Right_Servo.attach (10); // Servo roata dreaptă setată la pinul 10

Right_Servo.write (90); // SERVO RUTA DREAPTA setat pe STOP delay (2000); // Așteptați 2 secunde distanță = readPing (); // Obțineți distanța de ping la întârzierea poziției înainte (100); // Așteptați 100 ms moveForward (); // ROBOTUL SE MUTĂ ÎNAINTE} // ------------------------------------------ -------------------------------------------------- ------------------------------------- bucla void () {int distanceRight = 0; // Inițiază distanța SUA la dreapta la 0 int distanțaLeft = 0; // Inițiază distanța SU la stânga la 0 //US_Servo.write(90); // Centrare servo SUA // întârziere (50); // US_Servo.write (70); // Uită-te ușor dreapta // întârziere (250); // US_Servo.write (110); // Uită-te ușor la stânga // întârziere (250); // US_Servo.write (90); // Uită-te în centru

if (distanța <= 20) // Robotul se deplasează înainte {moveStop (); // Robotul STOPS at distance = distanceLeft) // Decideți ce direcție să rotiți {turnRight (); // Partea dreaptă are cea mai mare distanță, ROBOTUL ÎNTORNIT DREAPTA pentru întârziere de 0,3 s (500); // Această întârziere determină lungimea virajului moveStop (); // Robot STOPS} else {turnLeft (); // Cea mai mare distanță din partea stângă, ROBOTUL ÎNCHEIE LA STÂNGA pentru 0.3s întârziere (500); // Această întârziere determină lungimea virajului moveStop (); // Robot STOPS}} else {moveForward (); // Robotul se deplasează înainte} distanță = readPing (); // SUA CITEȘTE NOU PING pentru noua direcție de deplasare} // ----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight () // Senzor cu ultrasunete FUNCȚIE UTILIZATĂ {US_Servo.write (30); // Servoul SUA MUTĂ DREAPTA la unghiul de întârziere (500); int distanță = readPing (); // Setați valoarea ping pentru întârzierea corectă (100); US_Servo.write (90); // Servoul american se deplasează spre centru distanța de întoarcere; // Distanța este setată} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int lookLeft () // Senzor cu ultrasunete LOOK FUNCTION STÂNGA {US_Servo.scrie (150); // Servoul american se deplasează la stânga până la întârzierea unghiului (500); int distanță = readPing (); // Setați valoarea ping pentru întârzierea la stânga (100); US_Servo.write (90); // Servo SUA MUTĂ ÎN CENTRU distanța de întoarcere; // Distanța este setată} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int readPing () // Funcția de citire Ping pentru senzorul cu ultrasunete. {întârziere (100); // 100ms între ping (timp min ping = 0.29ms) int cm = sonar.ping_cm (); // Distanța PING este adunată și setată în cm dacă (cm == 0) {cm = 250; } returnează cm; } // ----------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop () // ROBOT STOP {Left_Servo.write (90); // LeftServo 180 înainte, 0 invers Right_Servo.write (90); // RightServo 0 înainte, 180 invers} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward () // ROBOT FORWARD {Left_Servo.scrie (180); // LeftServo 180 înainte, 0 invers Right_Servo.write (0); // RightServo 0 înainte, 180 invers} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward () // ROBOT BACKWARD {Left_Servo.write (0); // LeftServo 180 înainte, 0 revers Right_Servo.write (180); // RightServo 0 înainte, 180 invers} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight () // ROBOT RIGHT {Left_Servo.scrie (180); // LeftServo 180 înainte, 0 revers Right_Servo.write (90); // RightServo 0 înainte, 180 invers} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft () // ROBOT STÂNGA {Left_Servo.scrie (90); // LeftServo 180 înainte, 0 revers Right_Servo.write (0); // RightServo 0 înainte, 180 invers} // --------------------------------------- -------------------------------------------------- ----------------------------------------

Pasul 3: Asamblați robotul

Image
Image
Asamblați robotul
Asamblați robotul
Asamblați robotul
Asamblați robotul

Acum este timpul să vă puneți robotul împreună. Pașii sunt enumerați mai jos.

1) Atașați discul servo rotund și benzile de cauciuc pe roți: Toate servo-urile vin cu elemente de fixare din plastic și șuruburi. Găsiți discurile rotunde și înșurubați-le în cele două găuri de pe partea plană a roților. Benzile de cauciuc se potrivesc în jurul roții pentru a oferi aderență. Poate doriți să adăugați puțin adeziv pentru a menține benzile de cauciuc la locul lor.

2) Atașament pentru rotor de marmură: Utilizați două șuruburi mici pentru a atașa rotorul de marmură la cele două triunghiuri din spate. Rola de marmură este un înlocuitor simplu pentru o roată din spate și oferă un punct de pivotare spate.

3) Introduceți servo-urile în sloturi (nu sunt necesare șuruburi): plasați servo-ul FS90 (pentru senzorul cu ultrasunete) în slotul frontal al corpului. Cele două servouri de rotație continuă alunecă în sloturile din stânga și din dreapta. Sloturile sunt proiectate pentru o fixare strânsă, astfel încât să nu fie necesare șuruburi pentru a menține servo-urile în poziție. Asigurați-vă că firele servo trec prin canelurile din sloturi astfel încât să fie orientate spre partea din spate a corpului.

4) Amplasarea bateriei de 9V (OPȚIONAL): Plasați bateria de 9V + conectorul de alimentare Arduino în spatele servomotorului frontal.

5) Ansamblu de montare a senzorului cu ultrasunete: Utilizați două șuruburi mici pentru a atașa unul dintre accesoriile de servodirecție din plastic alb incluse la partea inferioară a plăcii de montare a senzorului cu ultrasunete. Apoi, utilizați șurubul / piulița de 6 mm imprimate 3D (sau înlocuiți un șurub / piulița metalică) pentru a atașa carcasa senzorului ultrasonic la placa de montare. În cele din urmă, așezați senzorul în carcasă cu știfturile orientate în sus și fixați-l în partea din spate a carcasei.

6) Carcasă pentru baterii 4x AA: plasați carcasa bateriei AA în zona dreptunghiulară mare, cu comutatorul de pornire / oprire orientat spre spate.

7) Scutul senzorului Arduino Uno + V5: Atașați scutul la Arduino și plasați-l pe suporturile de deasupra carcasei bateriei. Conectorul de alimentare ar trebui să fie orientat spre stânga.

Robotul tău este construit! Ce a rămas? Programarea Arduino și conectarea cablurilor jumper: Servo-uri, senzor cu ultrasunete și sursă de alimentare.

Pasul 4: Atașați firele senzorului

Image
Image
Terminat!!! Conectați sursa de alimentare Arduino de 9V, porniți bateria și începeți să evitați obstacolele cu OAREE
Terminat!!! Conectați sursa de alimentare Arduino de 9V, porniți bateria și începeți să evitați obstacolele cu OAREE

Conectați firele servo la V5 Shield:

  1. Servo de rotire continuă stânga se atașează la codul PIN 9
  2. Servo de rotire continuă dreaptă se atașează la PIN 10
  3. Servo FS90 frontal se atașează la PIN 11

Conectați pinii senzorului cu ultrasunete (prin 4x fire jumper la femelă) la ecranul V5:

  1. Trigger la PIN 12
  2. Ecou la PIN 13
  3. VCC la oricare dintre pinii marcați cu „V”
  4. Împământare la oricare dintre știfturile marcate cu „G”

Conectați carcasa bateriei AA la ecranul V5:

  1. Atașați firul roșu pozitiv la conectorul VCC
  2. Atașați firul negativ negru la conexiunea la sol

Pasul 5: Finalizat !!! Conectați sursa de alimentare Arduino de 9V, porniți bateria și începeți să evitați obstacolele cu OAREE

Image
Image
Terminat!!! Conectați sursa de alimentare Arduino de 9V, porniți acumulatorul și începeți să evitați obstacolele cu OAREE
Terminat!!! Conectați sursa de alimentare Arduino de 9V, porniți acumulatorul și începeți să evitați obstacolele cu OAREE

Terminat!

1) Conectați sursa de alimentare Arduino de 9V (opțional)

2) Porniți acumulatorul

3) Începeți să evitați obstacolele cu OAREE !!!

Sunt sigur că te vei îndrăgosti de noul tău prieten, OAREE, după ce îl vei vedea simțind un obstacol, să-ți faci backup și să schimbi direcția. OAREE funcționează cel mai bine cu obiecte mari pe care senzorul cu ultrasunete le poate scoate (cum ar fi pereții). Este dificil să pingă obiecte mici, cum ar fi picioarele scaunului, datorită suprafeței mici și a colțurilor. Vă rugăm să partajați, să dezvoltați în continuare și să mă anunțați despre orice ajustări sau erori necesare. Aceasta a fost o experiență de învățare extraordinară și sper să vă distrați la fel de mult realizând acest proiect ca și mine!

Concurs de robotică
Concurs de robotică
Concurs de robotică
Concurs de robotică

Locul doi în concursul de robotică

Recomandat: