Budowa wizualizera audio na ESP32

Budowa wizualizera audio na ESP32
W tym artykule krok po kroku pokażemy, jak zbudować prosty wizualizer audio oparty na mikrokontrolerze ESP32. Projekt będzie reagował na dźwięk z otoczenia, w zależności od głośności zapalane będą kolejne diody od dołu zielone, poprzez środkowe pomarańczowe, aż po szczytowe czerwone przy najwyższym natężeniu dźwięku. Dzięki zasilaniu z akumulatora 18650 cały układ może być przenośny, co czyni go świetną ozdobą na domową imprezę lub festiwal światła. Pokażemy, jak samodzielnie zbudować taki VU meter audio, udostępnimy kod, listę potrzebnych elementów oraz zdjęcia gotowego urządzenia. Zaczynajmy! 🎶
Założenia projektu i jego funkcjonalność
Nasz projekt wizualizera audio oparty na ESP32 będzie posiadał następujące kluczowe funkcje:
✅ Pomiar poziomu dźwięku z otoczenia za pomocą czułego mikrofonu analogowego. Moduł ESP32 odczytuje natężenie dźwięku.
✅ Wizualizacja głośności na matrycy LED w czasie rzeczywistym, zapala się słupek złożony z diod, którego wysokość odpowiada bieżącej głośności.
✅ Dynamiczna zmiana koloru diod w zależności od poziomu sygnału, diody świecą odpowiednim kolorem: zielony dla cichych dźwięków, pomarańczowy dla średnich i czerwony przy bardzo głośnych.
✅ Zasilanie bateryjne 3,7 V układ zasilany jest z ogniwa Li-Ion 18650, co umożliwia przenośne użycie bez stałego podłączenia do zasilania.
To świetny projekt zarówno dla początkujących, jak i bardziej zaawansowanych majsterkowiczów, pozwalający na efektowne połączenie elektroniki i muzyki! 🔊

Lista potrzebnych elementów
Do zbudowania naszego wizualizera audio będziemy potrzebować kilku podstawowych komponentów. Poniżej przedstawiamy pełną listę elementów, które wykorzystamy w tym projekcie:
| Element | Opis |
|---|---|
| ESP32-C3 Super Mini | Mikrokontroler ESP32-C3 serce projektu, które będzie odczytywać mikrofon i sterować diodami. |
| Mikrofon elektretowy ze wzmacniaczem MAX9814 | Moduł czujnika dźwięku analogowy o wysokiej czułości, służący do pomiaru natężenia dźwięku. Posiada automatyczną regulację wzmocnienia AGC dla lepszego wychwytywania zarówno cichych, jak i głośnych sygnałów. |
| Matryca 64 diod adresowalnych LED RGB WS2812 5V | Matryca z 64 diodami sterowanymi cyfrowo. Pozwoli na wyświetlanie kolorowego słupka reprezentującego poziom dźwięku. |
| Ogniwo Li-Ion 18650 3,7 V | Pojedynczy akumulator litowo-jonowy, zapewniający mobilne zasilanie projektu. |
| Uchwyt na pojedyncze ogniwo 18650 | Koszyk umożliwiający bezpieczne podłączenie akumulatora do układu ESP32. |
| Uniwersalna płytka PCB 7 x 9 cm | Uniwersalna płytka prototypowa do połączenia komponentów. |
Dzięki tym elementom zbudujemy kompletny i działający wizualizer audio, który na bieżąco reaguje na odgłosy z otoczenia efektownymi słupkami światła! 🌈🎵
Dla wygody przygotowaliśmy gotowy koszyk zakupowy w naszym sklepie, zawierający wszystkie powyższe komponenty potrzebne do tego projektu.
Schemat połączeń
Skoro mamy już skompletowane wszystkie elementy, możemy przystąpić do ich połączenia. Poniżej opisujemy, jak podłączyć każdy z komponentów do płytki ESP32. Na początku warto korzystać z płytki stykowej i przetestować, co ułatwi montaż i ewentualne modyfikacje układu:
| Element | Pin modułu | Pin ESP32-C3 Super Mini | Opis funkcji |
|---|---|---|---|
| Mikrofon MAX9814 | VCC | 5 V | Zasilanie modułu mikrofonu 5V |
| GND | GND | Masa wspólna układu | |
| OUT | GPIO0 | Wejście analogowe odczyt sygnału audio | |
| Matryca LED WS2812 (8×8) | 5V | 5V | Zasilanie diod zasilanie 5 V z ESP32 lub z ogniwa |
| GND | GND | Masa wspólna układu | |
| DIN | GPIO1 | Wejście danych sygnału sterującego LED | |
| Koszyk na ogniwo 18650 | + | 5V | Zasilanie całego układu z akumulatora |
| – | GND | Masa akumulatora połączona wspólnie z ESP32 i modułami |
Świetnie! Teraz, gdy wszystkie komponenty zostały poprawnie podłączone zgodnie ze schematem, możemy przejść do przygotowania oprogramowania układu. ⚙️

