This shows you the differences between two versions of the page.
pm:prj2022:dbrezeanu:obstacle-avoider [2022/06/05 01:28] alexandra.liferi |
pm:prj2022:dbrezeanu:obstacle-avoider [2022/06/07 01:22] (current) alexandra.liferi [Intoduction] |
||
---|---|---|---|
Line 9: | Line 9: | ||
- | Proiectul constă în realizarea unui robot care evita obstacolele si cauta ruta optima in care sa se deplaseze. Scopul pe care l-am urmărit în implementarea robotului a fost sa relizez un robot care sa fie baza unor urmatoare proiecte (+ un ajutor in a cara obiecte). Ideea mi-a venit cand am vazut delivery robots din Helsinki, imi doresc ca in viitor sa fac ceva asemanator asa ca am pornit cu baza. Desi putem cara obiecte si singuri, e mult mai usor sa nu o facem asta, plus e mult mai distractiv sa automatizam un task usor intr-un mod atat de dragut (robotul seamana cu wall-e) de aceea am ales sa fac acest robot cu ajutorul placii de dezvoltare Arduino Uno. | + | Proiectul constă în realizarea unui robot care evita obstacolele si cauta ruta optima in care sa se deplaseze. Scopul pe care l-am urmărit în implementarea robotului a fost sa relizez un robot care sa fie baza unor urmatoare proiecte (+ un ajutor in a cara obiecte). Ideea mi-a venit cand am vazut delivery robots din Helsinki, imi doresc ca in viitor sa fac ceva asemanator asa ca am pornit cu baza. Desi putem cara obiecte si singuri, e mult mai usor sa nu o facem asta, plus e mult mai distractiv sa automatizam un task usor intr-un mod atat de dragut (robotul seamana cu Wall-e) de aceea am ales sa fac acest robot cu ajutorul placii de dezvoltare Arduino Uno. |
- | } | + | |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
<note tip> | <note tip> | ||
- | 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 | + | Wall-E este alimentat de o baterie de 9 volti si porneste atunci cand este actionat power switch-ul de langa aceasta. Cand robotul este alimentat acesta isi va indrepta senzorul ultrasonic in fata si va astepta cateva secunde inainte de a merge inainte. Wall-E merge in linie dreapta pana cand da de un obstacol ce poate fii semnalat cu ajutorul senzorului ultrasonic, atunci cand se intampla asta Wall-E o sa roteasca senzorul in stanga si in dreapta cu ajutorul servomotorului, distinge directia in care nu este un obstacol sesizabil si isi schimba directia. |
</note> | </note> | ||
+ | {{:pm:prj2022:dbrezeanu:diagrama.png|}} | ||
+ | |||
- | Wall-E este alimentat de o baterie de 9 volti si porneste atunci cand este actionat power switch-ul de langa aceasta. Cand robotul este alimentat acesta isi va indrepta senzorul ultrasonic in fata si va astepta cateva secunde inainte de a merge in fata. Wall-E merge in linie dreapta pana cand da de un obstacol ce poate fii semnalat cu ajutorul senzorului ultrasonic, atunci cand se intampla asta Wall-E o sa roteasca senzorul in stanga si in dreapta, distinge directia in care nu este un obstacol sesizabil si isi schimba directia. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | {{:pm:prj2022:dbrezeanu:cirduitd.jpg?700|}} | ||
<note tip> | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | + | **Piese:** |
- | * listă de piese | + | * Arduino Uno |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * L293D Motor Driver Shield |
- | * diagrame de semnal | + | * TT Gear Motor x4 |
- | * rezultatele simulării | + | * Roata x4 |
+ | * Servo Motor | ||
+ | * Ultrasonic Sensor | ||
+ | * DC Power Switch | ||
+ | * Baterie de 9V | ||
+ | * 9V battery snap connector | ||
</note> | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | |||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | **Librarii externe:** |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * [[https://learn.adafruit.com/adafruit-motor-shield/library-install|AFMotor Library]] |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * [[https://github.com/livetronic/Arduino-NewPing//|Arduino-NewPing]] |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * [[https://github.com/arduino-libraries/Servo.git//|Servo Library]] |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
+ | Modul in care functioneaza robotul este simplu. | ||
+ | Cand placa este alimentata servo motorul indreapta senzorul in fata. Cand distanta este mai mica sau egala cu 15, robotul de intoarce si verifica distanta din stanga si din dreapta. | ||
+ | <code> | ||
+ | if(distance<=15) | ||
+ | { | ||
+ | moveStop(); | ||
+ | delay(100); | ||
+ | moveBackward(); | ||
+ | delay(300); | ||
+ | moveStop(); | ||
+ | delay(200); | ||
+ | distanceR = lookRight(); | ||
+ | delay(200); | ||
+ | distanceL = lookLeft(); | ||
+ | delay(200); | ||
+ | </code> | ||
+ | |||
+ | Daca distanta fata de un obiect din dreapta este mai mare mare decat cea din stanga Wall-E merge la dreapta, in caz contrar merge la stanga: | ||
+ | |||
+ | <code> | ||
+ | |||
+ | if(distanceR>=distanceL) | ||
+ | { | ||
+ | turnRight(); | ||
+ | moveStop(); | ||
+ | }else | ||
+ | { | ||
+ | turnLeft(); | ||
+ | moveStop(); | ||
+ | } | ||
+ | }else | ||
+ | { | ||
+ | moveForward(); | ||
+ | } | ||
+ | distance = readPing(); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2022:dbrezeanu:wall-e.jpg?700|}} | ||
+ | {{:pm:prj2022:dbrezeanu:wall-e2.jpg?700|}} | ||
+ | <note> | ||
+ | [[https://www.youtube.com/shorts/3KUe5l9E0j0|DEMO]] | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | <note> | ||
+ | Proiectul a fost o oprortunitate de a invata cum sa lucrez cu L293D Motor Driver Shield si cu celelalte componente. Am invatat sa lipesc fire si cum sa conectez optim componentele. La inceput mi-a fost greu pentru ca nu eram foarte sigura cum sa lucrez cu motoarele si cu senzorul ultrasonic dar pana la urma i-am dat de capat cu ajutorul internetului. | ||
+ | Pe parcurs mi-au venit mai multe idei si robotul a trecut prin multe modificari pana sa ajunga asa cum este acum. La inceput m-am gandit sa folosesc numai doua motoare,insa am observat ca are o stabilitate si o directie mult mai buna cu doua adaugate. Prima incercare de software nu includea masurarea rutei optime, Wall-E o lua la dreapta indiferent de situatie ceea ce era o pierdere de timp asa ca am decis sa sortez cumva cea mai potrivita ruta. | ||
+ | |||
+ | In final am reusit sa fac un obstacle avoider cu ruta optimizata, marele lui plus fiind ca este dragut (seamana cu Wall-E). | ||
+ | </note> | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
- | 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ă ;-). | + | Arhiva: |
- | + | {{:pm:prj2022:dbrezeanu:wall_e_obstacle_avoider_.zip|}} | |
- | 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> | ||
Line 61: | Line 116: | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
+ | |||
+ | * **2-8 mai** - alegere tema proiect | ||
+ | * **9-15 mai** - search de piese | ||
+ | * **16 mai** - comanda piese | ||
+ | * **17-28 mai** - realizare proiect | ||
+ | * **3-5 iunie** - realizare documentație | ||
+ | |||
</note> | </note> | ||
Line 67: | Line 130: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | **Resurse Software** |
+ | * [[https://learn.adafruit.com/adafruit-motor-shield/library-install|AFMotor Library]] | ||
+ | * [[https://github.com/livetronic/Arduino-NewPing//|Arduino-NewPing]] | ||
+ | * [[https://github.com/arduino-libraries/Servo.git//|Servo Library]] | ||
+ | * [[https://www.tutorialspoint.com/arduino/arduino_dc_motor.htm|Arduino - DC Motor]] | ||
+ | * [[https://create.arduino.cc/projecthub/electropeak/arduino-l293d-motor-driver-shield-tutorial-c1ac9b|Arduino L293D Motor Driver Shield Tutorial]] | ||
+ | **Resurse Hardware**. | ||
+ | * [[https://cleste.ro///|Cleste.ro]] | ||
+ | * Atelierul de acasa | ||
</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> | ||