Sommario:

OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino: 5 passaggi (con immagini)
OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino: 5 passaggi (con immagini)

Video: OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino: 5 passaggi (con immagini)

Video: OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino: 5 passaggi (con immagini)
Video: 3D Printing Meets Robotics: How to Make Your Own SMARS Robot #3dprinting 2024, Giugno
Anonim
Image
Image
OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino
OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino
OAREE - Stampato in 3D - Robot che evita gli ostacoli per l'educazione all'ingegneria (OAREE) con Arduino
OAREE - Stampato in 3D - Robot che evita gli ostacoli per l'educazione all'ingegneria (OAREE) con Arduino

OAREE (Robot che evita ostacoli per la formazione in ingegneria)

Design: L'obiettivo di questo tutorial era quello di progettare un robot OAR (Obstacle Avoiding Robot) che fosse semplice/compatto, stampabile in 3D, facile da assemblare, che utilizzasse servi a rotazione continua per il movimento e avesse il minor numero possibile di parti acquistate. Credo di essere riuscito a creare questo fantastico robot e di averlo chiamato OAREE (Obstacle Avoiding Robot for Engineering Education). Questo robot rileverà gli ostacoli, si fermerà, guarderà a destra e a sinistra, quindi si girerà nella direzione senza ostacoli e continuerà in avanti.

Contesto: Internet ha numerosi ostacoli per evitare i robot, ma la maggior parte è ingombrante, difficile da montare e costosa. Molti di questi robot hanno fornito il codice Arduino, ma è stato difficile trovare un esempio ben congegnato e funzionante. Volevo anche usare servi a rotazione continua per le ruote (invece di motori a corrente continua), cosa che non era ancora stata fatta. Quindi, sono partito per la missione di sviluppare un robot OAR compatto e fantasioso da condividere con il mondo.

Ulteriore sviluppo: questo robot può essere ulteriormente sviluppato per una migliore precisione del ping, aggiungendo sensori IR per la capacità di seguire la linea, schermo LCD per visualizzare la distanza degli ostacoli e molto altro.

Forniture

  • 1x Arduino Uno -
  • 1x protezione sensore V5 -
  • 1x Portabatterie 4xAA con interruttore On/Off -
  • 1x Servo SG90 -
  • 2x servi a rotazione continua -
  • 1x Cavo di alimentazione a batteria 9V per Arduino (OPZIONALE) -
  • 1x sensore a ultrasuoni HC-SR04 -
  • 4x cavi jumper femmina-femmina -
  • 2x elastici
  • 1x batteria da 9 V (OPZIONALE)
  • 4 batterie AA
  • 4x viti piccole (4 x 1/2 o qualcosa di simile)
  • Cacciavite a stella
  • Colla per il fissaggio degli elastici alle ruote

Passaggio 1: stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni

Stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni
Stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni
Stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni
Stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni
Stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni
Stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni

Ci sono 5 parti per la stampa 3D.

  1. Corpo
  2. Ruote
  3. Marmo Caster
  4. Bullone/dado da 6 mm (opzionale, è possibile sostituire un dado/bullone in metallo)
  5. Supporto per sensore a ultrasuoni

Tutti i file. STL richiesti sono inclusi in questa istruzione così come i file di Sketchup. Si consiglia un riempimento del 40%.

Passaggio 2: programma Arduino

Image
Image
Assemblare il Robot
Assemblare il Robot

Invia codice ad Arduino UNO: utilizzando l'IDE Arduino, invia il codice (nel file allegato) al tuo modulo Arduino. Dovrai scaricare e includere le librerie servo.h e newping.h con questo sketch.

Il codice è completamente commentato, così puoi vedere cosa fa ogni comando. Se lo si desidera, è possibile modificare facilmente la distanza del sensore a ultrasuoni su un valore maggiore o minore. Questo è un codice iniziale ed è pensato per essere ampliato e utilizzato per ulteriori sviluppi del progetto.

