• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 + BH1750 засыпают показания датчика

Доброго времени суток. Приходится по-быстрому и рывками осваивать работу с ESP. Сейчас одна из задач создать/настроить измеритель яркости, тоесть типа люксометр. По идее для этого используется BH1750. Но у меня с одной библиотекой (bh1750) вообще постоянно пишет, мол датчик не сконфигурирован. А если подключаю библиотеку BH1750-HD, то из примера начинает работать. Реагирует на изменение яркости. Но где-то через пол минуты - минуту типа засыпает и показывает одно и тоже значение, на котором в тот момент был. Не важно высокие показания люкс или низкие. И потом хоть как меняй освещение, он не реагирует никак. Нужно либо отрубать кабель, либо перезаливать скетч. Скетч самый простой из примера:

Код:
/*

  Example of BH1750 library usage.

  This example initalises the BH1750 object using the default
  high resolution mode and then makes a light level reading every second.

  Connection:

    VCC -> 5V (3V3 on Arduino Due, Zero, MKR1000, etc)
    GND -> GND
    SCL -> SCL (A5 on Arduino Uno, Leonardo, etc or 21 on Mega and Due)
    SDA -> SDA (A4 on Arduino Uno, Leonardo, etc or 20 on Mega and Due)
    ADD -> (not connected) or GND

  ADD pin uses to set sensor I2C address. If it has voltage greater or equal to
  0.7VCC voltage (as example, you've connected it to VCC) - sensor address will be
  0x5C. In other case (if ADD voltage less than 0.7 * VCC) - sensor address will
  be 0x23 (by default).

*/

#include <Wire.h>
#include <BH1750-HD.h>

BH1750 lightMeter;

void setup(){

  Serial.begin(9600);
  lightMeter.begin();
  Serial.println("BH1750 Test");

}


void loop() {

  uint16_t lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);

}

Привел пример полностью, с родными пояснениями. Вроде по подключению все просто. Хотя пробовал менять 3,3в на 5в, ничего не меняется.
Это так и должно быть или я что-то делаю не так?
 
Попробуйте эту
Работает. Правда настроек/значений много. Нужно разбираться.
Нашел в ардуино.иде одну библиотеку BH1750, но уже большими буквами, не как на гитхабе маленькими во вчерашнем примере. И пример из неё тоже работает. Но тут уже с данными попроще. Нет всех этих плюс/минус и прочих настроек. Кстати, как вообще понять, какие показания нужны: более продвинутые, как в предложенной вами библиотеке, или достаточно стандартной? Профессиональные люксометры какие цифры дают? Или это лучше уточнять в отдельной теме?
 

pvvx

Активный участник сообщества
Работает. Правда настроек/значений много. Нужно разбираться.
Нашел в ардуино.иде одну библиотеку BH1750, но уже большими буквами, не как на гитхабе маленькими во вчерашнем примере. И пример из неё тоже работает. Но тут уже с данными попроще. Нет всех этих плюс/минус и прочих настроек. Кстати, как вообще понять, какие показания нужны: более продвинутые, как в предложенной вами библиотеке, или достаточно стандартной? Профессиональные люксометры какие цифры дают? Или это лучше уточнять в отдельной теме?
У данных датчиков низкая чувствительность.
Проверить можно так: вывести на экран 256 градаций серого и опустить яркость (контрастность) до различимого глазом градаций уровней и пробовать измерить этим датчиком :)
Можно и 4 градации - всё равно этот датчик не справится.

Типичный монитор выдает примерно 400 lux на макс яркости и имеет мульон цветов, что является градациями уровня...
 

enjoynering

Well-known member
Кривое описание:
  • Default range: 1 - 65'535 lux
Как из значения 16 битного регистра деленного на 1.2 получить число 65535?
Только у enjoynering такое бывает?
Вы опять не разобрались. Можно, но точность вас не порадует. Ставим матовый фильтр перед сенсором с известной пропускной способностью от 0.45 до 3.86. В библиотеке меняем значение sensitivit и вуааля.

На первой странице datasheet, пункт четыре - wide range (1 - 65535lx)
 

pvvx

