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. | ||
| - | ===== Rezultate Obţinute ===== | + | **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> | <html> | ||
| <body> | <body> | ||
| <iframe | <iframe | ||
| - | width="560" | + | width="728" |
| - | height="315" | + | height="410" |
| src="https://www.youtube.com/embed/X4t-Xk18_5Q" | src="https://www.youtube.com/embed/X4t-Xk18_5Q" | ||
| title="YouTube video player" | title="YouTube video player" | ||
| Line 122: | Line 144: | ||
| ===== Concluzii ===== | ===== 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 ===== | ===== Download ===== | ||
| + | *Cod Sursa: {{:pm:prj2023:gpatru:maciuca_alexandru_petru_334ca_proiectpm.zip|}} | ||
| - | <note warning> | ||
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-) LOL. | ||
| - | |||
| - | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
| - | </note> | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| - | <note tip> | + | |
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | *21.04: Alegere tema |
| - | </note> | + | *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 ===== | ===== Bibliografie/Resurse ===== | ||
| - | <note> | + | *Conectarea motor driver-ului: https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/ |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | *Conectarea senzorului ultrasonic HC-SR04 si a servomotorului SG90 impreuna: https://arduinogetstarted.com/tutorials/arduino-ultrasonic-sensor-servo-motor |
| - | </note> | + | *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> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||