Подключение датчика освещенности BH1750 к Arduino
В этой статье расскажу о цифровом датчике освещенности BH1750 (GY-30), с помощью которого можно измерять интенсивность света сразу в люксах.
Технические параметры:
► Функция спящего режима: есть;
► Фильтрация световых шумов: 50/60 Гц;
► Рабочее напряжение питания: 3.3 — 5 В;
► Ток потребления: 120 мкА;
► Ток потребления в спящем режиме: 0.01 мкА;
► Чувствительность: 65536 градаций;
► Точность в режиме высокого разрешения: 1 Лк;
► Точность в режиме низкого разрешения: 4 Лк;
► Период измерения в режиме высокого разрешения: 120 мс;
► Период измерения в режиме низкого разрешения: 16 мс;
► Встроенный АЦП;
► Шина данных: I2C;
► Габариты: 18 х 14 х 2 мм;
► Вес: 5 грамм.
Общие сведенья
Основная микросхема модуля GY-30 — это датчик H1750FVI (производится компанией ROHM semiconductor) со встроенным 16-разрядным аналого-цифровой преобразователем, который может выдавать цифровой сигнал сразу в люксах в отличие от фотодиодов и других датчиков. Связь с микроконтроллером осуществляется с помощью интерфейса I2C, по умолчанию адрес устройства 0x23, но его можно изменить на 0x5С, для этого необходимо вывод AD0 подтянуть к питанию.
Датчик BH1750 способен измерять освещенность в двух режимах: непрерывном и однократном. В непрерывном режиме датчик непрерывно измеряет интенсивность света, а во втором режиме измерение осуществляется один раз и датчик выключается. Так же, можно выбрать чувствительность измерение для обоих режимов. Самое низкое разрешение 4 люкса, измеряется примерно за 16 миллисекунд, далее 1 люкса измеряется за 120 миллисекунд, а самое высокое разрешение 0.5 люкса измеряется за 120 миллисекунд.
Назначение контактов:
► GND, VCC — Питание модуля 3.3 … 5 В;
► AD0 — Выбор адреса модуля на шине I2C, выход притянут к массе и адрес модуля 0x23, если на AD0 подать логическую единицу, адрес будет 0X5C.
► SDA, SCL — Выходы интерфейса I2C
Подключение датчика освещенности H1750FVI к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Датчик освещенности BH1750FVI, GY-30 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Описание:
В примере покажу, как подключить датчик освещенности BH1750FVI к Arduino UNO R3, так же покажу пример программы и потестируем датчик в различных условиях, все показания будем передавать в мониторинг порта.
Подключение:
Первым делом, необходимо подключить датчик BH1750FVI к Arduino UNO. Так как модуль работает по I2C, нам понадобится всего четыре провода, вывод AD0 не используем. Сначала подключаем интерфейс I2C, выводы A4 и A5 (Arduino UNO) подключаем к выводам SDA и SCL (BH1750FVI), далее подключаем питание питание GND к GND и VIN к 5V, схема собрана, теперь надо подготовить программную часть.
Установка библиотеки:
Существует много библиотек, для работы датчиком BH1750FVI, но проще всего использовать библиотеку BH1750, скачать ее можно через менеджера библиотек. Переходим в Скетч —> Подключить библиотеку —> Управление библиотеками.
В строке поиска введите «BH1750», найдите библиотеку «BH1750 by Christopher Laws» жмем установить.
Программа:
Схема и библиотека установлена, можно приступить к программой части. Открываем среду разработки Arduino IDE и копируем скетч ниже и загружаем его в Arduino UNO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <BH1750.h> // Подключаем библиотеку BH1750 #include <Wire.h> // Подключаем библиотеку Wire BH1750 lightMeter; // Создаем объект lightMeter void setup() { Serial.begin(9600); // Открываем последовательную связь на скорости 9600 Wire.begin(); // Инициализация библиотеки Wire lightMeter.begin(); // Инициализация библиотеки BH1750 Serial.println(F("BH1750 Test begin")); // Тестируем BH1750 } void loop() { float lux = lightMeter.readLightLevel(); // Создаем переменную lux и считываем показания Serial.print("Light: "); // Отправка текста Serial.print(lux); // Отправка освещенности Serial.println(" lx"); // Отправка текста delay(1000); // Пауза 1 с } |
Теперь открываем мониторинг порта и проводим фонариком по датчику и видим как изменятся показания.
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Датчик освещенности BH1750FVI, GY-30