Активный участник сообщества
На первой странице datasheet, пункт четыре - wide range (1 - 65535lx)
Кто-то ошибся, а вы повторяете с добавкой - Default , что не обеспечивает ваша либа.
Тогда исправляете в своем коде 1.2 на 1.0 :p
При 65535lx данный сенсор уходит в ограничение, т.е. ещё ранее.
 

pvvx

Активный участник сообщества
Если с внешними фильтрами, то можно написать на первой странице PDF что он работает до мульона lx. И расписать не данные по чипу, а о светофильтрах...
1-65535 дискретных уровней образовалось от единиц 16 битного ADC, а не от lx.
 

pvvx

Активный участник сообщества
Вы опять не разобрались. Можно, но точность вас не порадует. Ставим матовый фильтр перед сенсором с известной пропускной способностью от 0.45 до 3.86. В библиотеке меняем значение sensitivit и вуааля.

На первой странице datasheet, пункт четыре - wide range (1 - 65535lx)
Ещё походу вы не прочитали документацию.
Настройка выполняется путем изменения времени измерения в регистре MTreg.
А по умолчанию, по вашему "Default", там используется указанное в PDF значение, изменяющее "wide range" в lx.
Вам и задали вопрос примерно в эту тему, но не писать же за вас. Для этого и указал, чтобы исправили - детям надо знать сколько оно кажет в lx без калибровок и стеклышек :p
 
У данных датчиков низкая чувствительность
А какой датчик посоветуете?
Вам и задали вопрос примерно в эту тему, но не писать же за вас. Для этого и указал, чтобы исправили - детям надо знать сколько оно кажет в lx без калибровок и стеклышек :p
Заявляю как ребенок ))) Не все понял, что вы написали, но чувствую, что это то, что я хотел сказать ))))
 

pvvx

Активный участник сообщества
А какой датчик посоветуете?
У меня пока не было нужды в точном измерении светового потока.
Для домашней автоматизации включать или нет свет при входе дома и т.д. в зависимости от освещения солнышка, данные датчики вполне достаточны. Но не для каких-то измерений.
И всегда проще использовать какой готовый - на текущий момент уже более года на улице и загородном участке работают CGPR1. Но у некоторых из них обнаружилась беда - при большой влажности и больших перепадах температур, спустя год работы некоторые стали глючить. Причина в плохой промывке печатной платы производителем...
По этой причине решил заменить на что-то более надежное. А выбор невелик - впихать в дешевые китайские лампы c солнечной панелью, акб и датчиками чип BLE, или делать полностью свой.
Эти китайские фонарики не могут обеспечивать нормального освещения, но четко годятся как автономные датчики c автоподзарядкой от всторенной или внешней солнечной панели и у них в корпусе есть куча места, чтобы прилепить чип с BLE, который совершенно не скажется на потреблении встроенного акб. И там уже всё есть - датчик движения, датчик освещенности, солнечная панель и акб, с которых можно транслировать в систему все параметры необходимые для включения прожекторов и прочего внешнего освещения...

А для целей измерения и на самом начальном уровне нужно что-то получше...
 

pvvx

Активный участник сообщества
В любом смартфоне есть практически аналогичный датчик освещения. Достаточно поставить тупенькую программу Light Meter или подобную и "измерять", а не паять какие-то устаревшие чипы и копаться в либах любителей извращений...
 
В любом смартфоне есть практически аналогичный датчик освещения. Достаточно поставить тупенькую программу Light Meter или подобную и "измерять", а не паять какие-то устаревшие чипы и копаться в либах любителей извращений...
Показания сильно отличаются от проф люксометров. А они дорогие. Но в любом случае я точно не смогу к ним подключиться и списывать то, что мне нужно. Может и есть способ, но моих знаний не хватает. Вот и надеюсь на уже готовый датчик, чтобы на его основе реализовать то, что мне нужно.
А выбор невелик - впихать в дешевые китайские лампы c солнечной панелью, акб и датчиками чип BLE, или делать полностью свой.
Эти китайские фонарики не могут обеспечивать нормального освещения, но четко годятся как автономные датчики c автоподзарядкой от всторенной или внешней солнечной панели и у них в корпусе есть куча места, чтобы прилепить чип с BLE, который совершенно не скажется на потреблении встроенного акб. И там уже всё есть - датчик движения, датчик освещенности, солнечная панель и акб, с которых можно транслировать в систему все параметры необходимые для включения прожекторов и прочего внешнего освещения...
Есть подобная идея, но я совершенно не разбираюсь, что куда там подключить и как прошивать под свои задачи. Тот же датчик движения у них используется HR501. Но настроен как попало. Нужно постоянно дергаться, чтобы лампа светила. Для меня проще в их корпус впихнуть те же датчики, добавить и настроить под себя. Правда пока до полной реализаци такой лампы не дошло, хотя куплено все или почти все. Не могу пока решить вопрос с зарядкой. В тех, что я видел всего один акб, и его на долго не хватает. Хотелось бы два акб, но нужно ставить бмс для их зарядки. Пока не определился что и как покупать и соединять. Но это отдельная тема, которая измерения яркости света не касается.
 

