This shows you the differences between two versions of the page.
pm:prj2023:gpatru:zelda_guardian [2023/05/05 23:29] mihnea.tudor [Software Design] bold states |
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:** 331CAb | **Grupa:** 331CAb | ||
</note> | </note> | ||
Line 9: | Line 9: | ||
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. | 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. De asemenea, se vor folosi LEDuri si un buzzer pentru a evidentia diversele stari ale robotului. | + | 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> | ||
Resurse video: | Resurse video: | ||
- | * 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=dQw4w9WgXcQ|aici]]. | + | * 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]]. |
* 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]]. | * 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]]. | ||
Line 20: | Line 20: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | La nivel logic, robotul functioneaza pe baza unui automat finit de stari. Starile robotului sunt: Idle, Wake Up, Follow, Attack, Survey. Fiecare este explicata in sectiunea de Software Design, alaturi de o reprezentare grafica a automatului. | + | 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. |
- | La nivel fizic, robotul este alcatuit din 2 parti: corpul si capul. Corpul va contine un singur Motor servo 360 care va misca orizontal intreg capul. Motorul este tinut in loc cu ajutorul unui suport. | + | 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. |
- | Capul are mai multe functionalitati. Prima este cea de detectie si urmarire a obiectelor apropiate. Trei senzori ultrasonici HC-SR04 vor fi amplasati in jurul "ochiului", astfel: | + | 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: |
- | * unul deasupra, pentru a detecta distanta obiectului aflat direct in fata | + | * cel analogic deasupra, pentru a detecta distanta obiectului aflat direct in fata |
- | * unul la stanga si unul la dreapta, pentru a detecta eventualele miscari ale obiectului | + | * unul digital la stanga si unul la dreapta, pentru a detecta eventualele miscari ale obiectului |
- | Partea complicata este lansatorul de bile. Acesta va fi amplasat fie direct pe cap, fie in interiorul lui (si va arunca bilele prin ochi). Acesta este format din 2 servomotoare apropiate, care invart niste roti. Bilele care ating cele doua roti, aflate intr-o rotatie continua, vor fi lansate in fata. Bilele vor fi tinute (probabil) intr-un suport de carton, vor circula printr-un tub tot de carton, pana la roti, moment in care vor fi aruncate. Pentru a controla fluxul bilelor, voi folosi un servomotor care va "deschide" si "inchide" tubul, pentru a permite urmatoarei bile sa fie lansata. | + | 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: | O schema bloc initiala se poate gasi in figura urmatoare: | ||
- | {{ :pm:prj2023:gpatru:zelda_guardian_scheme.png?700 |}} | + | {{ :pm:prj2023:gpatru:guardian_block_diagram.png?700 |}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 39: | Line 39: | ||
* 1x Arduino Uno R3 ATmega328P | * 1x Arduino Uno R3 ATmega328P | ||
* 1x Breadboard 830 puncte MB102 | * 1x Breadboard 830 puncte MB102 | ||
- | * 3x Motor servo 360 12kg | + | * 1x Motor servo 360 12kg |
* 1x Motor Servo MG90S 180g | * 1x Motor Servo MG90S 180g | ||
- | * 3x Senzor ultrasonic HC-SR04 | + | * 2x Motor DC R140 |
- | * 1x Modul cu Buzzer activ | + | * 2x Senzor ultrasonic HC-SR04 |
- | * Nx LEDuri | + | * 1x Senzor Sharp GP2Y0A60SZLF |
- | * Nx Rezistori X Ohmi | + | * 1x Buton |
- | * Nx Fire Jumper | + | * 7x Baterii AA |
+ | * Multe Fire Jumper | ||
- | <note important> | + | Schema hardware, realizata in Tinkercad: |
- | Lista de componente **nu** este finala, diverse cantitati de componente sau chiar piese intregi se pot modifica / adauga. | + | |
- | </note> | + | {{ :pm:prj2023:gpatru:guardian_hardware_schematic.png?700 |}} |
===== Software Design ===== | ===== Software Design ===== | ||
Line 57: | Line 58: | ||
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: | 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: | ||
* **Idle** - robotul nu are niciun obiect in fata sau in jur, asa ca "doarme" | * **Idle** - robotul nu are niciun obiect in fata sau in jur, asa ca "doarme" | ||
- | * **Wake Up** - robotul a detectat un obiect in fata, asa ca se "trezeste"; se aprind LEDurile frontale, unul cate unul, iar dupa ce s-au aprins toate iar obiectul este inca in fata, incepe sa atace | + | * **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 |
* **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 | * **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 | ||
- | * **Attack** - robotul arunca o bila in directia in care a ramas indreptat, ia o pauza, si revine in modul Attack sau Survey | + | * **Attack** - robotul arunca o bila in directia in care a ramas indreptat, ia o pauza, si revine in modul Follow |
- | * **Survey** - robotul si-a pierdut tinta, asa ca face un ultim efort de a o gasi, cautand alte tinte in jur (se roteste random stanga dreapta), pentru un timp determinat, dupa care se "culca" la loc (intra in Idle) | + | * **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 |
+ | * **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 ===== | ||
- | Coming soon.. | + | Mai jos este un mic demo care arata diversele stari prin care trece robotul, dar si cum functioneaza sistemul de tragere. |
+ | |||
+ | <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 ===== | ||
- | Coming soon.. | + | 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. |
+ | |||
+ | Cu dedicatie tuturor fanilor Zelda ❤️. | ||
===== Download ===== | ===== Download ===== | ||
- | Coming soon.. | + | Codul proiectului se poate gasi aici: {{:pm:prj2023:gpatru:zelda_guardian.zip|}}. |
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | //1 iunie 2023// - adaugare buton + documentatie (intarziere datorata unor probleme tehnice neprevazute) \\ | ||
+ | //29-30 mai 2023// - terminat restul :) \\ | ||
//05 mai 2023// - terminat documentatie v1.0 \\ | //05 mai 2023// - terminat documentatie v1.0 \\ | ||
- | //04 mai 2023// - Creare pagina wiki | + | //04 mai 2023// - creare pagina wiki |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Line 84: | Line 96: | ||
* [[https://www.youtube.com/watch?v=sQw2vnRLggw|Ping Pong Ball Launcher]] | * [[https://www.youtube.com/watch?v=sQw2vnRLggw|Ping Pong Ball Launcher]] | ||
* [[https://www.youtube.com/watch?v=-1ND3IfWjNY|Tennis Ball Launcher]] | * [[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> | ||