This is an old revision of the document!


Mini MP3 Player

Introducere

Proiectul meu constă într-un player audio portabil construit pe microcontrolerul ATmega328P-XMINI, care redă fișiere .wav stocate pe un card microSD.

  • Ideea a pornit din dorința de a construi de la zero un dispozitiv personalizat, funcțional și estetic, dedicat redării muzicii.
  • Utilizatorul poate controla redarea prin butoane fizice (play/pause, next, prev), poate regla volumul printr-un potențiometru, iar numele melodiei curente este afișat pe un display OLED.
  • Proiectul demonstrează cum un microcontroler simplu poate gestiona simultan mai multe periferice — stocare, afișaj, audio și input utilizator — oferind o perspectivă practică asupra sistemelor embedded.

Descriere generală

  • 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 și amplificat de modulul LM386 către difuzor sau căști (jack 3.5mm).
  • 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.
  • Volum (ADC): Un potențiometru de 10kΩ citit prin ADC controlează volumul redării.
  • VU Meter (PWM): 6 LED-uri (verde, galben, roșu) vizualizează nivelul sonor în timp real.

Hardware Design

Componente folosite:

  • ATmega328P-XMINI: Placa de bază pentru controlul întregului sistem.
  • Modul MicroSD (SPI): Stochează fișierele audio .wav.
  • Display OLED 1.3” I2C: Afișează numele melodiei curente și statusul playerului.
  • Modul amplificator LM386: Amplifică semnalul audio PWM pentru difuzor.
  • Difuzor 40mm 3W: Redă sunetul amplificat.
  • Mufă jack audio 3.5mm (PJ392): Permite conectarea căștilor.
  • Potențiometru 10kΩ: Controlează volumul prin ADC.
  • Butoane tactile (x4): Play/pause, next, prev + rezervă.
  • LED-uri 5mm roșu x2, galben x2, verde x2: VU meter vizual.
  • Rezistențe 220Ω (x6): Protecție LED-uri.
  • Condensatoare 10µF (x2): Filtru audio pentru LM386.
  • Breadboard + fire Dupont: Pentru realizarea conexiunilor între componente.

Î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.
LM386 + Difuzor VCC 5V Alimentare amplificator audio.
GND GND Masă comună.
IN (+) D9 (PB1) prin C 10µF Pin PWM Timer1 OC1A. Generează semnalul audio prin Fast PWM.
OUT Difuzor Semnal amplificat către difuzor 3W.
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 D6 (PD6) Pin PWM. Nivel maxim VU meter — intensitate redusă prin cod.
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ă.

Circuit MP3 Player

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2026/ciprian.popescu0411/daria.harabagiu.1779104546.txt.gz · Last modified: 2026/05/25 11:20 (external edit)
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