FAQ
TL;DR: Sterownik z 3 kanałami RGB, FFT i regulowaną bezwładnością pokazuje, że prawdziwa iluminofonia to nie miganie, lecz „mieszanie barw” zsynchronizowane z pasmami muzyki. Ten FAQ pomaga hobbystom ESP32 zbudować płynny efekt świetlny, który bardziej przypomina żarówki niż ostro przełączane LED-y. [#21489719]
Dlaczego to ważne: Wątek pokazuje, jak tanim układem na ESP32 odejść od prostego kolorofonu i uzyskać wizualnie znacznie bogatszą, bardziej muzyczną modulację światła.
| Podejście |
Przetwarzanie audio |
Efekt świetlny |
Ograniczenie z wątku |
| Klasyczny kolorofon 3-lampowy |
Filtry analogowe LP/BP/HP |
Wyraźne miganie osobnych kolorów |
Słabe mieszanie barw |
| Prototyp ESP32 + FFT |
512 próbek, 40 kHz |
Płynna modulacja RGB z bezwładnością |
Brak interfejsu użytkownika |
| Proste LED-y sterowane napięciem |
Bezpośrednie sterowanie LED |
Twarde zmiany, efekt zero-jedynkowy |
Stroma charakterystyka LED |
| RGB z projekcją/dyfuzorem |
To samo sterowanie, lepsza optyka |
Lepsze mieszanie na ścianie lub macie |
Trudne poprawne filmowanie efektu |
Najważniejszy wniosek: Największą różnicę daje nie sama analiza FFT, lecz połączenie PWM, korekcji wykładniczej i sztucznej bezwładności światła. Dopiero wtedy LED-y zaczynają zachowywać się wizualnie jak źródło światła do iluminofonii, a nie jak szybki wskaźnik migania.
Quick Facts
- Projekt używa 3 kanałów RGB, 9-bitowego PWM i wykładniczej modulacji w 64 poziomach, aby uzyskać płynniejsze, bardziej naturalne zmiany jasności. [#21489646]
- FFT pracuje na 512 próbkach przy 40 kHz, co daje rozdzielczość pasma około 78 Hz i cały cykl próbkowania z obliczeniami rzędu 16 ms. [#21489646]
- Autor szacuje koszt podstawowej wersji na około 20 PLN, a układ demonstracyjny zbudowany „na kolanie” da się zmontować w około 1 godzinę. [#21491938]
- Szkic kompilował się po ustawieniu płytki ESP32 Dev Module i cofnięciu pakietu ESP32 by Espressif Systems z 3.0.7 do 1.0.4. [#21490237]
- Do zwiększania mocy można przejść z diod 1 W na większe ciągi LED, a do ograniczenia strat użyć drivera PT4115: 30 V, 1.2 A, sterowanego PWM. [#21503111]
1. Czym jest iluminofonia i czym różni się od migających, trójlampowych kolorofonów budowanych dawniej?
Iluminofonia to prezentacja muzyki światłem, w której barwy i jasność płynnie odpowiadają zawartości pasm częstotliwości.
„Iluminofonia” jest układem świetlno-muzycznym, który mapuje pasma audio na kolory i miesza je w jeden wynikowy obraz świetlny, zamiast tylko przełączać osobne lampy. W wątku podkreślono, że klasyczne trzy migające lampy dają dużo uboższy efekt, bo nie tworzą barw wynikowych. W praktyce czerwony odpowiada basom, zielony średnim tonom, a niebieski wysokim.
[#21489646]
2. Co w tym kontekście oznacza termin kolorofon i dlaczego część użytkowników uważa proste migające światła za namiastkę prawdziwej iluminofonii?
Kolorofon oznacza tu prostsze urządzenie, które zwykle tylko włącza i wyłącza kilka kolorów zależnie od pasma audio.
„Kolorofon” jest prostszym sterownikiem świetlnym, który rozdziela muzykę na kilka kanałów i wywołuje miganie lamp, ale bez pełnego mieszania kolorów i bez płynnej modulacji. Uczestnicy wątku uznają taki efekt za namiastkę, bo trzy oddzielne błyski nie dają jednolitej, pulsującej barwy wynikowej. Ich zdaniem satysfakcjonujący efekt pojawia się dopiero wtedy, gdy kolory fizycznie się nakładają.
[#21492006]
3. Jak zbudować sterownik iluminofonii na ESP32 z użyciem arduinoFFT.h zamiast analogowych filtrów audio?
Najprościej użyć ESP32 Wroom, wejścia audio do ADC i trzech wyjść RGB sterowanych PWM. 1. Pobierz próbki audio do FFT: autor używa 512 próbek przy 40 kHz. 2. Przypisz wybrane koszyki FFT do trzech kanałów RGB i ustaw automatyczny poziom. 3. Na wyjściu zastosuj 9-bitowy PWM, wykładniczą korekcję i bezwładność rozjaśniania oraz wygaszania dla każdego koloru. Autor zrezygnował z interfejsu użytkownika, więc parametry zmienia się bezpośrednio w kodzie Arduino IDE.
[#21489646]
4. Dlaczego autor wybrał FFT na ESP32 Wroom zamiast klasycznych analogowych filtrów dolnoprzepustowych, pasmowych i górnoprzepustowych?
Wybrał FFT, bo uprościło to elektronikę i dało znacznie większą swobodę strojenia. Wprost napisał, że porzucił filtry analogowe na rzecz szybkiej transformaty Fouriera, używając taniego i wydajnego ESP32 oraz biblioteki arduinoFFT.h. Dzięki temu można dowolnie przydzielać pasma do kanałów RGB, ustawiać automatyczny poziom i zmieniać charakter efektu bez przebudowy toru analogowego. To ważne, bo projekt miał pozostać prosty sprzętowo, ale elastyczny programowo.
[#21489646]
5. Jak ustawiono parametry FFT w tym projekcie i co oznacza 512 próbek przy 40 kHz dla rozdzielczości pasm?
Parametry ustawiono na 512 próbek i częstotliwość próbkowania 40 kHz. To daje szerokość jednego koszyka FFT około 78 Hz, co autor podał wprost. Pobranie próbek i wykonanie obliczeń zajmuje około 16 ms, więc sterownik reaguje szybko, ale nadal zostawia miejsce na dodatkowe wygładzanie światła. Taki kompromis dobrze pasuje do trzech kanałów RGB, bo nie wymaga bardzo drobnej analizy widma, a daje wystarczająco stabilny podział pasm.
[#21489646]
6. Jaki jest najlepszy sposób uzyskania płynnej bezwładności światła z LED-ów, aby efekt przypominał żarniki żarówek zamiast twardego migania?
Najlepszy sposób z tego wątku to programowa bezwładność oparta na uśrednianiu kolejnych próbek oraz płynnym PWM. Autor chciał zasymulować bezwładność żarników i uznał, że proste układy LED działają zero-jedynkowo. Dlatego dodał regulację rozjaśniania i wygaszania dla każdego koloru oraz później opisał bufor FIFO z 30 próbkami, który bardzo wygładza zmiany. Użytkownicy zauważyli też, że fizyczne zbliżenie LED-ów i projekcja na białe tło poprawiają odbiór całego efektu.
[#21494245]
7. Dlaczego w tej iluminofonii preferowane jest sterowanie PWM zamiast bezpośredniego sterowania napięciem RGB LED?
PWM jest tu lepsze, bo LED-y nie nadają się do sensownego sterowania samym napięciem. Autor wyjaśnił, że charakterystyka prądowo-napięciowa LED jest zbyt stroma, więc proste sterowanie napięciem daje słabą liniowość i nadal przypomina zwykłe miganie. W prezentowanym urządzeniu jasność zależy od wypełnienia PWM, a nie od bezpośredniej zmiany napięcia. Dzięki temu jasność jest praktycznie liniowa względem sterowania, a cały efekt daje się jeszcze skorygować wykładniczo pod percepcję wzroku.
[#21490148]
8. Jak wykładnicza korekcja PWM pomaga sprawić, że zmiany jasności LED wyglądają liniowo dla ludzkiego oka?
Pomaga, bo oko odbiera zmiany światła logarytmicznie, a nie liniowo. Autor napisał, że sama jasność LED sterowanego PWM jest prawie liniowa względem wypełnienia, ale tę charakterystykę celowo „wygina” wykładniczo. W efekcie wykładniczne sterowanie połączone z logarytmicznym widzeniem daje wizualnie bardziej liniowe rozjaśnianie i ściemnianie. To właśnie dlatego projekt ma 9-bitowy PWM i dodatkową modulację w 64 poziomach, zamiast prostego przełączania stanów.
[#21490148]
9. Co powoduje błędy kompilacji typu adcAttachPin, timerAlarmWrite i timerAlarmEnable podczas kompilowania tego szkicu dla ESP32-C3 Dev Kit?
Najczęściej problem powoduje zła architektura mikrokontrolera i niezgodna płytka. W wątku zgłoszono te błędy przy wyborze ESP32-C3 Dev Kit, a autor odpowiedział, że ESP32-C3 to wyraźnie inna architektura niż użyty przez niego ESP32 Wroom. Kod został przygotowany pod ESP32 Dev Module i może się nie kompilować dla C3. To jest typowy przypadek graniczny: nawet poprawny szkic nie ruszy, jeśli platforma sprzętowa i funkcje timera lub ADC różnią się od oryginału.
[#21490215]
10. Jakie ustawienia Arduino core i płytki są potrzebne do poprawnej kompilacji tego szkicu iluminofonii na ESP32 i dlaczego użytkownicy cofnęli pakiet „ESP32 by Espressif Systems” z 3.0.7 do 1.0.4?
Trzeba wybrać płytkę ESP32 Dev Module i użyć pakietu ESP32 by Espressif Systems w wersji 1.0.4. Użytkownik potwierdził, że po cofnięciu z 3.0.7 do 1.0.4 szkic zaczął się kompilować. Autor doprecyzował też powód: 1.0.4 to ostatnia wersja, w której można próbkuować ADC z częstotliwością 40 kHz i więcej. W nowszych wersjach, przynajmniej w Arduino core, maksymalna częstotliwość na wejściu ADC spada do około 10 kHz, co psuje założenia projektu FFT.
[#21490287]
11. Jak fizycznie mieszać światło RGB, aby uzyskać lepszy efekt iluminofonii z użyciem mlecznego dyfuzora, białej ściany, projektora lub taśmy RGB LED?
Najlepiej zbliżyć źródła RGB do siebie i pozwolić im nakładać się na matowej powierzchni. W wątku podano kilka praktycznych metod: pojedynczą diodę RGB za mlecznym szkłem, trzy źródła światła ustawione blisko siebie i świecące na matę, projekcję na białą ścianę oraz użycie taśmy RGB LED. Starsi uczestnicy uzyskiwali mieszanie nawet na żarówkach za mleczną szybą. Autor potwierdził też, że po zwiększeniu bezwładności i projekcji na białe tło efekt wyraźnie się poprawił.
[#21490287]
12. Na czym polega opisana metoda ruchomej średniej z buforem FIFO do dodawania bezwładności światła i jak liczba przechowywanych próbek wpływa na szybkość reakcji?
Metoda polega na ciągłym uśrednianiu ostatnich próbek audio zamiast sterowania światłem pojedynczym odczytem. Autor użył bufora około 30 próbek dla każdego koloru. Nowa próbka trafia na początek, najstarsza wypada, a średnia z całego bufora steruje PWM. Aktualizacja następuje co jedną próbkę, czyli w jego przykładzie co około 16 ms. Im więcej próbek zapiszesz w buforze, tym wolniejsze i gładsze będą zmiany światła. Im mniej próbek, tym efekt będzie szybszy i bardziej nerwowy.
[#21494245]
13. Jak działa automatyczna regulacja poziomu po FFT w tym projekcie i jak parametry max_level, divisor, arw_increase i arw_decrease zmieniają dynamikę?
Regulacja działa przez dynamiczną zmianę dzielnika, którym skaluje się wartość pasma FFT przed wysłaniem na wyjście PWM. Autor podał przykład z max_level, divisor startowym 1000, progiem prog_arw 100 oraz krokami arw_decrease 50 i arw_increase 25. Gdy level_output przekroczy max_level, dzielnik rośnie i wyjście słabnie. Gdy sygnał jest za mały, dzielnik stopniowo maleje i wyjście rośnie. To daje prostą ARW po stronie cyfrowej bez stosowania analogowego kompresora.
[#21507177]
14. Jak najlepiej skalować ten prototyp od LED-ów 1 W do mocniejszego oświetlenia, na przykład przez szeregi, rezystory lub driver stałoprądowy PT4115?
Najpraktyczniej zwiększyć moc po stronie LED, a nie wracać do żarówek 230 V na triakach. Autor zaznaczył, że pokazany stopień wyjściowy to tylko przykład dla diody 1 W. Dalej można łączyć więcej LED szeregowo albo szeregowo-równolegle, z prostymi rezystorami kosztem większych strat. Lepszą drogą jest tani driver PT4115, opisany jako 30 V i 1.2 A, sterowany PWM z mikrokontrolera. To pozwala podnieść moc, zachować płynne sterowanie i uniknąć problemów z fazową regulacją żarówek sieciowych.
[#21503111]
15. Jak wygląda efekt tej iluminofonii przy utworach „Enola Gay”, „Take On Me” i „Gimme All Your Lovin’” na różnych ustawieniach bezwładności?
Wątek nie zawiera gotowego porównania tych trzech utworów, bo autor tylko zadeklarował, że może uruchomić test wieczorem. Da się jednak wyciągnąć bezpieczny wniosek praktyczny: przy większej bezwładności światło będzie płynniejsze i bardziej „żarnikowe”, a przy zerowej lub małej bezwładności przejdzie w czystszy efekt PWM, czyli szybsze, ostrzejsze reakcje. Sam autor pokazał już dwa tryby: zwiększoną bezwładność oraz ustawienia dla „optycznych sprinterów”, i uznał oba za lepsze od zwykłego przełączania LED-ów.
[#21489646]
Generated by the language model.