Датчик освещённости BH1750 с QIIC

Освещенность — световая величина, равная отношению светового потока, падающего на малый участок поверхности, к его площади. Измеряется освещённость в люксах, а прибор, который измеряет освещенность называют люксметром.

Люксметр применяется в телевизорах, смартфонах, фотоаппаратах, везде, где имеет место цветокоррекция изображений или управление яркостью матрицы. Взять хотя бы тот же смартфон: если вокруг темно — яркость дисплея снижается практически до минимума, чтобы не слепить глаза.

В повседневной жизни люксметр, используется для проверки норм освещенности на рабочем месте или в помещении. Чтобы человек комфортно себя чувствовал и эффективно работал, уровень освещенности должен быть достаточным — мы ведь не кроты. А ещё, освещенность является важным фактором роста для растений, поэтому люксметр неотъемлемая часть любой автоматической теплицы.

На этом уроке мы будем экспериментировать с модулем датчика освещенности RobotClass BH1750. Из за своей низкой стоимости этот датчик очень распространён среди DIY-энтузиастов. Кроме самого датчика, на модуле расположены два разъёма шины QIIC, для совместимости с другими модулями и контроллерами от RobotClass.

Датчик освещенности BH1750 RobotClass

Из важных характеристик BH1750 отметим:

  • диапазон измерений: от 0,11 люкс до 100 000 люкс;
  • поддержка шины I2C/QIIC;
  • чувствителен к спектру, близкому к спектру человеческого глаза;
  • 16-разрядный АЦП;
  • напряжение питания: 3,3 В;
  • низкое энергопотребление:
  • фильтрация шума 50-60 Гц.

Список необходимых компонентов

Для выполнения всех экспериментов в данном уроке, кроме самого датчика BH1750 от RobotClass, потребуются: отладочная плата Графит-32S или аналогичная на основе ESP32, переходник и кабель для шины QIIC, а также немного проводов розетка-розетка. Необходимые компоненты можно добавить в корзину прямо здесь, и затем оформить заказ в нашем интернет-магазине.

В корзину
В корзину
В корзину
В корзину
В корзину

Теперь подключим модуль к плате Графит-32S и попробуем получить из него данные.

Подключение

Датчик BH1750 работает с напряжением 3.3 Вольта, а значит мы должны подключать его к контроллеру с такими же уровнями, либо использовать преобразователь уровней. В этом уроке мы используем отладочную плату Графит-32S (подойдет также любой Node-MCU).

Подключаем датчик к плате Графит-32S по стандартной схеме для I2C интерфейса:

Графит-32SGnd3.3SDA/23SCL/22
BH1750GVCCSDASCL

Адрес I2C

По умолчанию, датчик имеет адрес 0x23. Чтобы сменить его на альтернативный — 0x5C, необходимо соединить перемычку ADR на лицевой стороне платы.

Подтяжка I2C

Для правильной работы шины I2C необходимо, чтобы линии SDA и SCL были подтянуты к питанию с помощью резистора соответствующего номинала. Эту подтяжку нужно сделать всего один раз на всей линии I2C.

На лицевой стороне платы имеется тройная перемычка I2C-PU. Её необходимо полностью соединить для обеспечения подтяжки шины I2C.

Программа

Для работы с датчиком используем подходящую библиотеку, ссылка на которую есть в конце урока. Откроем готовый пример программы под названием BH1750test, которая выводит показания датчика в последовательный порт.

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

BH1750 lightMeter;

void setup() {
  Serial.begin(9600);

  Wire.begin();
 // инициализация шины I2C

  lightMeter.begin(); // инициализация датчика


  Serial.println(F("BH1750 Test begin"));
}

void loop() {
  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);
}

Загружаем программу на отладочную плату и открываем монитор COM-порта. Должен получиться примерно такой вывод:

Данные датчика BH1750

Полезные ссылки

Библиотека для работы с BH1750:

https://github.com/claws/BH1750

Спецификация производителя:

https://download.robotclass.ru/spec/bh1750fvi.pdf


Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.