Sommario:
- Forniture
- Passaggio 1: stampa 3D: corpo, ruote, rotelle in marmo, bullone/dado da 6 mm e supporto per sensore a ultrasuoni
- Passaggio 2: programma Arduino
- Passaggio 3: assemblare il robot
- Passaggio 4: collegare i cavi del sensore
- Passaggio 5: finito!!! Collega l'alimentatore Arduino da 9 V, accendi la batteria e inizia a evitare gli ostacoli con OAREE
Video: OAREE - 3D Printed - Robot che evita gli ostacoli per l'educazione tecnica (OAREE) con Arduino: 5 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
Ci sono 5 parti per la stampa 3D.
- Corpo
- Ruote
- Marmo Caster
- Bullone/dado da 6 mm (opzionale, è possibile sostituire un dado/bullone in metallo)
- 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
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
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
Collegare i cavi Servo a V5 Shield:
- Il servo a rotazione continua sinistra si collega al PIN 9
- Il servo a rotazione continua destra si collega al PIN 10
- 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:
- Trigger al PIN 12
- Eco al PIN 13
- VCC a uno qualsiasi dei pin contrassegnati con 'V'
- Messa a terra su uno dei pin contrassegnati con 'G'
Collega la custodia per batterie AA allo schermo V5:
- Collegare il filo rosso positivo al connettore VCC
- 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
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!
Secondo classificato al concorso di robotica
Consigliato:
Quad per bambini che hackera un veicolo a guida autonoma, che segue la linea e rileva ostacoli.: 4 passaggi
Quad per bambini che ha hackerato un veicolo a guida autonoma, che segue la linea e che rileva gli ostacoli.: Nell'istruttivo di oggi trasformeremo un quad elettrico per bambini da 1000 Watt (sì, lo so molto!) In un veicolo a guida autonoma, che segue la linea e che evita gli ostacoli! Video dimostrativo: https://youtu.be/bVIsolkEP1kPer questo progetto avremo bisogno dei seguenti materiali
Rileva gli ostacoli in modo asincrono con gli ultrasuoni: 4 passaggi
Rileva gli ostacoli in modo asincrono con gli ultrasuoni: sto costruendo per divertimento un robot che voglio spostare autonomamente all'interno di una casa. È un lavoro lungo e lo sto facendo passo dopo passo. Questo focus istruibile sul rilevamento degli ostacoli con Arduino Mega. I sensori a ultrasuoni HC-SR04 vs HY-SRF05 sono economici e
Auto per evitare gli ostacoli: 5 passaggi
Auto per evitare gli ostacoli: l'auto con sensore angolare è un'auto intelligente per l'auto-evitamento, il corpo dell'auto con telaio in alluminio, il controllo principale tramite microcontrollore Arduino / Nano, il circuito adotta un design plug-in (è più facile collegare il sensore esterno tramite microcontrollore
Guardare l'eclissi con gli occhiali da lettura (e non bruciarmi gli occhi): 4 passaggi (con immagini)
Guardando l'Eclipse con gli occhiali da lettura (e senza bruciarmi gli occhi): Ehi, ho colto la tua curiosità con il mio titolo? Anche mio padre lo ha fatto, mentre ieri stavamo passeggiando nella vecchia Montréal, si è tolto gli occhiali e mi ha mostrato come vedere come vedere l'eclissi, pensavano i suoi occhiali da lettura. Quindi tutto ciò che
$ 20 Arduino per evitare gli ostacoli Smart Car: 4 passaggi
$ 20 Arduino Obstacle Avoidance Smart Car: Spero che ti sia piaciuto il video qui sopra, in questo tutorial, puoi farti una di questa auto robot per evitare gli ostacoli per meno di $ 30. Cosa ti servirà: $ 19,99 Smart Robot Car kit: https://www. banggood.com/DIY-L298N-2WD-Ultrasonic…Parti che potresti anche