This shows you the differences between two versions of the page.
pm:prj2023:gpatru:audiospectrum [2023/05/29 18:35] alexandru.ene2208 [Rezultate Obţinute] |
pm:prj2023:gpatru:audiospectrum [2023/05/29 19:09] (current) alexandru.ene2208 [Software Design] |
||
---|---|---|---|
Line 21: | Line 21: | ||
Doua moduri de functionare: | Doua moduri de functionare: | ||
- | 1. Idle - sunt afisate anumite modele presetate pe card sd | + | 1. Idle - sunt afisate anumite modele / informatii (PacMan, Mesaje, Tmeperatura, Umiditate, Ora) |
- | 2. Receptionare frecvente - se afiseaza pe matrice frecventele primite prin microfon | + | 2. Receptionare frecvente - se afiseaza pe matrice frecventele captate de microfon sub forma de armonice |
- | Voi folosi doua butoane de "Next" respectiv "Prev" pentru setarea modului de functionare. | + | Exista un singur buton de modificare al modului care cicleaza prin acestea. |
- | {{:pm:prj2023:gpatru:pm_diagrama_proiect.drawio.png?700|}} | + | {{:pm:prj2023:gpatru:pm_diagrama_proiect.drawio.png?770|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 46: | Line 46: | ||
MAX7219 Matrice LED-uri 32x8: | MAX7219 Matrice LED-uri 32x8: | ||
- | * Pentru acest modul este disponibila o varietate larga de biblioteci | + | * Pentru acest modul este disponibila o varietate larga de biblioteci capabile sa ofere posibilitatea de a afisa diverse imagini pe acesta. |
- | capabile sa ofere posibilitatea de a afisa diverse imagini pe acesta. | + | * Pentru afisajul principal (Audio Spectrum Analyzer) am folosit biblioteca "MD_MAX72xx" care imi permite controlarea individuala a coloanelor, avand astfel posibilitatea de a seta fiecare coloana a matricei pe verticala in functie de frecventele captate de microfon. De asemenea pentru a avea un rezultat cat mai placut vizual am folosit "arduinoFFT" care preia semnalele si stabileste armonicele corespunzatoare. |
- | * Pentru afisajul principal (Audio Spectrum Analyzer) am folosit | + | * Pentru celelalte moduri de functionare am folosit "MD_Parola" care ofera functii mult mai potrivite si mai usor de folosit pentru jocuri de lumini decat biblioteca mentionata anterior, dar nu este de o flexibilitate foarte mare de aceea nu am folosit-o si la modul de la punctul anterior. |
- | biblioteca "MD_MAX72xx" care imi permite controlarea individuala a coloanelor, | + | * Pentru a nu seta manual fiecare led pe o coloana am folosit un vector pentru fiecare amplitudine posibila. |
- | avand astfel posibilitatea de a seta fiecare coloana a matricei pe verticala | + | |
- | in functie de frecventele captate de microfon. De asemenea pentru a avea un rezultat | + | |
- | cat mai placut vizual am folosit "arduinoFFT" care preia semnalele si stabileste | + | |
- | armonicele corespunzatoare. | + | |
- | * Pentru celelalte moduri de functionare am folosit "MD_Parola" care ofera | + | |
- | functii mult mai potrivite si mai usor de folosit pentru jocuri de lumini decat | + | |
- | biblioteca mentionata anterior, dar nu este de o flexibilitate foarte mare de aceea | + | |
- | nu am folosit-o si la modul de la punctul anterior. | + | |
- | * Pentru a nu seta manual fiecare led pe o coloana am folosit un vector pentru | + | |
- | fiecare amplitudine posibila. | + | |
Luminozitate reglata automat: | Luminozitate reglata automat: | ||
- | * Pentru acest feature m-am bazat pe conceptul de ADC invatat la laborator, | + | * Pentru acest feature m-am bazat pe conceptul de ADC invatat la laborator, folosind un fotorezistor asupra caruia am aplicat un factor de "smoothing". |
- | folosind un fotorezistor asupra caruia am aplicat un factor de "smoothing". | + | |
Schimbare moduri afisare: | Schimbare moduri afisare: | ||
- | * Am folosind o simpla intrerupere cuplata la PIN-ul 2 de pe Arduino pe care | + | * Am folosind o simpla intrerupere cuplata la PIN-ul 2 de pe Arduino pe care am facut un debouncer in software. |
- | am facut un debouncer in software. | + | |
Moduri secundare de afisare: | Moduri secundare de afisare: | ||
- | * Pentru modurile care nu implica "VU Metrul" am preluat datele de la senzori prin | + | * Pentru modurile care nu implica "VU Metrul" am preluat datele de la senzori prin bibliotecile corespondente (ex. sezonr tmeperatura -> "DHT"), iar pentru jocurile de lumini am folosit conceptul de "SpriteData" dat in MD_Parola. |
- | bibliotecile corespondente (ex. sezonr tmeperatura -> "DHT"), iar pentru jocurile de lumini | + | |
- | am folosit conceptul de "SpriteData" dat in MD_Parola. | + | |
* La afisare modelul l-am pastrat simplu cu PA_CENTER pentru a avea totul centrat pe matrice. | * La afisare modelul l-am pastrat simplu cu PA_CENTER pentru a avea totul centrat pe matrice. | ||
Optimizari: | Optimizari: | ||
- | * Avand un numar destul de mare de biblioteci si o memorie limitata pe arduino acest lucru a | + | * Avand un numar destul de mare de biblioteci si o memorie limitata pe arduino acest lucru a fost o problema din start. |
- | fost o problema din start. | + | * Jocurile de lumini se bazeaza pe matrici care seteaza starea ledurilor, matrici care pot ocupa destula memorie de aceea am folosit keyword-ul "PROGMEM" care indruma compilatorul sa puna aceste date pe memoria flash, nu pe SRAM unde ar fii fost puse. |
- | * Jocurile de lumini se bazeaza pe matrici care seteaza starea ledurilor, matrici care pot ocupa | + | * Mi-as fi dorit sa pot renunta la una din bibliotecile pentru MAX7219 deorece ocupa destula memorie, dar MD_Parola este dependenta de MD_MAX72xx ceea mi-a ingreuna procesul de implementare. |
- | destula memorie de aceea am folosit keyword-ul "PROGMEM" care indruma compilatorul sa puna aceste | + | |
- | date pe memoria flash, nu pe SRAM unde ar fii fost puse. | + | |
- | * Mi-as fi dorit sa pot renunta la una din bibliotecile pentru MAX7219 deorece ocupa destula memorie, | + | |
- | dar MD_Parola este dependenta de MD_MAX72xx ceea mi-a ingreuna procesul de implementare. | + | |
* Memoria utilizata in momentul actual este de 86%. | * Memoria utilizata in momentul actual este de 86%. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 90: | Line 72: | ||
Pe langa conceptul initial am adaugat si feature-ul de reglare automata al luminozitatii. | Pe langa conceptul initial am adaugat si feature-ul de reglare automata al luminozitatii. | ||
- | {{:pm:prj2023:gpatru:vu_metru_carcasa.jpg?700|}} | + | {{:pm:prj2023:gpatru:vu_metru_carcasa.jpg?770|}} |
- | {{:pm:prj2023:gpatru:vu_metru_componente.jpg?700|}} | + | {{:pm:prj2023:gpatru:vu_metru_componente.jpg?770|}} |
<html> | <html> | ||
<iframe | <iframe | ||
- | src="https://www.youtube.com/embed/J0a2Prc_MQo" | + | src="https://www.youtube.com/embed/vS6kXlab4A8" |
title="YouTube video player" | title="YouTube video player" | ||
frameborder="0" | frameborder="0" | ||
Line 106: | Line 88: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | A fost un proiect care in primul rand chiar mi-a placut sa-l realizez, desi a fost |
+ | destul de multa munca, dorind sa aiba si atat o utilitate cat si un aspect decent. | ||
+ | Cu siguranta se pot face imbunatatiri la acesta (un RTC mai precis precum DS3231, | ||
+ | o carcasa printata 3D etc.). | ||
- | <note warning> | + | Ca si timp de implementare majoritatea a fost ocupat de research pentru a nu strica |
- | 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ă ;-). | + | anumite piese *din nou* si pentru a nu pierde timpul cu incercari inutile, in sine |
+ | asamblarea hardware + design nefiind atat de costisitoare ca timp. | ||
- | 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**. | + | In schimb pentru carcasa/lipit/asezat fire timpul alocat a fost destul de mult incat |
- | </note> | + | sa fie ceva cat de cat rezistent. |
- | ===== Jurnal ===== | + | Sincer nu ma asteptam sa-mi placa sa lucrez atat de multe ore la proiectul acesta, dar |
+ | tot am ajuns la concluzia ca imi place sa dorm noaptea in loc sa dezizolez/lipesc fire. | ||
+ | ===== Download ===== | ||
- | <note tip> | + | Link repository github: |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | [[https://github.com/AlexANdrei33/PM-project-VU-Metru.git]] |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | Mai jos se afla link-uri catre cele mai frecventate site-uri pentru acest proiect. |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | [[https://www.instructables.com/]] |
+ | |||
+ | [[https://docs.arduino.cc/]] | ||
+ | |||
+ | [[https://forum.arduino.cc/]] | ||
+ | |||
+ | [[https://how2electronics.com/]] | ||
+ | |||
+ | [[https://lastminuteengineers.com/]] | ||
+ | |||
+ | [[https://projecthub.arduino.cc/abhilashpatel121/f1b6ba36-bd96-4f7f-9a83-85c4925ff545]] | ||
+ | Download: | ||
<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> | ||