Instalacja wymaganych bibliotek w Arduino IDE
Do zaprogramowania ESP32 użyjemy środowiska Arduino IDE. Zanim przejdziemy do kodu, należy zainstalować niezbędną bibliotekę, która ułatwi sterowanie diodami WS2812 NeoPixel:
#### Kroki instalacji biblioteki NeoPixel:
- Otwórz Arduino IDE i przejdź do menu Narzędzia → Zarządzaj bibliotekami.
- W polu wyszukiwania wpisz „Adafruit NeoPixel”. Z listy wyników wybierz „Adafruit NeoPixel by Adafruit” i zainstaluj najnowszą wersję tej biblioteki.
- Po zakończeniu instalacji zamknij Menedżera bibliotek.
Biblioteka Adafruit NeoPixel pozwoli nam w prosty sposób sterować matrcyą diod WS2812 za pomocą pojedynczego pinu. Nie potrzebujemy żadnych dodatkowych bibliotek do obsługi mikrofonu, odczyt sygnału audio zrealizujemy za pomocą wbudowanego przetwornika analogowo-cyfrowego ADC w ESP32.

Gotowy kod
Kod źródłowy wizualizera audio jest już przygotowany i skonfigurowany, zawiera obsługę mikrofonu analogowego oraz sterowanie matrycą wraz z logiką zmiany kolorów przy określonych progach głośności. Możesz go pobrać z linku poniżej i wgrać bezpośrednio do swojego ESP32:
Po pobraniu skecz Arduino upewnij się, że masz wybraną odpowiednią płytkę oraz port COM w Arduino IDE. Teraz omówimy, jak prawidłowo wgrać program do mikrokontrolera.

Wgrywanie kodu na ESP32
Gdy posiadasz już zainstalowane biblioteki oraz pobrany kod, możemy przystąpić do wgrania programu na płytkę ESP32. Poniżej przedstawiamy instrukcje krok po kroku:
Krok 1: Podłączenie ESP32 do komputera
1️⃣ Podłącz płytkę ESP32 do komputera za pomocą przewodu USB.
2️⃣ Otwórz Arduino IDE i w menu Narzędzia → Płytka wybierz odpowiedni model, np. ESP32C3 Dev Module lub nazwę odpowiadającą Twojej płytce.
3️⃣ Przejdź do Narzędzia → Port i wybierz port COM, pod który podłączona jest płytka np. COM3, COM4 itd.na liście powinna pojawić się nazwa ESP32.
Krok 2: Kompilacja i wgranie programu
1️⃣ Otwórz pobrany kod projektu w Arduino IDE. Powinien załadować się główny plik .ino ze szkicem programu.
2️⃣ Kliknij przycisk “Zweryfikuj” (✔️) aby skompilować kod i sprawdzić, czy nie ma błędów. Kompilacja może potrwać kilkadziesiąt sekund upewnij się, że zakończyła się komunikatem “Kompilacja zakończona pomyślnie”.
3️⃣ Jeśli kompilacja przebiegła pomyślnie, kliknij “Wgraj” (→), aby załadować program do pamięci ESP32. Arduino IDE skompiluje kod ponownie, a następnie rozpocznie proces wgrywania (obserwuj dolne okno z komunikatami, gdzie widać postęp).
Krok 3: Problemy z wgrywaniem? Oto rozwiązania!
- Jeśli podczas próby wgrania pojawia się błąd: “A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header” oznacza to, że komputer ma trudność z przejściem płytki w tryb programowania. Rozwiązanie: wciśnij i trzymaj przycisk BOOT na płytce ESP32 w momencie rozpoczynania wgrywania kodu trzymaj go, aż do zakończenia procesu. Spowoduje to wejście układu w tryb flashowania i powinno rozwiązać problem.
- Jeśli Arduino IDE nie widzi portu COM z Twoją płytką nie pojawia się ona na liście portów, najprawdopodobniej brakuje odpowiednich sterowników USB. W zależności od modelu ESP32 zainstaluj sterownik CP2102 lub CH340 większość płytek ESP32 DevKit korzysta z jednego z tych konwerterów USB-UART. Po instalacji sterownika odłącz i podłącz ponownie płytkę powinna zostać wykryta.
Jeśli powyższe kroki przebiegły pomyślnie, Twój program został wgrany do ESP32! 🎉 Teraz przejdziemy do sprawdzenia działania układu i omówienia, czego możemy się spodziewać po uruchomieniu naszego wizualizera.
Testowanie i działanie urządzenia
Po poprawnym wgraniu kodu i uruchomieniu układu ESP32 z podłączonym akumulatorem lub zasilaniem USB, diody powinny zareagować na dźwięki w otoczeniu. Jak to wygląda w praktyce?
- Brak dźwięku: Gdy otoczenie jest ciche, wszystkie diody pozostają zgaszone lub zapalone jest tylko najniższe zielone światło. Układ stale nasłuchuje sygnału z mikrofonu, lecz jego poziom nie przekracza najniższego progu.
- Ciche dźwięki: Kiedy pojawi się dźwięk o niewielkim natężeniu np. cicha muzyka, mowa, zaświecą się dolne diody w kolorze zielonym. Im głośniejszy sygnał, tym więcej zielonych segmentów się zapali od dołu.
- Średnia głośność: Przy umiarkowanym poziomie dźwięku pasek diod zacznie osiągać środkowe segmenty. Środkowe diody zapalają się na pomarańczowo, sygnalizując, że głośność przekroczyła pewien poziom. Na tym etapie dolne zielone diody będą już świecić, a dodatkowo dołączą do nich pomarańczowe w części środkowej.
- Wysoka głośność: Gdy dźwięk staje się naprawdę głośny, np. blisko mikrofonu klaszczemy w dłonie lub odtwarzamy głośną muzykę, zapalą się czerwone diody w górnej części paska. Czerwone segmenty oznaczają najwyższy zakres natężenia dźwięku. W praktyce przy maksymalnej głośności wszystkie diody od zielonych, przez pomarańczowe, aż po czerwone będą się świecić, tworząc pełny słupek.
W naszym projekcie z 64 diodami zastosowaliśmy podział kolorów dla czytelności: dolne diody świecą na zielono niskie poziomy, kolejne na pomarańczowo średnie poziomy, a najwyższe diody na czerwono przy osiągnięciu wysokiego poziomu sygnału. Oczywiście dokładne progi przełączania kolorów zostały zaprogramowane w kodzie, możesz je dostosować do własnych preferencji, zmieniając odpowiednie wartości w programie np. jeśli chcesz, by czerwona zapalała się dopiero przy naprawdę ekstremalnym hałasie lub by reagowała szybciej.

