Обновить

Комментарии 8

У них еще есть датчик выдающий не просто освещенность, а цвет. Пытался на таких сделать упрощенный аналог Амбилайта. Подсветки за монитором в тон изображению на экране. Учитывая что сам Амбилайт хорошо работает в основном только на демо, с датчиками вообще не взлетело...

Мне кажется, что монитор и так уже знает, какой у него там цвет. Для аналога Амбилайта, наверное, эффективнее цвет читать со стороны софта - из фреймбуфера кадра, или с HDMI снимать.

Есть такое адалайт+призматик, но учитывая что изначально берется цвет с края изображения, работает это не на всех изображениях. Чтоб оно работало идеально нужна нейросетка которая будет фантазировать изображение за пределами экрана и с него уже брать цвет. Да и то не факт что фантазии нейросетки и зрительные ожидания всегда совпадут. Технология на уровне побаловаться.

Недавно решал подобную задачу. По инету и по измерению реальной освещенности в моей комнате получается примерно 400 люкс. Например как сегодня с утра, когда Солнце напрямую светит в мои окна, измеренная освещенность в комнате составила 397 люкс. Т.е. достаточно выбрать усиление 1 и время интеграции 100 мС и получится максимум на порядок больше нужного - около 4000 люкс.
Для решения задачи регулировки яркости экрана применять адаптивный алгоритм откровенно избыточно :))
Тем не менее я понимаю, что играть с такими вещами приятно и спасибо, что поделились результатами с нами :)

Подтяжка для шины делается 10 к из соображений, что одна плата будет работать, а несколько не перегрузят выходной каскад ни самой микросхемы, ни процессора.
Я играл с ESP8266 и ESP32 при тестировании 4-х датчиков и отладке своего девайса, в любой комбинации всё работало беспроблемно. У меня 4 датчика на шине I2C, все с резисторами подтяжки 10 к и всё работает отлично в любом сочетании подключенных датчиков.
Конкретно с VEML7700 я пробовал и прямую запитку на контакт 3.3 и подачу 3.3 на контакт Vin - в обоих случаях система работала нормально. Это я искал глюк нестабильной работы BME280 :) Причина глюка была в попадании жидкого флюса в разъем. Промыл спиртом и проблемы исчезли.

Очевидно, что история с подтяжками зависит от емкостных характеристик полевых транзисторов на стороне I²C-контроллера. Видать, реализация в NanoPi не блещет, пока не поставил 1 кОм, сыпало в dmesg таймаутами и перевыборами, а на экранчике всякие чудеса начинались.

Играть с такими вещами не только приятно, но и полезно для мозгов :) А так-то я написал дисклэймер про фоторезистор.

А можно проще.

Известна конструкция в виде делителя напряжения: сверху обычный резистор, снизу фоторезистор, с середины снимаем сигнал на аналоговый вход. Схема хороша всем, кроме непрерывного потребления.

Переносим верх делителя с плюса питания на любую ногу, сконфигурированную в качестве цифрового выхода - и можно питать датчик освещённости не непрерывно, а на несколько десятков миллисекунд каждые несколько секунд.

И поскольку у большинства дисплеев 1602 вход регулировки яркости аналоговый и рассчитан на подключение переменного резистора, можно вспомнить классический способ комбинированной ручно-автоматической регулировки яркости с включением фоторезистора последовательно с переменным резистором. И не задействовать для этого ресурсы вычислительной системы вообще.

http://archive.radio.ru/web/1966/11/034/

Правый верхний угол

Я ни секунды не сомневаюсь, что возможно не задействовать ресурсы вычислительной системы вообще. Даже специально написал дисклэймер про фоторезистор.

Но тогда не было бы ни I²C с питонами, ни разбора адаптивной подстройки, ни статьи в целом. Очевидно же, что регулирование подсветки - демонстрационный сценарий. А статья - базовый кирпичик, который можно положить в фундамент системы любой сложности. Решение с фоторезистором же жестко ограничено единственной функцией и лишено гибкости от слова совсем.

Просто приведу пару примеров:

  • Насколько просто, в случае фоторезистора, сделать сильно нелинейную зависимость освещения-подсветки, с каким-нибудь выстраданным LUT?

  • Как нужно модифицировать схему с фоторезистором, чтобы подсветка начинала мигать, когда на датчике CO₂, подключенном по USB, показания превышают 800 ppm? Но делать это только с 8:00 утра до 23:00 вечера? ;)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации