Music Visualizer

Autor: Crăciun Octavian

Grupa: 332CB

Introducere

Scopul proiectului este de a realiza dispozitiv transforma inputul audio intr-un output visual folosind o matrice de leduri si un display.

Descriere Generală

Dispozitivul, folosind un microfon, preia un input audio si afiseaza pe un ecran OLED spectrul de frecvente al acestui input, si in acelasi timp in functie de frecventa primita trimite diverse semnale matricei led. Datele sunt citite cu ajutarul microfonului electret la o perioada din pinul analog A0 reprezinta tensiunea in volti. Datele sunt stocate intr-un vector, transformate in spectrul de frecvente si este calculata media frecventelor pe portiuni care este afisata.

Hardware Design

Schema electrica:

Lista de piese:

  1. Arduino UNO
  2. Breadboard
  3. Jumper wires
  4. Led Matrix
  5. Microfon elecret
  6. Regulator tensiune trece-jos
  7. Display OLED 128×32

Software Design

Mediu de dezvoltare:

  • Arduino IDE
  • Pentru display-ul LCD am folosit bibliotecile <Adafruit_GFX.h> si <Adafruit_SSD1306.h>
  • Pentru matricea de leduri am folosit bibliotecile <MD_MAX72xx.h> si <Max72xxPanel.h>
  • Pentru banda de leduri am folosit biblioteca #<Adafruit_NeoPixel.h>
  • Pentru datele citite(sample-uri),am un vector de 64 de elemente. Am incercat prima data folosirea unui vector de 1024 dar memoria nu era suficienta si am scazut la cea mai mica putere a lui 2 la care nu primeam warning-uri.
  • Pentru a obtine spectrul de frecvente am folosit Fast Fourier Transform, un algoritm care duce un domeniu in domeniul lui de frecvente, folosind biblioteca “arduinoFFT.h”
  • Dupa ce se obtine spectrul de frecvente este facuta media pe fiecare interval de sample-uri
  • Se reprezinta pe display-ul OLED I2C prin 12 bari ce reprezinta valorile din spectrul de frecevente si pe matricea led pe fiecare coloana cate o valoare a frecventei, iar pe banda de leduri media frecventelor

Rezultate Obținute

Testare Microfon electret

Microfonul electret este un cvasi-permanent dielectric incarcat. Este facut prin inclazirea unui material ceramic, plasat intr-un camp magnetic apoi racit cat timp este in campul magnetic. Este un dispozitiv electrostatic echivalent unui magnet permanent. Intr-un microfon electret o parte din material este folosit ca o parte a unui dielectric a unui condensator in care diafragma condesatorului formeaza o placa. Presiunea sunetului misca diafragma. Miscarea placii variaza capacitatea in functie de presiunea sunetului. Voltajul capacitorului va varia de asemenea. Condensatorul electretului este conectat cu input-ul unui amplificator FET integrat. Microfoanele electrete au o sensizitivitate foarte mare.

Modul microfon, senzor sunet DUAFF

Avantaje:

- Senzitivitate mai buna

Dezavantaje:

- Preluarea frecventelor mai inceata si mai inexacta

- Mai mult zgomot

Frecventa zgomotului in cazul nepreluarii de sunet: 1024 Hz

Tensiune de operare: 3.3V-5V

Documentatie:https://ardushop.ro/ro/home/1314-modul-microfon-senzor-sunet.html?search_query=microfon&results=6

Modul microfon High Sensitivity Sound Detection

Avantaje:

- Preluarea frecventelor mai rapida si exacta

- Mai putin zgomot

Dezavantaje:

- Sensibilitatea scazuta, difuzorul trebuie lipit de microfon

Frecventa zgomotului in cazul nepreluarii de sunet: 69 Hz

Tensiune de operare: maxim 5V

Documentatie:https://ardushop.ro/ro/home/119-modul-microfon-high-sensitivity-sound-detction.html?search_query=microfon&results=6

Zgomotul microfoanelor

Am incercat eliminarea zgomotului printr-un filtru trece jos respectiv filtru trece sus. Am incercat prima oara un filtru deja implementat dar frecventele erau deja prea inalte, apoi am incercat implementarea unuia cu o rezistenta legata in parallel cu un condensator dar nu am gasit condensatoare si rezistente destul de mici pentru a obtine o frecventa potrivita. Am pus o conditie in codul Arduino ca sa ignore valorile mai mici sau mai mari decat zgomotul de pe microfon. Pentru o mai buna exactitate a obtinerii frecventelor am adaugat un condensator pe power bus.

Testare Matrice LED 8×32

Bazat pe MAX7219, acest modul dispune de 4 matrice cu 8×8 LED-uri.

Matricea LED(Light Emitting Diode), este un grid de lumini aranajat in linii si coloane. Impreuna cu alte diode, electrictatea trece prin LED prin o directive de la anod la catod, realizand aprinderea luminilor.

Tensiune alimentare: 5V

Dimensiuni: 128x32x14 mm.

Documentatie:https://ardushop.ro/ro/home/1491-4xmatrix.html?search_query=matrice+leduri&results=34

Testare ecran OLED 128×32 I2C

Display-ul are chipset-ul SSD1306, și are o rezoluție de 128×32.

Are un unghi de vizualizare foarte larg, 160 de grade. De asemenea, tehnologia OLED pe care este bazat acest display, asigura un contrast ridicat și în același timp consumul de energie va fi foarte redus.

Modelul are 4 pini si comunica cu Arduino folosind protocolul de comunicatie I2C. Se folosesc bibliotecile adafruit_SSD1306.h si adafruit_GFX.h pentru controlarea display-ului.

Detalii tehnice:

  • Dimensiune ecran: 0.91”
  • Rezoluția display-ului: 128×32 pixeli
  • Tehnologie display: OLED
  • Driver IC:SSD1306
  • Interfață comunicare: IIC (GND, VCC, SCL, SDA)
  • Tensiune de alimentare: DC 3.3 - 5V
  • Dimensiune modul: 38 X 12 X 2.4mm

Documentatie:https://ardushop.ro/ro/home/393-display-oled-128x32-i2c.html

Afisarea spectrului de frecvente folosind matricea led si a ecranului OLED

Adaugarea unei benzi led NEOPIXEL pentru afisare

Fiecare circuit este compus din patru bucati de siliciu: trei leduri de culori diferite (RGB) si un circuit de control si limitare a curentului. Pe o banda, alimentarile sunt legate in paralel dar circuitele de control in serie.

Documentatie:https://ardushop.ro/ro/electronica/331-banda-leduri-rgb-neopixels-ws2812b.html#/126-leduri_metru-144

Montaj complet

Demonstratie video

Download

Descarcare PDF

Jurnal

  1. Comandare piese si elemente electrice
  2. Testare functionalitate microfon
  3. Testare functionalitate matrice led 8×32
  4. Testare functionalitate ecran OLED I2C
  5. Afisarea spectrului de frecvente folosind matricea led
  6. Adaugarea afisarii si prin intermediul ecranului OLED
  7. Adaugarea afisarii folosind o banda led

Bibliografie/Resurse

Arhiva cod sursa arduino

pm/prj2021/avaduva/musicvisualizer.txt · Last modified: 2021/06/04 09:51 by octavian.craciun
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