This shows you the differences between two versions of the page.
pm:prj2023:alexau:disco_lights [2023/05/29 00:54] vlad.popescu2409 [Software Design] |
pm:prj2023:alexau:disco_lights [2023/05/29 02:14] (current) vlad.popescu2409 [Bibliografie/Resurse] |
||
---|---|---|---|
Line 27: | Line 27: | ||
* Boxa | * Boxa | ||
* Fire | * Fire | ||
- | * Rezistențe | + | * Butoane |
* Breadboard | * Breadboard | ||
* Baterie externă pentru alimentare | * Baterie externă pentru alimentare | ||
- | {{:pm:prj2023:alexau:hardware_vlad_popescu_1.jpg?400|}} | + | {{:pm:prj2023:alexau:hardware_vlad_popescu_2.jpg?500|}} |
- | {{:pm:prj2023:alexau:hardware_vlad_popescu_2.jpg?400|}} | + | |
Piesele au fost conectate astfel: | Piesele au fost conectate astfel: | ||
Line 56: | Line 55: | ||
Pentru butoane am folosit pinii D7, D6, D5. Setul de boxe este conectat la alimentare prin USB si la montaj printr-un adaptor la GND si D9. | Pentru butoane am folosit pinii D7, D6, D5. Setul de boxe este conectat la alimentare prin USB si la montaj printr-un adaptor la GND si D9. | ||
+ | Cuplajul final: | ||
+ | |||
+ | {{:pm:prj2023:alexau:img_8047.png?600|}} | ||
</note> | </note> | ||
Line 77: | Line 79: | ||
Pentru inceput, am definit cateva variabile global, cu scopul de configura pinii specifici pentru cele 3 butoane (play/pause, next, previous), pentru boxa si pentru banda LED WS2812B. De asemenea, am setat nivelul de "brightness" si am definit setul de culori folosite(disponibil in biblioteca utilizata). Totodata, am configurat pinii utilizati de catre modulul de Micro SD Card. | Pentru inceput, am definit cateva variabile global, cu scopul de configura pinii specifici pentru cele 3 butoane (play/pause, next, previous), pentru boxa si pentru banda LED WS2812B. De asemenea, am setat nivelul de "brightness" si am definit setul de culori folosite(disponibil in biblioteca utilizata). Totodata, am configurat pinii utilizati de catre modulul de Micro SD Card. | ||
- | Pe parte de setup, initializez tipul de lumina si caracteristicile jocului de lumini prin functiile din FastLED.h (FastLED.addLeds(), FastLED.setBrightness() ). Apoi, pentru cele 3 butoane, atribui rezistentele de PullUp din cadrul placutei Arduino. Mai departe, cu functiile din TMRpcm intializez obiectul folosit pentru redarea sunetului (adica boxa), setez prima melodie care sa inceapa la pornirea placutei si volumul sunetului generat (evident, boxa are propriul sau buton de volum) | + | Pe parte de setup, initializez tipul de lumina si caracteristicile jocului de lumini prin functiile din FastLED.h (FastLED.addLeds(), FastLED.setBrightness() ). Apoi, pentru cele 3 butoane, atribui rezistentele de PullUp din cadrul placutei Arduino. Mai departe, cu functiile din TMRpcm intializez obiectul folosit pentru redarea sunetului (adica boxa), setez prima melodie care sa inceapa la pornirea placutei si volumul sunetului generat (evident, boxa are propriul sau buton de volum). |
+ | |||
+ | Functia ChangePalettePeriodically() are rolul de a modifica periodic culorile prezente pe banda in momentul difuzarii unei melodii prin boxa. In interior, se calculeaza o valoare in milisecunde si in functie de restul unei impartiri cu o valoare setata inainte se vor modifica culorile pe banda LED. Cateva dintre culorile (in combinatie) aflate in cod: makeLedsOff(), SetupPurpleAndGreenPalette(), SetupTotallyRandomPalette(), SetupBlackAndWhiteStripedPalette(), dar si functii predefinite in biblioteca: CloudColors_p, RainbowStripeColors_p etc.). | ||
+ | |||
+ | Functia song() are rolul de a lua contorul de apasari al butonului de next si de a folosi functia tmrpcm.play(song) pentru a reda prin boxa sunetul dorit. Contorul este folosit in loop() si se incrementeaza variabila prin care gestionam playlist-ul de pe SD card. La ultima melodie din lista se trece din nou la prima si se reia acelasi proces mai departe. | ||
+ | |||
+ | Atunci cand o melodie este redata, se pot actiona butoanele pentru a merge la urmatoarea melodie sau cea precedenta sau sa se puna o pauza. Astfel se tot mareste un contor in care tin minte cate apasari de buton de pause/play au avut loc, lucru ce foloseste in oprirea si pornirea benzii LED atunci cand muzica este oprita. | ||
+ | |||
+ | Pe parcursul implementarii am folosit protocoalele USART, pentru partea de debugging (in special prin afisare in Serial Monitor), SPI, care este utilizat in comunicarea modului de SD card cu Arduino, dar si I2C in realizarea culorilor si a benzii LED. | ||
+ | |||
+ | Referitor la modul in care au fost incarcate melodiile redate de sistem, a trebuit sa folosesc melodii cu extensia ".wav" pentru ca acestea erau suportate de biblioteca folosita. Astfel, melodiile au urmatoarele caracteristici: | ||
+ | * bit resolution: 8 Bit | ||
+ | * sampling rate: 16000 Hz | ||
+ | * audio channels: mono | ||
+ | * PCM format: PCM unsigned 8-bit | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Rezultatul obtinut se poate observa in clipul filmat drept demo care se poate gasi pe acest link: [[https://drive.google.com/file/d/10QJ-5Sx9h02OD4ZhIKPsUaVi59u9taMg/view?usp=drive_link]] |
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Ca si concluzie pot afirma ca realizarea acestui proiect a fost o experienta destul de noua pentru mine. Eu unul nu sunt un pasionat al acestui domeniu si, astfel, am intampinat greutati in puncte precum alegerea temei de proiect (nefiind pasionat, am pus in practica ideea care mi-a venit la un moment dat) sau aspecte legate de realizarea schemei fizice, din cauza faptului ca aveam nevoie de mai mult curent, placuta Arduino avand rezistentele sale interne care nu te lasa sa depasesti cu mai mult de 5V. |
- | <note warning> | + | Pot spune, insa, ca am reusit sa duc la bun sfarsit aceasta provocare si sa implementez un sistem audio folosind o boxa cu jack si alimentare, nu un buzzer, avand astfel mediul de a reda melodii in format decent. De asemenea, banda LED a fost o provocare foarte mare din cauza nevoilor sale pe care, in final, am reusit sa le depasesc si sa livrez acest produs. |
- | 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> | ||
+ | Arhiva proiectului se poate gasi aici: {{proiect_pm_popescu_vlad_cristian.zip}} | ||
</note> | </note> | ||
Line 98: | Line 118: | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * 7 Mai 2023: M1 - Introducere, Descriere generală, Schemă bloc, Listă componente hardware |
+ | * 14 Mai 2023: M2 - Hardware Design | ||
+ | * 28 Mai 2023: M3 - Implementare software, Software design | ||
+ | * 29 Mai 2023: Rezultate obținute | ||
</note> | </note> | ||
- | |||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**: |
+ | * Led Strip: https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf | ||
+ | * Micro SD card module: https://components101.com/modules/micro-sd-card-module-pinout-features-datasheet-alternatives | ||
+ | * Librarii cu sursa pe github (cele prezentate la inceputul sectiunii de Software Design. | ||
+ | * https://www.youtube.com/. | ||
</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> | ||