// ROBOT PER EVITARE OSTACOLI// [email protected], [email protected], University of TN at Chattanooga, Ingegneria elettrica, FALL 2019 // Materiali richiesti: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3)HCSR04 Sensore a ultrasuoni, 4) Servo FS90 (per sensore a ultrasuoni) // 5 e 6) 2x SERVI A ROTAZIONE CONTINUA per le ruote // 7) Marmo da 16 mm per il perno delle ruote posteriori, 8 e 9) 2 elastici per le ruote // 10- 15) 1x (4xAA) Portabatterie con interruttore on/off, 16&17) Batteria 9V con connettore per alimentare Arduino UNO // STAMPA 3D: // 18) Corpo ROBOT, 19&20) 2x Ruote, 21) Marble Caster, 22) Sensore a ultrasuoni Supporto e vite da 6 mm (vedi file allegati) //-------------------------------------- --------------------------------------------------- ----------------------------------------- #include // Includi libreria servo #include // Includi libreria Newping //-------------- --------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // Trigger US al pin 12 su Arduino #define ECHO_PIN 13 // Echo US al pin 13 su Arduino #define MAX_DISTANCE 250 // Distanza al ping (max è 250) int distance = 100; //------------------------------------------------ --------------------------------------------------- ---------------- Servo US_Servo; // Sensore a ultrasuoni Servo Servo Left_Servo; // Servo ruota sinistra Servo Servo Right_Servo; // Servo ruota destra NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup dei pin e distanza massima. //------------------------------------------------ --------------------------------------------------- ---------------- void setup() // INGRESSI/USCITE, DOVE ATTACCARE, IMPOSTARE POSIZIONE/SPOSTAMENTO INIZIALE { pinMode(12, OUTPUT); // Pin trigger impostato come output pinMode(13, INPUT); // Echo pin impostato come input US_Servo.attach(11); // US Servo impostato sul pin 11 US_Servo.write(90); // IL SERVO USA GUARDA AVANTI

Left_Servo.attach(9); // Servo della ruota sinistra al pin 9

Left_Servo.write(90); // SERVO RUOTA SINISTRA impostato su STOP

Right_Servo.attach(10); // Servo della ruota destra impostato sul pin 10

Right_Servo.write(90); // SERVO RUOTA DESTRA impostato su STOP delay(2000); // Attendi 2 secondi a distanza = readPing(); // Ottieni Ping Distance alla posizione in avanti delay (100); // Attendi 100 ms moveForward(); // ROBOT SI MUOVE IN AVANTI } //---------------------------- --------------------------------------------------- ------------------------------------- void loop() { int distanceRight = 0; // Avvia la distanza US a destra a 0 int distanceLeft = 0; // Inizia la distanza US a sinistra a 0 //US_Servo.write(90); // Center US servo //delay(50); // US_Servo.write(70); // Guarda leggermente a destra // delay(250); // US_Servo.write(110); // Guarda leggermente a sinistra // delay(250); // US_Servo.write(90); // Look Center

