This shows you the differences between two versions of the page.
|
pm:prj2023:gpatru:line-follower-and-obstacle-avoiding-robot [2023/05/29 18:18] alexandru.maciuca [Software Design] |
pm:prj2023:gpatru:line-follower-and-obstacle-avoiding-robot [2023/05/30 06:30] (current) alexandru.maciuca [Software Design] |
||
|---|---|---|---|
| Line 17: | Line 17: | ||
| </note> | </note> | ||
| - | {{:pm:prj2023:gpatru:schema_generala.png?800|}} | + | {{:pm:prj2023:gpatru:schema_generala.png?750|}} |
| Line 23: | Line 23: | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | {{:pm:prj2023:gpatru:schema_hardware.png?800|}} | + | {{:pm:prj2023:gpatru:schema_hardware.png?750|}} |
| Componente Hardware utilizate: | Componente Hardware utilizate: | ||
| Line 49: | Line 49: | ||
| ===== Schema Electrica ====== | ===== Schema Electrica ====== | ||
| - | {{:pm:prj2023:gpatru:schema_software1.png?800|}} | + | {{:pm:prj2023:gpatru:schema_software1.png?750|}} |
| - | {{:pm:prj2023:gpatru:schema_software2.png?800|}} | + | {{:pm:prj2023:gpatru:schema_software2.png?750|}} |
| Conectare Senzor Ultrasonic HC-SR04 | Conectare Senzor Ultrasonic HC-SR04 | ||
| Line 91: | Line 91: | ||
| **Etapa de initializare** | **Etapa de initializare** | ||
| - | - Este inclusa biblioteca suplimentara <<servo.h>> | + | - Este inclusa biblioteca suplimentara <<servo.h>>. |
| - Sunt definiti majoritatea pinilor folositi in conformitate cu schema hardware. | - Sunt definiti majoritatea pinilor folositi in conformitate cu schema hardware. | ||
| - Sunt declarate si initializate restul de variabile globale necesare in rezolvarea probei software. | - Sunt declarate si initializate restul de variabile globale necesare in rezolvarea probei software. | ||
| **Etapa de Setup** | **Etapa de Setup** | ||
| - | - Este setata starea pinilor, si anume cea de //OUTPUT//, //INPUT// sau //INPUT_PULLUP// | + | - Este setata starea pinilor, si anume cea de //OUTPUT//, //INPUT// sau //INPUT_PULLUP//. |
| - | - Este initializat si configurat un pin specific pentru a controla servomotorul | + | - Este initializat si configurat un pin specific pentru a controla servomotorul. |
| - Este atasata o rutina de intrerupere pentru ambii senzori de **IR** de pe margini. | - Este atasata o rutina de intrerupere pentru ambii senzori de **IR** de pe margini. | ||
| **Etapa de implementare a miscarii** | **Etapa de implementare a miscarii** | ||
| - Functiile: //go_stop//, //go_forward//, //go_left//, //go_right//, sunt foarte asemanatoare si indeplinesc acelasi scop: de a seta diferite viteze pe motoare si valori pe pinii corespunzatori. | - Functiile: //go_stop//, //go_forward//, //go_left//, //go_right//, sunt foarte asemanatoare si indeplinesc acelasi scop: de a seta diferite viteze pe motoare si valori pe pinii corespunzatori. | ||
| - | - Functia //followLine// se ocupa cu calcularea unor sume partiale pentru a decide directia in care sa se indrepte robotelul. Sumele provin din valorile analogice ale pinilor de *IR* aflati pe matrice QTRX-HD-06A. | + | - Functia //followLine// se ocupa cu calcularea unor sume partiale pentru a decide directia in care sa se indrepte robotelul. |
| + | - Sumele provin din valorile analogice ale pinilor de **IR** aflati pe matrice QTRX-HD-06A. | ||
| + | - Functiile: //turnObstacleRight// si //turnObstacleLeft// se ocupa cu partea de ocolire a unui obstacol, folosindu-se la baza de functiile definite mai sus. | ||
| + | |||
| + | **Etapa de identificare a unui obstacol** | ||
| + | - Sunt definite variabile locale care sa calculeze distanta si durata. | ||
| + | - Urmeaza o secventa de cod care e menita sa genereze semnalul de trigger catre senzorul de ultrasunete. | ||
| + | - Apoi este folosita functia de //pulseIn// pentru a extrage durata de timp necesara primirii unui puls sau impuls. | ||
| + | - Intr-un final se poate aplica o formula matematica pentru a extrage distanta.(//avand in vedere, o mica eroare//) | ||
| + | |||
| + | **Etapa de evitare a unui obstacol** | ||
| + | - Este actionat servomotorul sub trei unghiuri diferite menite sa acopere directiile: "stanga", "dreapta", si "fata". | ||
| + | - Datorita cablului USB care poate sa agate, am decis in teste sa realizez ocolirea numai pe partea dreapta. | ||
| + | |||
| + | **Etapa de loop** | ||
| + | - Calculeaza distanta pana la obiect folosindu-se de functiile descrise mai sus. | ||
| + | - Daca distanta obtinuta este mai mica decat o valoare de **THRESHOLD**, atunci avem un obstacol in fata si va trebui sa il evitam. | ||
| + | - In caz contrar, robotul trebuie doar sa urmareasca linia. | ||
| + | |||
| + | ===== Fotografii ===== | ||
| + | {{:pm:prj2023:gpatru:robot1.jpg?300|}} | ||
| + | {{:pm:prj2023:gpatru:robot2.jpg?400|}} | ||
| + | {{:pm:prj2023:gpatru:robot3.jpg?400|}} | ||
| + | {{:pm:prj2023:gpatru:robot4.jpg?300|}} | ||
| + | |||
| + | ===== Youtube ===== | ||
| + | <html> | ||
| + | <body> | ||
| + | <iframe | ||
| + | width="728" | ||
| + | height="410" | ||
| + | src="https://www.youtube.com/embed/X4t-Xk18_5Q" | ||
| + | title="YouTube video player" | ||
| + | frameborder="0" | ||
| + | allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" | ||
| + | allowfullscreen | ||
| + | ></iframe> | ||
| + | </body> | ||
| + | </html> | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | |||
| + | Acest proiect a reprezentat prima mea incursiune in lumea hardware si pot spune ca a fost o experienta cu suisuri si coborasuri. Am intampinat destul de multe probleme legate de alimentare. Dupa ce am reusit sa le rezolv pe acestea, au aparut altele noi, legate de senzorii **IR**, care s-au dovedit a fi montati intr-un spatiu mult mai restrans decat asteptarile mele. M-am stresat destul de tare cu acest proiect, insa sunt oarecum multumit de rezultatul final. | ||
| + | ===== Download ===== | ||
| + | *Cod Sursa: {{:pm:prj2023:gpatru:maciuca_alexandru_petru_334ca_proiectpm.zip|}} | ||
| + | |||
| + | |||
| + | ===== Jurnal ===== | ||
| + | |||
| + | |||
| + | *21.04: Alegere tema | ||
| + | *23.04: Crearea paginii de wiki | ||
| + | *30.04: Prima comanda de piese de pe OptimusDigital | ||
| + | *14.05: O prima incercare de asamblare a hardware-ului | ||
| + | *15.05: O a doua comanda de piese de pe OptimusDigital | ||
| + | *21.05: Implementarea unei parti a componentei software pentru testare | ||
| + | *28.05: Construire pista si rezolvare de bug-uri | ||
| + | *29.05: Finalizare pagina de wiki | ||
| + | |||
| + | ===== Bibliografie/Resurse ===== | ||
| + | |||
| + | *Conectarea motor driver-ului: https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/ | ||
| + | *Conectarea senzorului ultrasonic HC-SR04 si a servomotorului SG90 impreuna: https://arduinogetstarted.com/tutorials/arduino-ultrasonic-sensor-servo-motor | ||
| + | *Conectarea matricii de senzori **IR**: https://www.youtube.com/watch?v=KeXoS4568w0 | ||
| + | *Informatii generale despre //LineFollower//: https://edu.ieee.org/lk-uomras/blog/analog-line-following-robot/ | ||
| + | |||
| + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||