В мыслях забабахать светодиодную подсветку на ленте из WS2812B для компьютерного стола, планирую запилить как и просто статичные/переливающиеся режимы, так и режимы, реагирующие на звук, а именно - какие-нибудь пиковые эффекты и самое крутое - отображение FFT-спектра. Экспериментировал с кодом от AlexGyver’а на Arduino Nano, но этого камня хватает только для преобразования FFT 128, при этом явно видно, что очень некорректно передаются низкие частоты, и так как я занимаюсь электронной музыкой и часто приходится видеть параметрические эквалайзеры, показывающие “правильный” красивый FFT-спектр, результаты работы такой системы мозолит глаза. Плюс хотелось управление по Wi-Fi. Планируется использовать ленту на около 150 светодиодов, пока что не точно, но около того.
Выбор пал на ESP8266. Всё-таки 80 (или даже 160) МГц будут получше Ардуиновских 16-ти, значит, должно быть, и Фурье запляшет как нужно. Но при работе Wi-Fi полностью теряет смысл встроенный АЦП из-за возникновения шумов. Соответственно, придется брать внешний АЦП. И тут несколько вопросов:
Будет ли смысл от такой высокой частоты тактирования, если камень будет тратить время на то, чтобы опросить внешний АЦП; будет ли достаточно такой частоты, чтобы выполнить FFT от выборки больше 128 семплов? Например 512 или 1024, ну или на крайний случай 256.
Хватит ли камня на анализ двух сигналов сразу (стерео)?
Какая частота дискретизации будет возможна при всём этом? (Хотя это не критично, но ориентировочно прикинуть хотелось бы. Будет нормально если будет хотя бы 16-20 кГц, уж 48 не прошу, а то для подсветки жирно слишком)
Какой посоветуете недорогой АЦП для этой цели? желательно чтобы опрашивался по SPI (он всё же быстрее чем I2C) и имел подходящую битность. Максимальный нормальный размах сигнала звуковой карты будет в среднем около ± 1 В, обычно - ещё меньше, около 25-100 мВ. Выкрутив ручку громкости, удавалось выжимать ±4 В (8 вольт от пика до пика), но это ооочень громко, на такой громкости я как правило ничего не включаю. Но всё же для критических случаев поставлю диоды Шоттки (BAS70-04,215, есть несколько штук, их и планирую использовать).
4.1 Нужны ли будут с выбранным АЦП операционный усилитель и диоды Шоттки, чтобы сдвинуть сигнал для АЦП по напряжению и защитить вход от перенапряжения?
Не будет ли ощутимых помех от Wi-Fi модуля в аудио? Планируется этот же сигнал подавать на усилитель. А также останутся ли помехи, если поставить входные реле и таким образом устранять электрический контакт сигнального кабеля с такой системой подсветки, когда звуковые режимы будут неактивны?
В теме электроники я немного чайник, мало практического опыта, поэтому хочу послушать мнение о таком велосипеде у знающих людей. Если что-то не так сказал - пожалуйста, поправляйте.
я бы смотрел в сторону esp32, там I2S реализован, судя по параметрам интерфейса, должно хватить.
Согласно заявленной спецификации, стандарт I²S обладает следующими параметрами
Программно конфигурируемое разрешение 16/32 бит;
Стабильность тактирования: не менее 0,5 %
Возможность работать в режимах ведущего и ведомого;
Я думаю, Вам нужно начать с освоения арифметики. Потому как добрая половина вопросов проистекает из неумения считать.
Например, при частоте дискретизации 48000 и 128 полосах нижняя частота оказывается порядка 400 Гц. Формально это еще “нижние частоты”, но вряд ли то, что Вы ожидаете увидеть от спектранализатора.
Впрочем, чтобы что-то сказать наверняка, нужно видеть схему, а Вы ее забыли привести.
И еще: Гайвер, безусловно, талантливый блогер, но программист - ниже среднего. Поэтому брать его конструкции за основу я бы не стал - лучше взять исключительно идею, а остальное делать самому.
То, что Вы называете “шумами”, принято называть наводкой.
С WiFi одновременно с оцифровкой я дела не имел, а вот с тем, что отображение на экране создает заметную для ADC наводку, столкнулся. Выход - разделять эти два процесса по времени. Насчет внешнего АЦП, мне кажется, идея не очень перспективная. Непонятно, за счет чего уровень помех у него будет ниже.
В качестве примера для ознакомления могу посоветовать посмотреть Конструкция выходного дня: простой спектранализатор 480 полос 60 дБ на stm32f103 и ILI9481 | Аппаратная платформа Arduino
там, правда, не esp, а stm32 на частоте 72 МГц. На мой взгляд по производительности вполне сравнимо.
Теперь на вопросы:
Не знаю, в чем именно Вы предполагаете смысл, но в указанном выше проекте используется 1024 сэмпла.
Арифметика и еще раз арифметика.
В вышеупомянутом проекте максимальная частота дискретизации 143 кГц (прописью: сто сорок три).
Я, если возникает такая потребность, использую MCP3008, но в цитируемом проекте используется встроенный АЦП. И еще: сигнал на АЦП нужно подавать ДО регулятора громкости, а не ПОСЛЕ.
4.1. ОУ желателен, Шоттки - опционально (как вообще можно обсуждать схему, которой нет?).
Тут ничего сказать не могу. Сильно зависит от монтажа.
Да.
Могу отличить звучание разных DAW, звучание форматов MP3 320 кбпс от WAV, отличия звучания одного золочёного USB-кабеля к звуковой карте от другого и использую подложки под провода из красного дерева за дофигиллион долларов…
Шутка. Но всё-таки спектр, который выдает FFT 128 и то, что мы видим, например, в Fruity Parametric EQ2 или FabFilter Pro-Q 3 (даже на низких - “быстрейших” настройках), - кардинально отличаются. Особенно это видно по визуализации низких частот. И более точная визуализация низких частот - это один из ключевых моментов, которых я стремлюсь достичь.
Так можно же интерполировать либо просуммировать (“слить”) несколько выдаваемых FFT значений для одного светодиода, если количество полос не равняется количеству светодиодов
Простите меня тёмного, но можно вопрос?
Я ещё понимаю предъявление таких требований по точности к спектроанализатору, но к подсветке стола!!! Простите нахрена?
Ахаха, ну это можно назвать особым видом эстетики (или аудиофильских извращений…)
Просто в ходе экспериментов со светодиодной лентой я выяснил, что за спектр нижних частот (преимущественно Sub-диапазона) с FFT 128 отвечают 1-2 полосы, и они светятся почти всегда, так как туда попадает ещё куча частот. Хотелось наблюдать “прокат” кика по всему диапазону “low-mid”-“sub”, что есть во многих видео-визуализаторах треков (встречаются на YouTube), также хотелось видеть, как меняется частота басовых нот, а не тупо несколько статично светящихся светодиодов кряду.
https://vk.com/video325179401_456240291
Так выглядит на светодиодной ленте AlexGyver’овский скрипт, использующий FFT 128. Очень жирные полосы, отвечающие за низкие частоты. Масштаб логарифмический.
Потом (слава богу!) доработали до нормального столбчатого, но как хоть какой-нибудь способ визуализации как-никак исключительно цветовая индикация годится.