|
Новичок
Регистрация: 23.06.2014
Сообщений: 23
Репутация: 28
![]() |
CMU "MUSICCOLOR" прошивка
MUSICCOLOR — это профессиональная музыкальная светомузыка на базе STM32
• 15 высококачественных визуальных эффектов • Реактивный анализатор спектра с продвинутым AGC и шумоподавлением • Поддержка 5 и 10 зон эквалайзера • Статические и динамические палитры с премиум-цветами • Профессиональный эффект CHASER III с 4 паттернами: — Classic — Larson Scanner — Multi-Wave — Ping-Pong Особенности: • Управление через энкодер + OLED-дисплей 128×64 • Bluetooth управление (Android/iOS приложение) • Сохранение всех настроек и параметров эффектов во внешнюю Flash-память • Автоматическая калибровка микрофона • Демо-режим • Поддержка до 300 адресных светодиодов WS2812B |
||
|
Новичок
Регистрация: 23.06.2014
Сообщений: 23
Репутация: 28
![]() |
CMU"MUSICCOLOR" + микрофон INMP441
Замена аналогового микрофона на цифровой ! Переход SAMPLES с 128 на 256. Изменены пины подключения
микрофон #define I2S_WS_PIN PA2 #define I2S_SCK_PIN PA3 #define I2S_SD_PIN PA0 #define BOARD_LED PC13 энкодер #define ENC_A PB8 #define ENC_B PB9 #define ENC_SW PB10 лента #define LED_PIN PA1 флешка #define W25Q_CS_PIN PA4 остальное все стандартно. Все для новой прошивки . Еще дам тестовый скетч для подключения INMP441 , еще та зараза! #include <Arduino.h> #define I2S_SCK_PIN PB13 #define I2S_WS_PIN PB12 #define I2S_SD_PIN PB15 #define LED_PIN PC13 float currentGain = 2.5f; void setup() { delay(1500); Serial.begin(115200); pinMode(I2S_SCK_PIN, OUTPUT); pinMode(I2S_WS_PIN, OUTPUT); pinMode(I2S_SD_PIN, INPUT); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH); Serial.println(">>> INMP441 DIAGNOSTIC v3 - Aggressive Mode <<<"); } int32_t readINMP441() { int32_t val = 0; digitalWrite(I2S_WS_PIN, LOW); delayMicroseconds(3); for (int i = 0; i < 32; i++) { digitalWrite(I2S_SCK_PIN, HIGH); delayMicroseconds(1); if (i < 24) { val <<= 1; if (digitalRead(I2S_SD_PIN)) val |= 1; } digitalWrite(I2S_SCK_PIN, LOW); delayMicroseconds(1); } digitalWrite(I2S_WS_PIN, HIGH); for (int i = 0; i < 32; i++) { digitalWrite(I2S_SCK_PIN, HIGH); delayMicroseconds(1); digitalWrite(I2S_SCK_PIN, LOW); delayMicroseconds(1); } val >>= 8; if (val & 0x800000) val |= 0xFF000000; return val; } void loop() { long sumAbs = 0; int32_t maxAbs = 0; for (int i = 0; i < 40; i++) { int32_t sample = readINMP441(); int32_t absVal = abs(sample); sumAbs += absVal; if (absVal > maxAbs) maxAbs = absVal; } float avgAbs = (float)sumAbs / 40.0f; float level = avgAbs * currentGain; // === Управление LED === if (level > 800) { // очень низкий порог для теста digitalWrite(LED_PIN, LOW); // LED ON int flash = map(level, 800, 40000, 600, 12000); flash = constrain(flash, 400, 15000); delayMicroseconds(flash); digitalWrite(LED_PIN, HIGH); // LED OFF } else { digitalWrite(LED_PIN, HIGH); } // Вывод каждые 80 мс static uint32_t last = 0; if (millis() - last > 80) { Serial.print("AvgAbs: "); Serial.print((int)avgAbs); Serial.print(" | Gain: "); Serial.print(currentGain, 2); Serial.print(" | Level: "); Serial.print((int)level); if (level > 800) Serial.print(" ← LED should blink"); Serial.println(); last = millis(); } delayMicroseconds(150); } |
||
|
Новичок
Регистрация: 23.06.2014
Сообщений: 23
Репутация: 28
![]() |
CMU "MUSICCOLOR" с железом все... С железом закончил. Описание CPU STM32F411CE ,Микрофон INMP441 (I2S + DMA). Анализ звука FFT 256 точек. Hamming window. Эффекты 15 полноценных эффектов. 5 или 10 независимых частотных (для 300 диодов) зон. Управление: Поворотный энкодер + кнопка + Bluetooth. Память 25L1605D Flash — сохранение настроек и пресетов эффектов. Дисплей Цветной TFT 320×240, ID 0X7575 8347D(от старинного, китайского айфона 4G) Дополнительно Автокалибровка шума, BPM-детекция, Randomizer, Ambient-подсветка, Эквалайзер 5 зон, Индикация уровня 5-10 зон на заставке, Меню — 26 параметров Технические особенности Оптимизировано под STM32 (DMA, аппаратный энкодер TIM2, прямые регистры) Высокая производительность — стабильные ~30–45 FPS Умная обработка звука: AGC (автоматическая регулировка усиления) Адаптивный шумодав Частотные профили (Balanced, Bass Heavy и др.) Гамма-коррекция и анти-алиасинг и еще много всего... Изменения в настройке пинов: Дисплей RD_PIN PA8 WR_PIN PA9 CD_PIN PA10 CS_PIN PA11 RESET_PIN PA12 D0 -> PB0 D1 -> PB1 D2 -> PB2 D3 -> PB4 D4 -> PB6 D5 -> PB7 D6 -> PB8 D7 -> PB9 ws2812b через 100Ом PA15 25L1605D Flash CS_PIN PA4 на борту платы STM32F411CE Энкодер любой ENC_A PA0 ENC_B PA1 ENC_SW PB10 BOARD_LED через 300ОМ PC13 индикация микрофона. Микрофон I2S_WS_PIN PB12 // LRCK I2S_SCK_PIN PB13 // BCK I2S_SD_PIN PB15 // DATA Влютуз BT-04a аппаратный- Serial2 сборка проекта занимает максимум 2 часа Демо ролики... |
||
|
Знаток
Регистрация: 06.01.2010
Адрес: Львов
Сообщений: 299
Репутация: 176
![]() ![]() |
Очень интересный проект!
Жаль, что закрытый. Было б интересно обсудить общие принципы - не FFT, не вывод на ленту через DMA, и не прочие нюансы, а именно принципы, как извлечь из музыки максимум информации для управления светом. Имеется в виду не только амплитуда и мгновенная частота в каждом канале, но и динамика изменения амплитуды в каналах, динамика изменения соотношения частотных составляющих спектра, анализ изменений ритма, и всякие прочие вещи, которые можно было бы придумать. Мне кажется, подобное обсуждение было бы интересным и полезным. Однако при всём этом я понимаю и сложность - это такая область, где сложно описать словами идеи по обработке. И к тому же желательно сразу пробовать новые идеи "в железе", что подразумевает уже ведущуюся работу над проектом, а у меня всё никак не получается за это взяться - мелкая рутина затягивает. В целом мне кажется, что совместными усилиями, обсуждая общие принципы, можно ещё дальше развить этот проект или ему подобные. |
||
|
Новичок
Регистрация: 23.06.2014
Сообщений: 23
Репутация: 28
![]() |
Цитата:
|
||
|
Новичок
Регистрация: 23.06.2014
Сообщений: 23
Репутация: 28
![]() |
Продолжаем улучшать CMU все переработано , модернизирован код, для стабильной и простой настройки ЦМУ переведен на аналоговый микрофон. Качество не упало , снизилась нагрузка на ЦПУ на 20 %!(непонятно...). Добавлено влияние цифры на многие эффекты, цифровая стабилизация уровней каналов. Огромно, визуально поднялся эффект смотрибельности ! Проверено на делении ленты на 5-10 частей (фонарями)и параллельного добавления 2-4 лент. Очень смотрибельно на плафонах широких светильников. Неделю улучшений нет. Финал будет в следующую пятницу-воскресенье.
|
||
| Обратная связь РадиоЛоцман Вверх |