możliwe rozszerzenia
Gratulacje zbudowałeś własny wizualizer audio na ESP32! 🎉 Twój wizualizer w domowym wydaniu reaguje na dźwięk, zamieniając falę akustyczną na kolorowy słupek światła. Taki gadżet może być świetnym urozmaiceniem domowych spotkań, imprez czy po prostu efektowną ozdobą pokoju reagującą na muzykę.
Ten projekt stanowi doskonałą bazę do dalszych eksperymentów. Oto kilka pomysłów na rozszerzenia, które możesz wypróbować:
- 🔊 Więcej diod : Możesz zwiększyć liczbę diod, aby uzyskać jeszcze dokładniejszy wskaznik poziomu głośności. Wymaga to jedynie zmiany jednej zmiennej w kodzie liczby diod reszta obsługi z biblioteką NeoPixel pozostaje taka sama.
- 📈 Analiza częstotliwości (FFT): Obecna wersja reaguje na ogólną głośność amplitudę dźwięku. Bardziej zaawansowani użytkownicy mogą pokusić się o wykorzystanie transformacji Fouriera FFT do analizy widma dźwięku na ESP32. Dzięki temu można by zbudować prawdziwy analizator dźwięku wyświetlający osobne słupki dla różnych pasm częstotliwości bas, średnie, wysokie tony. Byłoby to już bardziej złożone zadanie, ale ESP32 z dwurdzeniowym procesorem jest w stanie to udźwignąć to ciekawy kierunek rozwoju projektu!
- 📶 Sterowanie bezprzewodowe: Skoro nasza płytka ma moduł WiFi/BLE, można pomyśleć o dodaniu sterowania zdalnego np. poprzez aplikację na smartfonie zmieniać tryby świecenia diod, kalibrować czułość mikrofonu albo odczytywać poziom głośności w formie cyfrowej. To już wykracza poza podstawowy poradnik, ale pokazuje potencjał drzemiący w ESP32.
Podsumowanie
Mamy nadzieję, że ten poradnik był dla Ciebie pomocny i udało Ci się zbudować działający wizualizer audio. 🥳 Jeśli tak usiądź wygodnie, włącz ulubioną muzykę i ciesz się pokazem świateł zsynchronizowanych z dźwiękiem! Daj znać w komentarzu, jak poszła budowa i jakie utwory najlepiej malują się światłem na Twoim wizualizerze. Powodzenia w dalszych elektronicznych projektach! 🚀😁

Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇


Przycisk dotykowy z podświetleniem zielonym
Inteligentny przełącznik ZigBee Sonoff ZBMINIL2 2 sztuki
Złączka uniwersalna 3 x (0.75-2.5mm)
Moduł przekaźnika 1 kanał z optoizolacją 5 v czerwony
Przełącznik kołyskowy pojedynczy dwukanałowy niebieski (DPST) z podświetleniem
Silnik krokowy JK42HS48-1204 200 kroków/obr
Tester USB napięcie prąd moc rezystancja niebieski
Moduł przekaźników 2 kanały z optoizolacją 5 V czerwony