MP3 Player with RGB Music Visualizer
Student: Tudose George-Ștefan
Grupa: 334CC
Introducere
Proiectul constă într-un MP3-Player care are funcționalitate și de music visualizer. Pentru a reda melodiile dorite, utilizatorul le
salvează pe un card MircoSD urmând să le redea folosind o interfață minimalistă oferită de un ecran OLED. Folosind un senzor cu mircrofon
sistemul va acționa o bandă RGB pentru a-i schimba culoarea și luminozitatea conform melodiei curente care este redată la momentul curent.
Am ales să realizez acest tip de proiect datorită faptului că în timpul zilei ascult foarte multă muzică. Ideea de music visualizer printr-o
bandă LED a apărut din dorința de a face un proiect puțin mai complex decât un simplu MP3 Player. Consider că acest proiect este util deoarece
tuturor ne place să ascultăm muzică.
Descriere generală
Acest MP3 Player are următoarele funcționalități:

Redă melodiile încărcate pe un card micro SD

Oferă o interfață cu utilizatorul accesibila print-un ecran și o serie de butoane

Oferă funcționalități specifice unui MP3 Player: stop/ start playing, next/ prev song, sound up/ down

Oferă posibilitatea de a modifica culoarea bandei LED în funcție de melodia curentă care rulează
Hardware Design
Lista de Componente :
Arduino UNO R3 ATMEGA328P
SD Card Reader
Card de memorie Sandisk Ultra MircoSD 32GB Class 10
Boxa 40MM 3W
1k Rezistors
DFPlayer Mini
PAM8403 Amplifier
OLED Display SSD1306 12864 i2c
Led Stripe
Modul Microfon Senzor Sunet 5V
Tranzistor NPN TIP31 TIP31C TO220
Butoane
Fire
Breadboard
Schema Electrica
Software Design
Funcții Implementate
Pentru controlul ecranului OLED
settings(): Această funcție afișează ecranul de setări. Setările afișate sunt volumul și egalizatorul. Se afișează de asemeana și un side menu pentru navigare.
sideMenu(): Această funcție afișează meniul lateral de navigare pe ecranul OLED.
player(): Această funcție afișează interfața de control al playerului audio pe ecranul OLED. Interfața prezintă opțiuni de nextSong, prevSong si Pause/Resume, alături numărul melodiei curente.
flashPage(): Această funcție afișează un ecran de pornire flash pe ecranul OLED.
drawIcon(const uint8_t* iconName, u8g2_uint_t x, u8g2_uint_t y, uint16_t glyph): Această funcție afișează un pictogramă/iconiță pe ecranul OLED.
refresh(): Această funcție activează rederesanrea ecranului corect la un interval de 1min.
Butoanele de next și prev sunt controlate prin întruperile INT1 și INT2.
Butonul de select este controlat în funcția de loop(). (SoftwareSerial folosit de DFPlayer Mini nu permite utilizarea întreruperilor PCInt)
Pentru controlul benzii LED
Logica Programului
Se verifcă dacă ecranul are nevoie de un refresh.
Se verifică starea butonului de select. În caz de apăsarea, în funcție de meniul curent și starea curentă în interfață se realizeaza ori o modificare în interfață ori/și o comandă către modulul DFPlayer mini.
În cazul în care s-a apăsat pe butonul select, se actualizează ecranul afișat pe OLED.
Se dezactivează SoftwareSerial stream, deoarece implementarea sa nu este compatibilă cu analogWrite și analogRead
Se citește valoarea de pe senzorul conectat la A0, și in funcție de valoare citită se alege o culoarea corespunzătoare. Pinii 9, 10, 11 (PWN) controlează culoarea benzii.
Se reactivează SoftwareSerial Stream fără a reseta modulul Mini Player.
Rezultate Obţinute
Concluzii
Codul prezentat demonstrează utilizarea bibliotecilor și funcțiilor specifice Arduino pentru a controla diverse componente hardware, cum ar fi senzorul analogic, ecranul OLED, difuzorul și LED-urile RGB.
Bibliotecile externe extind capacitățile Arduino, permițând controlul dispozitivelor și senzorilor specializați, precum și redarea fișierelor audio de pe cardul SD.
Încorporarea unui vizualizator RGB în cod demonstrează modul în care se poate controla culoarea LED-urilor în funcție de valoarea citită de senzorul analogic. Acest exemplu ilustrează modul în care Arduino poate fi folosit pentru a crea efecte de iluminare personalizate și reacții la schimbările de mediu.
Utilizarea unui ecran OLED și a unui sistem de meniu permite interacțiunea cu utilizatorul, ceea ce lustrează modul în care intefața cu utilizatorul poate fi implementată în proiectele Arduino pentru a oferi control și flexibilitate utilizatorului.
Download
Jurnal
05.04.2023 Alegere temă proiect
14.04.2023 Comandă piese
07.05.2023 Realizare pagină OCW Wiki
07.05.2023 Completare Milestone 1
21.05.2023 Completare Milestone 2
28.05.2023 Completare Milestone 3
Bibliografie/Resurse