NovaPixel & IronPulse
NovaPixel NovaPixel
Привет, IronPulse. Я тут что-то новое выдумываю: кинетическая световая скульптура, реагирующая на движение – что-то вроде живой пиксельной сетки. Поможешь с настройкой сенсоров?
IronPulse IronPulse
Конечно, давай начнём с выбора подходящего типа датчика. Для детекции движения можно использовать 9‑DOF IMU или простой PIR, но если нужна точность до сантиметра – рассмотри камеру оптического потока. Главное – правильно настроить порог чувствительности, чтобы срабатывание происходило только при нужном движении, и добавить процедуру анти-дребезга, чтобы избежать помех. Скажи, какое оборудование ты используешь, и я набросаю схему.
NovaPixel NovaPixel
Отлично, я использую недорогой ESP32 со встроенным трехкоординатным акселерометром, и планирую позже добавить туда миниатюрную камеру для оптического потока. Начну с акселерометра, установлю порог, посмотрю, как оно будет работать – если будет слишком много дрожания, подкрутим антидребезг. Спасибо за помощь!
IronPulse IronPulse
Сначала примени простой фильтр нижних частот, например, скользящее среднее в 10 измерений по каждой оси – чтобы убрать высокочастотный шум. Потом установи порог примерно на 0.3g – чуть выше статической наклона, но ниже типичных движений руки. Для антидребезга можно использовать окно в 50 миллисекунд, принимая новый сигнал только если отфильтрованное значение превышает порог в течение всего этого времени. Как только добавишь камеру, переходи на алгоритм оптического потока и позволь ему предоставлять исходную скорость – активация будет гораздо плавнее. Удачи, и не дай сторожевому таймеру ESP32 тебя "убить" – следи за логами перезагрузок.
NovaPixel NovaPixel
Звучит здорово – среднее по 10 образцов должно убрать подергивания, а порог в 0.3г кажется вполне подходящим для обычных движений. Поиграю с временем задержки и понаблюдаю за сторожевым таймером; надеюсь, ESP32 не вырубится. Спасибо за отличный план!
IronPulse IronPulse
Следи и за напряжением, кстати; ESP32 может жрать энергию, когда камера просыпается. Если перезагрузится – проверь развязку питания и добавь небольшой конденсатор на линию 3.3В. Удачи в экспериментах!
NovaPixel NovaPixel
Понял — добавлю конденсатор на 3.3В и буду следить за линиями питания. Спасибо, что предупредил!
IronPulse IronPulse
Отлично, только убедись, что конденсатор не меньше 10 микрофарад, и всё будет в порядке. Расскажи, как с обнаружением движения.
NovaPixel NovaPixel
Акселерометр работает, усреднение по десять измерений убирает дребезг, и порог в 0.3g был пройден без мерцания пикселей. Антидребезг работает, и конденсатор на 10 микрофарад не дает ESP32 глючить, когда камера просыпается. Пока что всё отлично с датчиком движения.
IronPulse IronPulse
Отлично! Теперь, когда датчик движения настроен, пора подключать матрицу пикселей. Начни с простой ленты WS2812b и управляй ей через RMT периферию ESP32 для точной синхронизации. Держи частоту обновления пикселей ниже 60 Гц, чтобы не перегружать UART буфер. Когда подключишь камеру, переходи на фрейм-граббер на базе I2S и подавай выход оптического потока прямо в ту же рутину – просто отобрази векторы потока на цветовую палитру. Код делай модульным: отдельный модуль для датчика, отдельный для светодиодов, отдельный для камеры. Так ты сможешь подкручивать каждый без риска сломать всё. Удачи в сборке!