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

  • Mediu de dezvoltare : Arduinno IDE
  • Librării şi Surse 3rd-party :
    • SoftwareSerial.h și DFRobotDFPlayerMini.h pentru comunicarea cu modulul DFPlayer Mini
    • U8g2lib.h și Wire.h pentru realizarea interfeței pe ecranul OLED
    • EEPROM.h pentru a salva valorile variabilelor care gestioneaza volumul, EQ și melodia curentă

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

  • RGBVisualizer(): Această funcție controlează LED-urile RGB în funcție de un senzor de sunet cu microfon conectat la pinul A0. Se bazează pe valoarea citită de senzor pentru a determina culorile afișate de LED-uri.

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

Rezultate obținute după etapa Hardware

Rezultate obținute după etapa Software (Ecranul OLED)

Demo Funcționalitate Proiect https://www.youtube.com/watch?v=CzFys5a_zP0

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

  1. 05.04.2023 Alegere temă proiect
  2. 14.04.2023 Comandă piese
  3. 07.05.2023 Realizare pagină OCW Wiki
  4. 07.05.2023 Completare Milestone 1
  5. 21.05.2023 Completare Milestone 2
  6. 28.05.2023 Completare Milestone 3

Bibliografie/Resurse

pm/prj2023/ndrogeanu/boxargb.txt · Last modified: 2023/05/29 19:36 by george.tudose2504
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