This shows you the differences between two versions of the page.
pm:prj2023:gpatru:zelda_guardian [2023/05/04 23:13] mihnea.tudor Informatii autor |
pm:prj2023:gpatru:zelda_guardian [2023/06/01 18:03] (current) mihnea.tudor adaugare schema hardware |
||
---|---|---|---|
Line 2: | Line 2: | ||
<note tip> | <note tip> | ||
- | **Nume: **Tudor Mihnea | + | **Nume:** Mihnea Tudor \\ |
- | **Grupa: **331CA | + | **Grupa:** 331CAb |
</note> | </note> | ||
===== Introducere ===== | ===== Introducere ===== | ||
+ | |||
+ | Proiectul este inspirat dintr-un joc numit The Legend of Zelda: Breath of the Wild, si **incearca** sa imite un Guardian stationar. Proiectul in sine este practic un robot alcatuit din doua parti, corpul si capul. | ||
+ | |||
+ | Cea mai complexa componenta este capul, care se roteste orizontal, in jurul axei Oy, si urmareste orice obiect suficient de apropiat, cu ajutorul unor senzori de distanta. Dupa un anumit timp in care obiectul ramane in raza de actiune a robotului, acesta va arunca o bila in directia generala a tintei. Din motive de siguranta, s-a renuntat la ideea care includea un laser. | ||
<note tip> | <note tip> | ||
- | Prezentarea pe scurt a proiectului vostru: | + | Resurse video: |
- | * ce face | + | * Un videoclip care demonstreaza cum functioneaza robotul in joc, si care a fost sursa principala de inspiratie, se poate gasi [[https://www.youtube.com/watch?v=bEnBphAq_Zo|aici]]. |
- | * care este scopul lui | + | * Videoclipul care mi-a dat speranta ca proiectul este fezabil este facut de cei de la Adafruit, si se poate gasi [[https://www.youtube.com/watch?v=ULqynriVAa0|aici]]. |
- | * care a fost ideea de la care aţi pornit | + | |
- | * de ce credeţi că este util pentru alţii şi pentru voi | + | |
</note> | </note> | ||
+ | |||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | + | La nivel logic, robotul functioneaza pe baza unui automat finit de stari. Starile robotului sunt: Idle, Wake Up, Follow, Attack, Survey, Rambo. Fiecare este explicata in sectiunea de Software Design, alaturi de o reprezentare grafica a automatului. |
- | 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 | + | La nivel fizic, robotul este alcatuit din 2 parti: corpul si capul. Corpul contine un singur Motor servo 360 care misca orizontal intreg capul. Elicea motorului este prinsa cu suruburi de un suport solid, motorul fiind cel care se misca in jurul elicei. De acel motor este prins un alt suport, o placa mare, dreptunghiulara, ce reprezinta capul, pe care sunt puse toate celelalte piese. |
- | </note> | + | |
+ | Capul are mai multe functionalitati. Prima este cea de detectie si urmarire a obiectelor apropiate. Doi senzori ultrasonici HC-SR04 si unul Sharp vor fi amplasati in jurul "ochiului", astfel: | ||
+ | * cel analogic deasupra, pentru a detecta distanta obiectului aflat direct in fata | ||
+ | * unul digital la stanga si unul la dreapta, pentru a detecta eventualele miscari ale obiectului | ||
+ | |||
+ | Partea complicata este lansatorul de bile. Acesta este amplasat pe placa dreptunghiulara care reprezinta capul, si trage cu bile printr-o gaura dintr-un perete facut tot din acelasi material. Acesta este format din 2 motoare DC apropiate, care invart niste roti. Bilele care ating cele doua roti, aflate intr-o rotatie continua, vor fi lansate in fata. Bilele sunt tinute intr-un tub din plastic, prin care vor circula cand se lanseaza cateva din fata. Cand ajung la roti, ele vor fi aruncate. Pentru a controla fluxul bilelor, am folosit un servomotor care nu e continuu, care "deschide" si "inchide" tubul, pentru a permite urmatoarei bile sa fie lansata. | ||
+ | |||
+ | O schema bloc initiala se poate gasi in figura urmatoare: | ||
+ | |||
+ | {{ :pm:prj2023:gpatru:guardian_block_diagram.png?700 |}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | Lista componente: |
- | Aici puneţi tot ce ţine de hardware design: | + | * 1x Arduino Uno R3 ATmega328P |
- | * listă de piese | + | * 1x Breadboard 830 puncte MB102 |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * 1x Motor servo 360 12kg |
- | * diagrame de semnal | + | * 1x Motor Servo MG90S 180g |
- | * rezultatele simulării | + | * 2x Motor DC R140 |
- | </note> | + | * 2x Senzor ultrasonic HC-SR04 |
+ | * 1x Senzor Sharp GP2Y0A60SZLF | ||
+ | * 1x Buton | ||
+ | * 7x Baterii AA | ||
+ | * Multe Fire Jumper | ||
+ | |||
+ | Schema hardware, realizata in Tinkercad: | ||
+ | |||
+ | {{ :pm:prj2023:gpatru:guardian_hardware_schematic.png?700 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Arduino. | ||
- | <note tip> | + | Pe partea de software, robotul functioneaza pe baza unui automat finit de stari. Starile sunt reprezentate grafic in figura de mai jos, si explicate in continuare: |
- | Descrierea codului aplicaţiei (firmware): | + | * **Idle** - robotul nu are niciun obiect in fata sau in jur, asa ca "doarme" |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * **Waking Up** - robotul a detectat un obiect in fata, asa ca se "trezeste"; daca obiectul inca este in fata dupa 2 secunde, incepe sa atace |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * **Follow** - robotul urmareste obiectul stanga / dreapta pentru o perioada determinata de timp, si poate ataca daca obiectul inca e in raza de actiune, sau poate intra in starea de Survey |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * **Attack** - robotul arunca o bila in directia in care a ramas indreptat, ia o pauza, si revine in modul Follow |
- | * (etapa 3) surse şi funcţii implementate | + | * **Survey** - robotul si-a pierdut tinta, asa ca face un ultim efort de a o gasi, cautand alte tinte in jur (se uita in stanga sau dreapta, in functie de sensul ultimei cautari), pentru un timp determinat, dupa care se "culca" la loc (intra in Idle); daca gaseste, reintra in Follow |
- | </note> | + | * **Rambo** - indiferent de starea anterioara, la apasarea butonului, robotul intra in starea Rambo pentru 5 secunde, in care arunca toate bilele ramase; la final, se intoarce in starea Idle (fiind obosit, trebuie sa se odihneasca) |
+ | |||
+ | {{ :pm:prj2023:gpatru:guardian_state_machine.png?700 |}} | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Mai jos este un mic demo care arata diversele stari prin care trece robotul, dar si cum functioneaza sistemul de tragere. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | <html> |
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/1J-rxCkIJeQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
+ | </html> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | As fi vrut sa adaug multe lucruri la proiect: LEDuri, buzzer, mai multi pereti, culori, o parte software mai stabila etc, dar mai greu cu timpul semestrul asta. Desi nu arata exact ca materialul de referinta, mi-a placut foarte mult sa lucrez la acest robot, e ceva complet diferit de oricare alta tema de pana acum. |
- | <note warning> | + | Cu dedicatie tuturor fanilor Zelda ❤️. |
- | 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ă ;-). | + | |
- | 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**. | + | ===== Download ===== |
- | </note> | + | |
+ | Codul proiectului se poate gasi aici: {{:pm:prj2023:gpatru:zelda_guardian.zip|}}. | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | //1 iunie 2023// - adaugare buton + documentatie (intarziere datorata unor probleme tehnice neprevazute) \\ |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | //29-30 mai 2023// - terminat restul :) \\ |
- | </note> | + | //05 mai 2023// - terminat documentatie v1.0 \\ |
+ | //04 mai 2023// - creare pagina wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * [[https://www.youtube.com/watch?v=ULqynriVAa0|Adafruit Zelda Guardian]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * [[https://www.youtube.com/watch?v=sQw2vnRLggw|Ping Pong Ball Launcher]] |
- | </note> | + | * [[https://www.youtube.com/watch?v=-1ND3IfWjNY|Tennis Ball Launcher]] |
+ | * [[https://www.makerguides.com/sharp-gp2y0a21yk0f-ir-distance-sensor-arduino-tutorial|Sharp Sensor Tutorial]] | ||
+ | * [[https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04|Ultrasonic Sensor Tutorial]] | ||
<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> | ||