Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:ciprian.popescu0411:daria.harabagiu [2026/05/10 14:33]
daria.harabagiu created
pm:prj2026:ciprian.popescu0411:daria.harabagiu [2026/05/25 11:20] (current)
daria.harabagiu
Line 13: Line 13:
 <note tip> <note tip>
   * **Stocare (SPI):** Fișierele .wav sunt stocate pe un card microSD citit prin protocolul SPI cu biblioteca SDFat.   * **Stocare (SPI):** Fișierele .wav sunt stocate pe un card microSD citit prin protocolul SPI cu biblioteca SDFat.
-  * **Redare audio (PWM + Timere):** Samplelele audio sunt trimise unui Timer în mod Fast PWM, semnalul fiind filtrat șamplificat ​de modulul LM386 către difuzor ​sau căști (jack 3.5mm).+  * **Redare audio (PWM + Timere):** Samplelele audio sunt trimise unui Timer în mod Fast PWM pe 8 biți. Semnalul PWM de mare viteză generat pe pinul D9 este injectat direct în modulul de amplificare SC8002B, care conduce direct difuzorul ​sau mufa jack pentru ​căști (atenuată prin rețeaua de rezistențe), eliminând distorsiunile și nevoia de filtre complexe.
   * **Control (GPIO + Întreruperi):​** Trei butoane fizice pe pinii de întrerupere gestionează play/pause, next și prev.   * **Control (GPIO + Întreruperi):​** Trei butoane fizice pe pinii de întrerupere gestionează play/pause, next și prev.
   * **Afișare (I2C):** Display-ul OLED SSD1306 afișează numele melodiei și statusul playerului prin I2C.   * **Afișare (I2C):** Display-ul OLED SSD1306 afișează numele melodiei și statusul playerului prin I2C.
   * **Volum (ADC):** Un potențiometru de 10kΩ citit prin ADC controlează volumul redării.   * **Volum (ADC):** Un potențiometru de 10kΩ citit prin ADC controlează volumul redării.
-  * **VU Meter (PWM):​** ​LED-uri (verde, galben, roșu) vizualizează nivelul sonor în timp real.+  * **VU Meter (PWM):​** ​LED-uri (verde, galben, roșu) vizualizează nivelul sonor în timp real.
 </​note>​ </​note>​
  
Line 28: Line 28:
   * **Modul MicroSD (SPI):** Stochează fișierele audio .wav.   * **Modul MicroSD (SPI):** Stochează fișierele audio .wav.
   * **Display OLED 1.3" I2C:** Afișează numele melodiei curente și statusul playerului.   * **Display OLED 1.3" I2C:** Afișează numele melodiei curente și statusul playerului.
-  * **Modul ​amplificator LM386:** Amplifică semnalul ​audio PWM pentru difuzor. +  * **Modul ​audio SC8002B cu difuzor integrat:** Amplifică semnalul PWM și redă sunetul ​prin difuzorul de 2W integrat.
-  * **Difuzor 40mm 3W:** Redă sunetul ​amplificat.+
   * **Mufă jack audio 3.5mm (PJ392):** Permite conectarea căștilor.   * **Mufă jack audio 3.5mm (PJ392):** Permite conectarea căștilor.
   * **Potențiometru 10kΩ:** Controlează volumul prin ADC.   * **Potențiometru 10kΩ:** Controlează volumul prin ADC.
