This shows you the differences between two versions of the page.
pm:prj2021:amocanu:maze_runner [2021/06/03 01:25] catalin.stircu |
pm:prj2021:amocanu:maze_runner [2021/06/03 10:04] (current) catalin.stircu [Autor] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Maze Runner ====== | ====== Maze Runner ====== | ||
+ | |||
+ | ===== Autor ===== | ||
+ | [[catalin.stircu@stud.acs.upb.ro|Cătălin STÎRCU]] | ||
+ | |||
===== Introducere ===== | ===== Introducere ===== | ||
<note tip> | <note tip> | ||
- | Prezentarea pe scurt a proiectului vostru: | + | * acest proiect prezintă un robot ce caută să găsească ieșirea dintr-un labirint |
- | * ce face | + | * scopul acestui proiect este rezolvarea oricărui labirint folosind regula de dreapta, adica robotul urmarește peretele drept până la finalul labirintului |
- | * care este scopul lui | + | * mi-a venit acesta idee de la concursurile de roboți unde se regăsește o categorie ce are ca scop crearea unui astfel de robot și am vrut să văd daca aș fi în stare să construiesc așa ceva |
- | * care a fost ideea de la care aţi pornit | + | * utilitatea acestui proiect se regăsește în secreția de endorfină creată în urma construiri și perfecționării proiectului și în concurarea cu alte persoane pentru a vedea al cărui robot rezolvă labirintul mai repede |
- | * de ce credeţi că este util pentru alţii şi pentru voi | + | |
</note> | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | + | ==== Sumar implementare ==== |
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | |
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | <note tip> |
+ | Acest robot folosește doi senzori de distanță pentru a afla dacă este o cale liberă în partea din dreapta sau este un perete în față. În primul caz vrează spre dreapta, în al doilea, virează spre stânga. Direcția de mers a motoarelor ce controlează roțile este manipulată de driver-ul de motoare ce este mai departe controlat de plăcuța Arduino după codul din ea. Acest robot mai are și funcția de start și stop ce poate fi accesată cu ajutorul modulului bluetooth ce poate fi controlat cu orice alt dispozitiv bluetooth. | ||
</note> | </note> | ||
+ | ==== Schemă bloc ==== | ||
+ | {{ :pm:prj2021:amocanu:schema_bloccs.jpg?500 |}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | ==== Listă de componente ==== |
- | Aici puneţi tot ce ţine de hardware design: | + | * Placă Arduino Nano |
- | * listă de piese | + | * Senzori de distanță HCSR04 x2 |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * Baterii 9V x2 |
- | * diagrame de semnal | + | * Driver Bluetooth HC-05 |
- | * rezultatele simulării | + | * Driver de motoare L298N |
- | </note> | + | * Motoare x2 |
+ | ==== Schemă electrică ==== | ||
+ | {{ :pm:prj2021:amocanu:circuitcs.jpg?500 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mediu de dezvoltare: Arduino IDE | ||
- | <note tip> | + | * Funcția walkForward primește ca parametru un întreg x și setează motoarele pentru a merge înainte timp de x milisecunde, după care le setează să se oprească timp de 50 de milisecunde. |
- | Descrierea codului aplicaţiei (firmware): | + | * Funcția turnRight primește ca parametru un întreg x și apelează funcția walkForward pentru 150 de milisecunde la începutul și sfârșitul funcției, după care setează motoarele să întoarcă înspre dreapta. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Funcția turnLeft primește ca parametru un întreg x și apelează funcția walkForward pentru 150 de milisecunde la începutul și sfârșitul funcției, după care setează motoarele să întoarcă înspre stânga. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Funcția spaceUntilFront întoarce disanța până la peretele din față. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Funcția spaceUntilRight întoarce disanța până la peretele din dreapta. |
- | * (etapa 3) surse şi funcţii implementate | + | * Funcția setup setează starea pinilor. |
- | </note> | + | * Funcția loop așteaptă semnalul de start din partea driver-ului de bluetooth, iar când îl primește testează să vadă dacă mai este distanță până la peretele din față, în caz contrar întoarce înspre stânga, iar dacă mai este testează dacă este un perete în dreapta, dacă este robotul o ia înainte, altfel o ia la dreapta, testând mereu dacă are loc în față și dacă trebuie să se oprească din cauza semnalului primit prin bluetooth. |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{ :pm:prj2021:amocanu:ardu1.jpg?400 |}} | ||
+ | {{ :pm:prj2021:amocanu:1622683305489.jpg?400 |}} | ||
+ | {{ :pm:prj2021:amocanu:1622683305505.jpg?400 |}} | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Link youtube |
+ | https://www.youtube.com/watch?v=GfzTKmOlQQE | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Deși proiectul a ieșit destul de bine, se puteau face mai multe îmbunătățiri: | ||
+ | * În primul rând nu este nicio modalitate concretă de a îi spune robotului să se întoarcă 90 de grade | ||
+ | * În al doilea rând, cauciucurile sunt de proastă calitate și au probleme pe anumite tipuri de teren | ||
+ | * În al treilea rând, senzorii sunt de proastă calitate, unul dintre ei s-a defectat, noroc că aveam unul de rezervă, distanța nu este exactă, iar uneori este mult mai mare | ||
+ | * Nu există nicio cale de calcul a distanței parcurse, deci nu se poate face un algoritm care să repete traseul, fără a folosi senzorii pentru a doua parcurgere de labirint | ||
+ | * Senzorul bluetooth trebuia pus împreună cu un buton, pentru a nu fi nevoie să fie deconectat de fiecare dată când trebuie încărcat codul | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2021:amocanu:mazerunner.zip|}} |
- | 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ă ;-). | + | ===== Bibliografie/Resurse ===== |
- | 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> |
- | </note> | + | https://create.arduino.cc/projecthub/electropeak/getting-started-with-hc-05-bluetooth-module-arduino-e0ca81 |
- | ===== Jurnal ===== | + | https://create.arduino.cc/projecthub/ryanchan/how-to-use-the-l298n-motor-driver-b124c5 |
- | <note tip> | + | https://create.arduino.cc/projecthub/abdularbi17/ultrasonic-sensor-hc-sr04-with-arduino-tutorial-327ff6 |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
- | + | ||
- | ===== Bibliografie/Resurse ===== | + | |
- | + | ||
- | <note> | + | |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
</note> | </note> | ||
<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> | ||