if (distanza <= 20) // Il robot si MUOVE IN AVANTI { moveStop(); // Il Robot SI FERMA alla distanza = distanceLeft) // Decidi in quale direzione girare { turnRight(); // Il lato destro ha la massima distanza, il ROBOT GIRA A DESTRA per un ritardo di 0,3 secondi (500); // Questo ritardo determina la lunghezza del turno moveStop(); // Robot SI ARRESTA } else { turnLeft(); // Distanza massima sul lato sinistro, ROBOT GIRA A SINISTRA per un ritardo di 0,3 s (500); // Questo ritardo determina la lunghezza del turno moveStop(); // Robot SI ARRESTA } } else { moveForward(); // Robot SI MUOVE IN AVANTI } distanza = readPing(); // US READS NEW PING per la nuova direzione di marcia } //----------------------------------- --------------------------------------------------- ------------------------------ int lookRight() // Sensore a ultrasuoni GUARDA A DESTRA FUNZIONE { US_Servo.write(30); // Il servo US SI MUOVE A DESTRA per l'angolo di ritardo (500); int distanza = readPing(); // Imposta il valore ping per il ritardo destro (100); US_Servo.write(90); // Il servo USA SI MUOVE AL CENTRO distanza di ritorno; // La distanza è impostata } //---------------------------- --------------------------------------------------- ------------------------------------- int lookLeft() // Sensore a ultrasuoni LOOK LEFT FUNCTION { US_Servo.scrivi(150); // Il servo USA SI MUOVE A SINISTRA all'angolo di ritardo (500); int distanza = readPing(); // Imposta il valore del ping per il ritardo sinistro (100); US_Servo.write(90); // Il servo USA SI MUOVE AL CENTRO distanza di ritorno; // La distanza è impostata } //---------------------------- --------------------------------------------------- ------------------------------------- int readPing() // Leggi la funzione Ping per il sensore a ultrasuoni. { ritardo(100); // 100 ms tra i ping (tempo di ping minimo = 0,29 ms) int cm = sonar.ping_cm(); // viene raccolta la distanza PING e impostata in cm if (cm==0) { cm=250; } restituisce cm; } //------------------- --------------------------------------------------- -------------------------------- void moveStop() // ROBOT STOP { Left_Servo.write(90); // LeftServo 180 avanti, 0 indietro Right_Servo.write(90); // RightServo 0 avanti, 180 indietro } //--------------------------------------- --------------------------------------------------- ----------------------------------------- void moveForward() // ROBOT FORWARD { Left_Servo.scrivi(180); // LeftServo 180 avanti, 0 indietro Right_Servo.write(0); // RightServo 0 avanti, 180 indietro } //--------------------------------------- --------------------------------------------------- ----------------------------------------- void moveBackward() // ROBOT BACKWARD { Left_Servo.write(0); // LeftServo 180 avanti, 0 indietro Right_Servo.write(180); // RightServo 0 avanti, 180 indietro } //--------------------------------------- --------------------------------------------------- ---------------------------------------- void turnRight() // ROBOT RIGHT { Left_Servo.scrivi(180); // LeftServo 180 avanti, 0 indietro Right_Servo.write(90); // RightServo 0 avanti, 180 indietro } //--------------------------------------- --------------------------------------------------- ----------------------------------------- void turnLeft() // ROBOT LEFT { Left_Servo.scrivi(90); // LeftServo 180 avanti, 0 indietro Right_Servo.write(0); // RightServo 0 avanti, 180 indietro } //--------------------------------------- --------------------------------------------------- --------------------------

Passaggio 3: assemblare il robot

Image
Image
Assemblare il Robot
Assemblare il Robot
Assemblare il Robot
Assemblare il Robot

Ora è il momento di mettere insieme il tuo robot. I passaggi sono elencati di seguito.

1) Fissare il disco del servo tondo e gli elastici alle ruote: tutti i servi sono dotati di bulloneria e viti di montaggio in plastica. Trova i dischi rotondi e avvitali nei due fori sul lato piatto delle ruote. Gli elastici si adattano intorno alla ruota per fornire presa. Potresti voler aggiungere un po' di colla per mantenere gli elastici in posizione.

2) Fissaggio della ruota in marmo: utilizzare due piccole viti per fissare la ruota in marmo ai due triangoli sul retro. La ruota in marmo è un semplice sostituto per una ruota posteriore e fornisce un punto di articolazione posteriore.

3) Inserire i servi negli slot (non sono necessarie viti): posizionare il servo FS90 (per il sensore a ultrasuoni) nello slot anteriore del corpo. I due servi a rotazione continua scorrono negli slot sinistro e destro. Gli slot sono progettati per una perfetta aderenza, in modo che non siano necessarie viti per tenere i servi in posizione. Assicurati che i cavi del servo passino attraverso le scanalature nelle fessure in modo che siano rivolti verso la parte posteriore del corpo.