-  * **Butoane tactile (x4):** Play/pause, next, prev + rezervă+  * **Butoane tactile (x3):** Play/pause, next, prev. 
-  * **LED-uri 5mm roșu x2, galben ​x2, verde x2:** VU meter vizual. +  * **LED-uri 5mm roșu x1, galben ​x1, verde x2:** VU meter vizual. 
-  * **Rezistențe ​220Ω (x6):** Protecție ​LED-uri+  * **Rezistente: ​220Ω (x4), 2.2kΩ (x1), 1kΩ (x1):** Protectie ​LED-uri ​si atenuare casti
-  * **Condensatoare 10µF (x2):** Filtru audio pentru LM386.+
   * **Breadboard + fire Dupont:** Pentru realizarea conexiunilor între componente.   * **Breadboard + fire Dupont:** Pentru realizarea conexiunilor între componente.
 </​note>​ </​note>​
 +
 +În tabelul de mai jos este prezentată configurația pinilor utilizați, alături de justificarea tehnică a alegerii acestora:
 +
 +^ Componentă ^ Pin Componentă ^ Pin ATmega328P ^ Justificare Tehnică ^
 +| Modul MicroSD | VCC | 5V | Alimentare modul SD. |
 +| ::: | GND | GND | Masă comună a circuitului. |
 +| ::: | MISO | D12 (PB4) | Master In Slave Out — date de la SD spre microcontroler. |
 +| ::: | MOSI | D11 (PB3) | Master Out Slave In — date de la microcontroler spre SD. |
 +| ::: | SCK | D13 (PB5) | Clock SPI. Sincronizează transferul de date. |
 +| ::: | CS | D10 (PB2) | Chip Select. Activează comunicarea cu modulul SD. |
 +| Modul SC8002B + Difuzor | VCC | 5V | Alimentare modul audio. |
 +| ::: | GND | GND | Masă comună a circuitului. |
 +| ::: | IN (+) | D9 (PB1) | Pin Timer1 OC1A. Generează semnalul audio prin Fast PWM. |
 +| ::: | OUT | Difuzor | Semnal amplificat către difuzor extern de 2W. |
 +| Mufă Jack Căști | Left / Right | - | Canale audio căști, conectate după rezistența de 2.2kΩ. |
 +| ::: | GND | GND | Conectat la bara albastră (GND) pentru închiderea circuitului. |
 +| Potențiometru Slider | VCC | 5V | Alimentare potențiometru. |
 +| ::: | OUT (cursor) | A0 (PC0) | Intrare analogică ADC. Citește poziția sliderului pentru volum. |
 +| ::: | GND | GND | Masă comună. |
 +| LED Verde 1 (VU) | Anod | D3 (PD3) | Pin PWM. Controlează intensitatea prin analogWrite(). |
 +| LED Verde 2 (VU) | Anod | D4 (PD4) | GPIO digital. Primul nivel al VU meter-ului. |
 +| LED Galben (VU) | Anod | D5 (PD5) | Pin PWM. Nivel intermediar VU meter. |
 +| LED Roșu (VU) | Anod | D7 (PD7) | Pin PWM. Nivel maxim VU meter. |
 +| LED-uri (toți) | Catod | GND | Masă comună prin rezistență 220Ω. |
 +| OLED SSD1306 | VCC | 5V | Alimentare display. |
 +| ::: | GND | GND | Masă comună. |
 +| ::: | SDA | A4 (PC4) | Serial Data I2C. Pin dedicat hardware pe ATmega328P. |
 +| ::: | SCL | A5 (PC5) | Serial Clock I2C. Sincronizează transferul de date. |
 +| Buton PREV | P1 | A1 (PC1) | Intrare digitală cu INPUT_PULLUP intern. Melodia anterioară. |
 +| ::: | P2 | GND | Masă — butonul trage pinul la GND la apăsare. |
 +| Buton PLAY/PAUSE | P1 | A2 (PC2) | Intrare digitală cu INPUT_PULLUP intern. Play/Pause toggle. |
 +| ::: | P2 | GND | Masă comună. |
 +| Buton NEXT | P1 | A3 (PC3) | Intrare digitală cu INPUT_PULLUP intern. Melodia următoare. |
 +| ::: | P2 | GND | Masă comună. |
 +
 +{{:​pm:​prj2026:​ciprian.popescu0411:​daria.harabagiu:​circuit_final.jpeg?​600|Circuit MP3 Player}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +Cod proiect: https://​github.com/​dariaharabagiu/​Proiect_MP3
  
-<note tip> +Proiectul a fost dezvoltat in mediul **VS Code + PlatformIO**,​ folosind framework-ul Arduino pentru microcontrollerul ATmega328P-XMINI. 
-Descrierea codului aplicaţiei (firmware)+ 
-  * mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+^ Fisier / Biblioteca ^ Rol ^ 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib+| main.cpp | Contine logica principala a proiectuluiinitializare hardware, redare audio, butoane, display si VU meter. | 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +| SD.h | Gestioneaza citirea fisierelor .wav de pe cardul microSD prin protocolul SPI. | 
-  ​* ​(etapa 3) surse şi funcţii implementate +| TMRpcm.h | Redarea fisierelor audio WAV prin Timer1 in mod Fast PWM pe pinul D9. | 
-</​note>​+| U8g2lib.h ​(U8X8| Controlul display-ului OLED SSD1306 prin I2C, in mod fara buffer pentru a nu bloca intreruperile audio
 +| Wire.h | Activeaza magistrala I2C hardware (A4=SDAA5=SCLpentru comunicatia cu display-ul. | 
 +| SPI.h | Protocoul SPI hardware pentru comunicatia cu modulul microSD. | 
 + 
 +^ Functie ^ Rol ^ 
 +| setup() | Initializeaza toti pinii, cardul SD, display-ul OLED si porneste prima melodie. | 
 +| loop() | Citeste butoanele cu debounce, potentiometrul ADC, actualizeaza volumul si VU meter-ul
 +| pornesteMelodie(index) | Opreste piesa curenta, porneste piesa de la indexul dat si actualizeaza display-ul
 +| afiseazaOLED(| Scrie pe display numele melodiei curente, numarul track-ului si statusul play/pause. | 
 + 
 +^ Laborator ^ Utilizare in proiect ^ 
 +| Lab 0 - GPIO | LED-uri VU meter pe D3, D4, D5, D7 cu rezistente 220Ω; butoane PREV/​PLAY/​NEXT pe A1, A2, A3 cu INPUT_PULLUP intern. | 
 +| Lab 3 - Timere & PWM | TMRpcm foloseste Timer1 in mod Fast PWM pe pinul D9 (OC1A) pentru generarea semnalului audio. | 
 +| Lab 4 - ADC | Potentiometrul slider HW-233 citit prin analogRead() pe A0 (0-1023), mapat la volum (0-3) si numar LED-uri aprinse. | 
 +| Lab 5 - SPI | Cardul microSD comunicat prin SPI hardware pe pinii D10(CS), D11(MOSI), D12(MISO), D13(SCK). | 
 +| Lab 6 - I2C | Display-ul OLED SSD1306 comunicat prin I2C hardware pe A4(SDA) si A5(SCL) folosind biblioteca U8X8. |
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Demo: {{:​pm:​prj2026:​ciprian.popescu0411:​daria.harabagiu:​demo.zip|Download demo video}}
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Proiectul functioneaza complet si implementeaza urmatoarele functii:
  
-===== Download =====+  * Redarea fisierelor audio .wav stocate pe cardul microSD prin amplificatorul SC8002B 
 +  * Navigarea intre melodii prin butoanele PREV si NEXT 
 +  * Pauza si reluarea redarii prin butonul PLAY/​PAUSE 
 +  * Controlul volumului in timp real prin potentiometrul slider HW-233 
 +  * Vizualizarea nivelului de volum prin VU meter-ul format din 4 LED-uri (verde, galben, rosu) 
 +  * Afisarea numelui melodiei curente, numarul track-ului si statusul pe display-ul OLED SSD1306
  
-<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 Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +Proiectul a demonstrat cum un microcontroller simplu ​(ATmega328Ppoate gestiona simultan mai multe perifericestocare SPIredare audio PWM, afisaj I2C si input utilizator GPIO/ADC
-</​note>​+
  
-===== Jurnal ===== +Principala provocare tehnica a fost compatibilitatea intre biblioteca TMRpcm (care foloseste Timer1 prin intreruperi) si biblioteca ​de display (care poate bloca intreruperile in timpul scrierii). Solutia a fost folosirea modului U8X8 al bibliotecii U8g2, care scrie direct pe display fara buffer, fara a dezactiva intreruperile.
- +
-<note tip> +
-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>​ +**Resurse ​Hardware:** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse ​Software** şi **Resurse ​Hardware**. +  * [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf|Datasheet ATmega328P]] 
-</note>+  * [[https://​github.com/​TMRh20/​TMRpcm|Biblioteca TMRpcm - GitHub]] 
 +  * [[https://​github.com/​olikraus/​u8g2|Biblioteca U8g2 - GitHub]] 
 + 
 +**Resurse ​Software:** 
 +  * [[https://​docs.platformio.org|Documentatie PlatformIO]] 
 +  * [[https://​www.arduino.cc/​reference/​en/|Arduino Reference]]
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2026/ciprian.popescu0411/daria.harabagiu.1778412789.txt.gz · Last modified: 2026/05/10 14:33 by daria.harabagiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0