This shows you the differences between two versions of the page.
pm:prj2021:abirlica:miniclaptrap [2021/05/10 14:12] cornelia.marculescu |
pm:prj2021:abirlica:miniclaptrap [2021/06/04 13:06] (current) cornelia.marculescu |
||
---|---|---|---|
Line 6: | Line 6: | ||
Scopul proiectului este pur de entertainment, intrucat inspiratia vine dintr-un joc de care sunt pasionata. | Scopul proiectului este pur de entertainment, intrucat inspiratia vine dintr-un joc de care sunt pasionata. | ||
- | **Conceptul initial** | ||
- | {{ :pm:prj2021:abirlica:project.png?direct&300 |}} | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
**Schema Bloc** | **Schema Bloc** | ||
- | {{ :pm:prj2021:abirlica:miniclaptrap.png?direct&300 |}} | + | {{ :pm:prj2021:abirlica:miniclaptrap2.png?direct&300 |}} |
In primul rand, vom avea un buton care porneste robotul. Odata pornit, acestuia ii se va aprinde led-ul si va zice un voiceline din MP3 Player. | In primul rand, vom avea un buton care porneste robotul. Odata pornit, acestuia ii se va aprinde led-ul si va zice un voiceline din MP3 Player. | ||
Line 22: | Line 20: | ||
* Arduino UNO | * Arduino UNO | ||
* Led RGB | * Led RGB | ||
- | * Buton | + | * Switch |
* Caseta de baterii 18650 2 buc | * Caseta de baterii 18650 2 buc | ||
* Modul MP3 player DFPlayer Mini | * Modul MP3 player DFPlayer Mini | ||
Line 31: | Line 29: | ||
* Senzor de prezenta si miscare | * Senzor de prezenta si miscare | ||
* Senzor de vibratie | * Senzor de vibratie | ||
+ | |||
+ | **Schema electrica** | ||
+ | {{ :pm:prj2021:abirlica:claptrap_schematics_final.png?direct&300 |}} | ||
**Scheme ale componentelor si Specificatii** | **Scheme ale componentelor si Specificatii** | ||
Line 51: | Line 52: | ||
__Modul MP3 player DFPlayer Mini:__ | __Modul MP3 player DFPlayer Mini:__ | ||
{{ :pm:prj2021:abirlica:modul-mp3-player-dfplayer-mini.jpg?direct&300 |}} | {{ :pm:prj2021:abirlica:modul-mp3-player-dfplayer-mini.jpg?direct&300 |}} | ||
+ | {{ :pm:prj2021:abirlica:playermini.png?direct&300 |}} | ||
Specificatii: | Specificatii: | ||
* supported sampling rates (kHz): 8/11.025/12/16/22.05/24/32/44.1/48 | * supported sampling rates (kHz): 8/11.025/12/16/22.05/24/32/44.1/48 | ||
Line 61: | Line 63: | ||
__L298N Punte H dubla:__ | __L298N Punte H dubla:__ | ||
{{ :pm:prj2021:abirlica:punteh.png?direct&300 |}} | {{ :pm:prj2021:abirlica:punteh.png?direct&300 |}} | ||
+ | {{ :pm:prj2021:abirlica:punteah.jpg?direct&300 |}} | ||
Specificatii: | Specificatii: | ||
* Tensiune de operare: pana la 40V | * Tensiune de operare: pana la 40V | ||
Line 101: | Line 104: | ||
* Greutate: 17.5 grame | * Greutate: 17.5 grame | ||
__Senzor de vibratie:__ | __Senzor de vibratie:__ | ||
+ | {{ :pm:prj2021:abirlica:senzor.jpg?direct&300 |}} | ||
Specificatii: | Specificatii: | ||
* Tensiune de alimentare: 3.3V - 5V | * Tensiune de alimentare: 3.3V - 5V | ||
Line 108: | Line 111: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | TBA | + | **Diagrama de activitate** |
+ | {{ :pm:prj2021:abirlica:claptrapactivitydiagram.png?direct&300 |}} | ||
+ | |||
+ | **Explicatii** | ||
+ | |||
+ | In setup initializez comunicarea seriala cu DFPlayerul si configurez valorile de baza pentru led, motor, respectiv sonorul de la DFPlayer si, desigur, pinii pe care ii voi folosi si pentru ce. | ||
+ | |||
+ | Pentru a masura valoarea obtinuta de senzorul de miscare am creat o functie TP_init care detecteaza pentru cat timp valoarea returnata de senzor este pe HIGH. Am ales abordarea aceasta pentru a evita ca robotul sa reactioneze la cea mai mica atingere. | ||
+ | |||
+ | Alta functie pe care o folosesc este playTrack pentru a da reda voiceline-urile cu ajutorul DFPlayerului. Functia se asigura in primul rand ca DFPlayerul nu s-a agatat si ca indexul track-ului pe care incearca sa il redea este acelasi cu cel dat, din moment ce am descoperit lucrand cu el ca aceasta agatare se poate intampla. In DFPlayer am 10 track-uri de lungumi diferite, de aceea, in functia playTrack am adaugat si delay-ul specific fiecarui track pentru a-l lasa sa se deruleze fara intreruperi. | ||
+ | |||
+ | In logica de baza, dupa ce setup-ul este facut, Claptrap va anunta ca traieste dupa care va astepta input de la mediul extern. In primul rand verific masuratoarea de la senzorul de vibratii, deoarece la o lovitura se sesizeaza si senzorul PIR. Daca masuratoarea este suficient de mare, atunci Claptrap va spune OW dupa care isi va stinge led-ul, motorul se porneste pentru o vreme dupa care se aprinde led-ul la loc. Am adaugat un mic delay pentru a-l lasa sa se linisteasca. Dupa aceea, se verifica daca senzorul PIR detecteaza miscare. Daca da, atunci va spune unul din cele 10 voice line-uri stocate pe cardul SD, in afara de cel dedicat reactiei la lovituri si cel in care anunta ca traieste. Din nou, am adaugat un delay pentru a-l lasa sa se linisteasca putin. | ||
+ | |||
+ | **Biblioteci folosite** | ||
+ | * Arduino.h | ||
+ | * SoftwareSerial.h | ||
+ | * DFRobotDFPlayerMini.h | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | TBA | + | [[https://www.youtube.com/watch?v=zleJfsDu_Gw&list=PL_mm1PwRMHbljVkXjofzx91vZDOJoD1_z&index=1|Link to Playlist]] |
+ | |||
+ | {{ :pm:prj2021:abirlica:clappy5.jpg?direct&300 |}} | ||
+ | {{ :pm:prj2021:abirlica:clappy7.jpg?direct&300 |}} | ||
+ | {{ :pm:prj2021:abirlica:clappy6.jpg?direct&300 |}} | ||
+ | {{ :pm:prj2021:abirlica:clappy4.jpg?direct&300 |}} | ||
+ | |||
+ | //Proof of work// | ||
+ | {{ :pm:prj2021:abirlica:proofofwork.jpg?direct&300 |}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | TBA | + | * Nu este o idee buna sa acopar senzorul PIR cu o lentila improvizata in casa |
+ | * Senzorul PIR este foarte sensibil si nu ar fi o idee buna sa-l folosesc in spatii stramte pe unde se umbla des | ||
+ | * Valorile obtinute de la senzorul de vibratie nu sunt cele mai exact deci nu garanteaza mereu reactia de OW de la Claptrap | ||
+ | * Atata timp cat se respecta specificatiile si schemele electrice, totul merge conform planului | ||
+ | * DFPlayerul are neaparat nevoie de o rezistenta la una din intrari pentru a evita poluarea cu zgomot | ||
+ | * DFPlayerul este sensibil la felul in care sunt stocate track-urile pe cardul SD si trebuie sa ma asigur ca nu exista indexi extra care sa fie considerati alte track-uri | ||
+ | * Am reusit sa creez un robotel foarte enervant | ||
+ | |||
+ | * Am renuntat la partea cu butonul pentru ca am realizat tarziu ca as fi avut nevoie de un switch si nu am avut unul. | ||
===== Download ===== | ===== Download ===== | ||
- | TBA | + | Codul final poate fi gasit [[https://github.com/cornelia8/GitforClaptrap/blob/main/discountClaptrap.ino|aici]]. |
+ | |||
+ | [[https://ocw.cs.pub.ro/courses/pm/prj2021/abirlica/miniclaptrap/?do=export_pdf|Export to PDF]] | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
* [[https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299|Modul DFPlayer MP3]] | * [[https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299|Modul DFPlayer MP3]] | ||
- | * [[https://filafill.com/img/cms/L298_H_Bridge_1.pdf|L298N Punte H]] | + | * [[https://ardushop.ro/ro/electronica/84-l298n-punte-h-dubla-dual-h-bridge-motor-dcsteppe.html?search_query=punte+h&results=10|L298N Punte H]] [[https://filafill.com/img/cms/L298_H_Bridge_1.pdf|Data Sheet]] |
* [[https://ardushop.ro/ro/electronica/45-modul-pir-senzor-de-prezenta-miscare.html?search_query=senzor+proximitate&results=139|Senzor de miscare]] | * [[https://ardushop.ro/ro/electronica/45-modul-pir-senzor-de-prezenta-miscare.html?search_query=senzor+proximitate&results=139|Senzor de miscare]] | ||
* [[https://ardushop.ro/ro/home/124-modul-senzor-vibratie.html?search_query=senzor+inclinatie&results=139|Senzor de vibratie]] | * [[https://ardushop.ro/ro/home/124-modul-senzor-vibratie.html?search_query=senzor+inclinatie&results=139|Senzor de vibratie]] | ||
* [[https://ardushop.ro/ro/motoare-si-drivere/437-motoras-curent-continuu.html|Motor curent continuu]] | * [[https://ardushop.ro/ro/motoare-si-drivere/437-motoras-curent-continuu.html|Motor curent continuu]] | ||