pvvx

Активный участник сообщества
1673099670475.png
и данный датчик (установки по умолчанию), рядом в 10 мм и направленный примерно так-же, всё вдали от лампы, чтобы световой поток был одинаков
1673099780379.png
Измерено с помощью тупого теста по ссылке https://github.com/pvvx/UBIA/blob/master/WebBluetooth/testBH1750.html
 

pvvx

Активный участник сообщества
Из дешевых были проверены погодой на -25С такие варианты:
Имеют кривые АКБ, конкретно - как попадется. Одни пашут и заражаются отлично, другие - фиг вам. Меняете АКБ и делаете тест на потребление в режиме ожидания.
У нормальных ток там от АКБ в режиме ожидания менее 1 мкА!
 

pvvx

Активный участник сообщества
Добавление в них чипа BLE увеличит ток до 5..6 мкА. Для их АКБ это никак не скажется.
А такие светильники на дачах удобно использовать во внешнем туалете и нигде более :)
 

pvvx

Активный участник сообщества
Показания сильно отличаются от проф люксометров. А они дорогие. Но в любом случае я точно не смогу к ним подключиться и списывать то, что мне нужно. Может и есть способ, но моих знаний не хватает. Вот и надеюсь на уже готовый датчик, чтобы на его основе реализовать то, что мне нужно.
Для поиска дешевого - наверно сюда, но тестов ещё нет - только недавно заказаны.
А если с китай-светильниками что-то выйдет, то скину все исходники на github. Подразумевается работа с HomeAssistant как датчика движения и освещения.
 
Для поиска дешевого - наверно сюда, но тестов ещё нет - только недавно заказаны.
Так тут же речь идет не про датчик яркости, а про датчик определения цвета. Или вы имели ввиду продавца? Кстати, если продавца, то у них, именно у этого же продавца на таобао цена на тот же AS7343 цена на треть меньше. Он мне сам дал ссылку на их страницу на таобао с этими датчиками.
А такие светильники на дачах удобно использовать во внешнем туалете и нигде более :)
В их исполнении наверное да. Но есть желание сильно переделать. Главное, что от них нужно - корпус с дырками под датчик и солнечная панелька.
 

pvvx

Активный участник сообщества
Так тут же речь идет не про датчик яркости, а про датчик определения цвета. Или вы имели ввиду продавца? Кстати, если продавца, то у них, именно у этого же продавца на таобао цена на тот же AS7343 цена на треть меньше. Он мне сам дал ссылку на их страницу на таобао с этими датчиками.

В их исполнении наверное да. Но есть желание сильно переделать. Главное, что от них нужно - корпус с дырками под датчик и солнечная панелька.
У меня такая ныне интенсивность солнечного света:
1673105102028.png
Т.е. в некоторые дни менее чем светит монитор, а уже световой день сильно увеличился.
Такого для заряда от солнечной батареи не хватит ни на что, кроме запитки BLE или ZigBee чипа.

CGPR1 с графика показывает 132 lx при тесте в удалении от лампы, а смартфон в Light Meter - 125 lx.
По этому для измерений такие датчики не годятся, хотя показывают разницу освещенности у типовых лед-ламп от малых изменений напряжения в сети.
При этом каждый замер показания разнятся - нет идентичности - много зависимостей от температуры и т.д.
Т.е. какие-то дифференциальные измерения возможны, но не абсолютные.
 

pvvx

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