4) Posizionamento della batteria da 9 V (OPZIONALE): posizionare la batteria da 9 V + il connettore di alimentazione Arduino dietro il servo anteriore.

5) Montaggio del sensore a ultrasuoni: utilizzare due piccole viti per fissare uno dei servi in plastica bianca inclusi nella parte inferiore della piastra di montaggio del sensore a ultrasuoni. Successivamente, utilizzare il bullone/dado da 6 mm stampato in 3D (o sostituire un bullone/dado in metallo) per fissare la custodia del sensore a ultrasuoni alla piastra di montaggio. Infine, posiziona il sensore nella custodia con i perni rivolti verso l'alto e fai scattare la parte posteriore della custodia.

6) Custodia per batterie AA 4x: posizionare la custodia per batterie AA nell'ampia area rettangolare, con l'interruttore di accensione/spegnimento rivolto verso il retro.

7) Arduino Uno + Sensor Shield V5: collegare lo shield all'Arduino e posizionarlo sui supporti sopra la custodia della batteria. Il connettore di alimentazione deve essere rivolto a sinistra.

Il tuo robot è costruito! Cos'è rimasto? Programmazione dell'Arduino e collegamento dei cavi dei ponticelli: servi, sensore a ultrasuoni e alimentatore.

Passaggio 4: collegare i cavi del sensore

Image
Image
Finito!!! Collega l'alimentatore Arduino da 9 V, accendi la batteria e inizia a evitare gli ostacoli con OAREE
Finito!!! Collega l'alimentatore Arduino da 9 V, accendi la batteria e inizia a evitare gli ostacoli con OAREE

Collegare i cavi Servo a V5 Shield:

  1. Il servo a rotazione continua sinistra si collega al PIN 9
  2. Il servo a rotazione continua destra si collega al PIN 10
  3. Il servo anteriore FS90 si collega al PIN 11

Collegare i pin del sensore a ultrasuoni (tramite 4 cavi jumper da femmina a femmina) allo schermo V5:

  1. Trigger al PIN 12
  2. Eco al PIN 13
  3. VCC a uno qualsiasi dei pin contrassegnati con 'V'
  4. Messa a terra su uno dei pin contrassegnati con 'G'

Collega la custodia per batterie AA allo schermo V5:

  1. Collegare il filo rosso positivo al connettore VCC
  2. Collegare il filo nero negativo al collegamento di terra

Passaggio 5: finito!!! Collega l'alimentatore Arduino da 9 V, accendi la batteria e inizia a evitare gli ostacoli con OAREE

Image
Image
Finito!!! Collega l'alimentatore Arduino da 9 V, accendi la batteria e inizia a evitare gli ostacoli con OAREE
Finito!!! Collega l'alimentatore Arduino da 9 V, accendi la batteria e inizia a evitare gli ostacoli con OAREE

Finito!

1) Collegare l'alimentatore Arduino 9V (Opzionale)

2) Accendere il pacco batteria

3) Inizia ad evitare gli ostacoli con OAREE!!!

Sono sicuro che ti affezionerai al tuo nuovo amico, OAREE, dopo averlo visto percepire un ostacolo, fare marcia indietro e cambiare direzione. OAREE funziona al meglio con oggetti di grandi dimensioni da cui il sensore a ultrasuoni può eseguire il ping (come le pareti). Ha difficoltà a eseguire il ping di piccoli oggetti come le gambe delle sedie a causa della loro piccola superficie e angoli. Per favore condividi, sviluppa ulteriormente e fammi sapere di eventuali aggiustamenti o errori necessari. Questa è stata una grande esperienza di apprendimento e spero che ti divertirai tanto a realizzare questo progetto quanto me!

Concorso di robotica
Concorso di robotica
Concorso di robotica
Concorso di robotica

Secondo classificato al concorso di robotica

Consigliato: