This shows you the differences between two versions of the page.
pm:prj2022:abirlica:cactus_dansator [2022/05/02 22:00] stefania.nicolete |
pm:prj2022:abirlica:cactus_dansator [2022/05/30 23:57] (current) stefania.nicolete |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Cactus Dansator ====== | ====== Cactus Dansator ====== | ||
+ | |||
+ | Nume: Nicolete Ștefania Liliana \\ | ||
+ | Grupa: 332CB | ||
+ | |||
===== Introducere ===== | ===== Introducere ===== | ||
Line 7: | Line 11: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Apasam butonul pentru a porni sistemul. Dupa aceea, senzorul de sunet va incepe sa asculte si va trimite datele catre Arduino. La detectarea unui sunet peste limita stabilita, acesta va declansa miscarea servomotoarelor si aprinderea LEDurilor. La incetarea sunetului, motoarele si LEDURILE se opresc. O a doua apasare a butonului va opri ascultarea. | + | Apasam butonul pentru a porni sistemul. Dupa aceea, senzorul de sunet va incepe sa asculte si va trimite datele catre Arduino. La detectarea unui sunet peste limita stabilita, acesta va declansa miscarea servomotoarelor si aprinderea LED-urilor. La incetarea sunetului, motoarele si LED-urile se opresc. O a doua apasare a butonului va opri ascultarea. |
- | {{:pm:prj2022:abirlica:diagram_nsl.drawio.png}} | + | {{:pm:prj2022:abirlica:diagram_nsl2.drawio.png?600}} |
| | ||
- | |||
- | |||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 19: | Line 21: | ||
* Placă dezvoltare compatibilă Arduino Uno R3 ATmega328P | * Placă dezvoltare compatibilă Arduino Uno R3 ATmega328P | ||
* Modul Senzor Sunet LM393 | * Modul Senzor Sunet LM393 | ||
- | * Motor Servo MG996 x2 | + | * Motor Servo SG90 x2 |
- | * Becuri LED + rezistențe | + | * Becuri LED + rezistențe 1K x3 |
+ | * Condensator 100nF | ||
* Push button | * Push button | ||
- | * Breadboard | + | * Baterie alcalina 9V |
+ | {{:pm:prj2022:abirlica:electric_nsl.png?800}} | ||
+ | |||
+ | {{:pm:prj2022:abirlica:20220530_233303.jpg?500}} | ||
+ | |||
+ | Proiectul nu foloseste breadboard, si din aceasta cauza nu se pot observa usor cablajele si maparea pinilor. Atasez o poza a simularii pentru simplitate (bateria este omisa in simulare, iar senzorul nu exista in biblioteca Tinkercad asa ca am folost un inlocuitor). | ||
+ | |||
+ | |||
+ | {{:pm:prj2022:abirlica:sim_nsl.png?600}} | ||
+ | |||
+ | Limita de sensibilitate a senzorului de sunet a fost setata fizic folosind potentiometrul inclus. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Codul a fost scris folosind simulatorul Tinkercad si apoi IDE-ul Arduino. | ||
+ | Nu a fost folosita nicio sursa externa. Toate functionalitatile se bazeaza pe elementele integrate in microprocesorul Atmega328P - GPIO, intreruperi, timere si PWM. | ||
- | <note tip> | + | Placa se afla in modul power down pana este trezita de intreruperea INT0 ce provine de la butonul conectat la pinul PD2. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | In cadrul intreruperii, se aprinde led-ul ce semnifica trezirea si activeaza intruperea PCINT0. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | In acest moment, placa poate asculta senzorul de sunet digital conectat la pinul PB0, care va genera intreruperi PCINT0. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | In cadrul intreruperii se vor activa timerele: |
+ | * timer 0 (PWM pentru led-urile ce formeaza ochii cactusului) | ||
+ | * timer 1 (PWM pentru servomotoare) | ||
+ | * timer 2 (cronometreaza dansul) | ||
+ | |||
+ | De asemenea, se opreste ascultarea (prin ignorarea intreruperii PCINT0) si se seteaza variabilele globale ce permit dansul si flicarul led-urilor. | ||
+ | |||
+ | Cu aceste variabile setate, codul din functia loop poate fi atins si permite dansul prin modificarea registrelor de PWM. | ||
+ | |||
+ | Dupa ce aproximativ doua secunde au trecut (cronometrate prin numararea intreruperilor timer 2), se vor seta pe 0 variabilele si se va reactiva ascultarea. | ||
+ | |||
+ | Cactusul va dansa aparent continuu daca sunetul este mentinut mai mult de 2 secunde si se va opri daca dupa 2 secunde nu mai recepteaza sunet. | ||
+ | |||
+ | In orice moment, apasarea butonului va opri activitatea. | ||
+ | |||
+ | {{:pm:prj2022:abirlica:flow_nsl.png?600}} | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Proiectul atinge toate obiectivele initiale, mai putin invelisul extern. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | Un demo poate fi vazut la urmatorul link: |
+ | https://www.youtube.com/shorts/ygamk05pvnQ | ||
- | ===== Download ===== | + | {{:pm:prj2022:abirlica:20220529_160144.jpg?250}} |
+ | {{:pm:prj2022:abirlica:20220529_151250.jpg?250}} | ||
+ | {{:pm:prj2022:abirlica:20220529_151240.jpg?250}} | ||
+ | {{:pm:prj2022:abirlica:20220529_151216.jpg?250}} | ||
- | <note warning> | + | ===== Concluzii ===== |
- | 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**. | + | Sa imi ating obiectivele folosind doar registrii microprocesorului a fost o provocare interesanta. Am schimbat conectarea componentelor la pinii Arduino foarte des incercand sa manageriez timerele si PWM-ul. |
- | </note> | + | |
- | ===== Jurnal ===== | + | Lipirea firelor impreuna si renuntarea la breadboard a fost o alta provocare. A fost nevoie ca trei fire sa intre intr-unul singur pentru a acomoda faptul ca mai multe componente au nevoie in acelasi timp de pinul de Vcc sau de GND al Arduino. |
+ | |||
+ | ===== Download ===== | ||
- | <note tip> | + | {{:pm:prj2022:abirlica:arhiva_nsl.zip}} |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * https://ocw.cs.pub.ro/courses/pm |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf |
- | </note> | + | * https://wolles-elektronikkiste.de/timer-und-pwm-teil-1 |
+ | * https://wolles-elektronikkiste.de/sleep-modes-und-power-management | ||
+ | * https://embedds.com/controlling-servo-motor-with-avr/https://hackaday.com/2015/12/09/embed-with-elliot-debounce-your-noisy-buttons-part-i/ | ||
<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> | ||