Оглавление
- Датчик освещенности BH1750FVI
- Developers
- Сравнение BH1750 и TSL2561
- Developers
- Объяснение программы для Arduino
- How to measure the quality of lighting?
- Подключение BH1750 к Arduino
- 4Взаимодействие с сенсором BH1750 в деталях
- Программирование люксметра
- setResolutionTyp(), setResolutionMin(), setResolutionMax()
- Обзор
- Купить Датчик освещенности GY-30 BH1750FVI в Хабаровске Robstore.ru
- Overview
Датчик освещенности BH1750FVI
Датчик освещенности BH1750FVI модуль для ARDUINO, Датчик изменения света, Купить GY-30 Цифровой оптический датчик освещенности BH1750FVI Высокочувствительный для Arduino
Виды датчиков:
bh1750 купить
Это цифровой датчик окружающего (рассеянного) света.Датчик общается с микроконтроллером по I2С протоколу. Этот датчик хорошо подходит для регулирования подсведки ЖК (TFT, LCD) в зависимости от освещенности окружающего пространства. Датчик обладает чувствительностью от 1 до 65535 люкс (16 бит).
Датчик типа BH11750FVI – один из самых распространенных в современной электронике и электротехнике.
Малый размер датчика делает его незаменимым в современной бытовой электронике: помните функцию вашего смартфона автоматически увеличивать яркость экрана на солнце? Он «умеет» это именно благодаря датчику BH11750FVI или его аналогам.
В качестве чувствительного элемента датчика BH11750FVI выступает фотодиод (bh1750), приемник оптического излучения, который улавливает свет и преобразует его в электрический сигнал.
В зависимости от световой активности (датчик работоспособен в пределах от 1 до 65000 Люкс) изменяется выходной токовой сигнал на микроконтроллер, который и регулирует уровень подсветки дисплея.
С помощью фотодатчика типа BH11750FVI, включенного в САР (система автоматического регулирования), можно контролировать, например, уровень жидких и сыпучих продуктов в светопроницаемых емкостях. Датчик устанавливается напротив источника света и улавливает его фотоны. Как только уровень продукта перекрывает световой поток, система автоматически включает сигнализацию максимального уровня и прекращает подачу продукта.
Использование схемы на основе датчика bh1750 также возможно и в тепличном хозяйстве, когда необходимо круглосуточное поддержание оптимального светового режима. САР в этом случае настраивается таким образом, что по мере уменьшения естественного освещения пропорционально увеличивается мощность ламп искусственного света.
bh1750 купить
Подробное техническое описание во вложенном файле ниже:
Developers
The following information is for developers of this library.
Code Format
The code in this project is formatted using tool.
Once the tool has been install you can then run the
convenience script () to check or apply the code
formatting. The script should be run from the repo’s top level directory.
$ ./ci/code-format.bash
This script is also run as part of the project’s continuous integration
checks.
If you make changes to code files then the code format can be applied
by simply passing apply as an argument to the script.
$ ./ci/code-format.bash apply
Code Linting
To run the linter over the project use the command below.
$ arduino-lint --library-manager update --compliance strict
The same command is run as part of the project’s continuous integration
checks.
If errors or warnings are reported then fix them and re-run the script
until they are resolved.
Build Locally
The code in this project can be built locally using the tool.
The tool can be installed using the instructions . Once you have the tool installed you can compile the
examples scripts using the convenience script ().
$ ./ci/compile-examples.bash
This script performs the same actions as the project’s continuous integration
compile checks.
Release Process
- Update and version strings.
- Create a new project release and use the new version number as tag. Click Publish.
- Now wait about an hour for it to appear in the Arduino library manager.
Сравнение BH1750 и TSL2561
Спектр видимого света колеблется от 380 нм (фиолетовый) до 780 нм (красный) (в вакууме). Короче говоря, BH1750 просто измеряет это. TSL2561, помимо видимого спектра, также измеряет инфракрасное излучение. Он имеет два диода, один для видимого, а второй для инфракрасного. На мой взгляд, BH1750 соответствует большинству требований, тогда как TSL2561 предлагает более широкий спектр, большую чувствительность и большую точность.
Для сравнения, оба датчика были размещены параллельно в макете, один рядом с другим. Таким образом, можно получить практически одинаковое излучение на оба датчика.
Более подробно о том, как работать с TSL2561 в Ардуино, можете найти в отдельной статье Подключение цифрового датчика освещенности TSL2561 к Arduino.
На следующем рисунке показана схема подключения датчиков внешней освещенности TSL2561 и BH1750 к Arduino UNO.
Пример скетча
#include <Wire.h>
#include <BH1750.h>
#include <Adafruit_TSL2561_U.h>
BH1750 bh1750;
Adafruit_TSL2561_Unified tsl2561 = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);
void setup() {
Serial.begin(9600);
Wire.begin();
/*
TSL2561
*/
if (!tsl2561.begin()) {
Serial.print(F(«При обнаружении TSL2561 возникла проблема … проверьте подключение!»));
while (1);
}
tsl2561.setGain(TSL2561_GAIN_1X);
tsl2561.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS);
/*
BH1750
*/
bh1750.begin(BH1750::ONE_TIME_HIGH_RES_MODE);
Serial.println(F(«BH1750 vs TSL2561»));
}
void loop() {
/*
Считываем показания с TSL2561
*/
sensors_event_t event;
tsl2561.getEvent(&event);
/*
Считываем показания с BH1750
*/
float lux = bh1750.readLightLevel();
/*
Отправляем значение освещенности в последовательный порт
*/
if (event.light) {
Serial.print(F(«TSL2561: «));
Serial.print(event.light);
Serial.println(F(» lx»));
} else {
/*
Если event.light = 0 люкса датчик, вероятно, насыщенные
и достоверные данные не может быть сгенерированы!
*/
Serial.println(F(«Насыщенные TSL2561»));
}
Serial.print(F(«BH1750 : «));
Serial.print(lux);
Serial.println(F(» lx»));
delay(1000);
}
1 |
#include <Wire.h> BH1750bh1750; Adafruit_TSL2561_Unifiedtsl2561=Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT,12345); voidsetup(){ Serial.begin(9600); Wire.begin(); /* TSL2561 if(!tsl2561.begin()){ Serial.print(F(«При обнаружении TSL2561 возникла проблема … проверьте подключение!»)); while(1); } tsl2561.setGain(TSL2561_GAIN_1X); tsl2561.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* BH1750 bh1750.begin(BH1750::ONE_TIME_HIGH_RES_MODE); Serial.println(F(«BH1750 vs TSL2561»)); } voidloop(){ /* Считываем показания с TSL2561 sensors_event_tevent; tsl2561.getEvent(&event); /* Считываем показания с BH1750 floatlux=bh1750.readLightLevel(); /* Отправляем значение освещенности в последовательный порт if(event.light){ Serial.print(F(«TSL2561: «)); Serial.print(event.light); Serial.println(F(» lx»)); }else{ /* Если event.light = 0 люкса датчик, вероятно, насыщенные Serial.println(F(«Насыщенные TSL2561»)); } Serial.print(F(«BH1750 : «)); Serial.print(lux); Serial.println(F(» lx»)); delay(1000); } |
Результат
По результатам TSL2561 и BH1750 дают практически идентичные показатели в одинаковых условиях. Это говорит о том, что сами датчики идут откалиброванными с завода.
Developers
The following information is for developers of this library.
Code Format
The code in this project is formatted using tool.
Once the tool has been install you can then run the
convenience script () to check or apply the code
formatting. The script should be run from the repo’s top level directory.
$ ./ci/code-format.bash
This script is also run as part of the project’s continuous integration
checks.
If you make changes to code files then the code format can be applied
by simply passing apply as an argument to the script.
$ ./ci/code-format.bash apply
Code Linting
To run the linter over the project use the command below.
$ arduino-lint --library-manager update --compliance strict
The same command is run as part of the project’s continuous integration
checks.
If errors or warnings are reported then fix them and re-run the script
until they are resolved.
Build Locally
The code in this project can be built locally using the tool.
The tool can be installed using the instructions . Once you have the tool installed you can compile the
examples scripts using the convenience script ().
$ ./ci/compile-examples.bash
This script performs the same actions as the project’s continuous integration
compile checks.
Release Process
- Update and version strings.
- Create a new project release and use the new version number as tag. Click Publish.
- Now wait about an hour for it to appear in the Arduino library manager.
Объяснение программы для Arduino
Программа для взаимодействия платы Arduino с датчиком освещенности BH1750 достаточно проста. В этом проекте мы для взаимодействия с датчиком BH1750 использовали специальную библиотеку, но можно было бы обойтись и без нее. Полный текст программы приведен в конце статьи, здесь же мы кратко рассмотрим ее основные фрагменты.
Первым делом в программе мы подключим библиотеки для работы с протоколом I2C и ЖК дисплеем.
Arduino
#include<Wire.h>
#include<LiquidCrystal.h>
1 |
#include<Wire.h> #include<LiquidCrystal.h> |
В функции setup мы инициализируем датчик BH1750 и ЖК дисплей, а также напечатаем приветственное сообщение на экране ЖК дисплея.
Arduino
void setup()
{
Wire.begin();
lcd.begin(16,2);
lcd.print(» BH1750 Light «);
lcd.setCursor(0,1);
lcd.print(«Intensity Sensor»);
delay(2000);
}
1 |
voidsetup() { Wire.begin(); lcd.begin(16,2); lcd.print(» BH1750 Light «); lcd.setCursor(,1); lcd.print(«Intensity Sensor»); delay(2000); } |
Также мы запрограммируем две функции – BH1750_Read (для считывания значения освещенности) и BH1750_Init (для записи значения освещенности).
Функция Wire.beginTransmission() используется для начала передачи по протоколу I2C, а функция Wire.requestFrom(address, 2) используется для считывания значения регистров (аргумент 2 в этой функции – число регистров).
Функция Wire.endTransmission() используется для завершения процесса передачи по протоколу I2C, а функция Wire.write() используется для перехода к необходимому регистру, аргументом этой функции является адрес регистра.
Arduino
int BH1750_Read(int address)
{
int i=0;
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);
while(Wire.available())
{
buff = Wire.read();
i++;
}
Wire.endTransmission();
return i;
}
void BH1750_Init(int address)
{
Wire.beginTransmission(address);
Wire.write(0x10);
Wire.endTransmission();
}
1 |
intBH1750_Read(intaddress) { inti=; Wire.beginTransmission(address); Wire.requestFrom(address,2); while(Wire.available()) { buffi=Wire.read(); i++; } Wire.endTransmission(); returni; } voidBH1750_Init(intaddress) { Wire.beginTransmission(address); Wire.write(0x10); Wire.endTransmission(); } |
В функции loop мы в режиме реального времени выводим значение освещенности (в люксах) на экран ЖК дисплея. Сначала мы сравниваем значение, считанное с датчика BH1750, со значением 2 и если оно равно 2, то мы печатаем значение освещенности на экране ЖК дисплея. Мы сравниваем значение с датчика BH1750 со значением 2 потому что функция BH1750_Read возвращает количество считанных регистров с датчика, а мы считываем как раз 2 регистра. Поэтому когда мы считаем 2 регистра с датчика, мы выводим значение освещенности на экран ЖК дисплея.
Далее мы получаем значения обоих регистров и делим получившееся значение на 1.2 (здесь значение 1.2 определяет точность вычислений).
Arduino
void loop()
{
int i;
uint16_t value=0;
BH1750_Init(BH1750address);
delay(200);
if(2==BH1750_Read(BH1750address))
{
value=((buff<<8)|buff)/1.2;
lcd.clear();
lcd.print(«Intensity in LUX»);
lcd.setCursor(6,1);
lcd.print(value);
}
delay(150);
}
1 |
voidloop() { inti; uint16_tvalue=; BH1750_Init(BH1750address); delay(200); if(2==BH1750_Read(BH1750address)) { value=((buff<<8)|buff1)1.2; lcd.clear(); lcd.print(«Intensity in LUX»); lcd.setCursor(6,1); lcd.print(value); } delay(150); } |
How to measure the quality of lighting?
In Europe, EN 12464-1 (summary in English and French) defines the minimum lighting levels according to the occupied workplace.
Source: LUX Lighting Review No. 228 May / June 2004 available online.
In a dwelling, there is no specific standard (to my knowledge). Keria, a lighting specialist, has published some common light intensities on his site. Here are excerpts of the recommendations for some rooms of the house (or to obtain a certain atmosphere: intimate, convivial, game, work).
Pièce et ambiance recherchée | Intensité lumineuse | Couleur recommandée |
Salon, salle à manger, chambre d’adulte. Ambiance tamisée, intime. | 25-50 lux | Blanc chaud |
Salon, salle à manger, cuisine, chambre d’adulte, bureau. Ambiance conviviale, moments de détente. | 100-150 lux | Blanc chaud |
Bureau, bibliothèque, chambre d’enfant, salle de jeux. Ambiance de travail, de jeux. | 200-250 lux | Blanc neutre |
Ambiance technique : espaces de forte activité (bureau, atelier) et de circulation (couloirs, entrée) | 350-500 lux | Blanc froid |
Source : https://www.keria.com/guides/comment-calculer-la-quantite-declairage-necessaire-dans-une-piece
On the basis of these different data, I constructed a 5-level indicator (too low, low, ideal, high, too high). You can adjust the values according to your habits and needs.
#define _TOOLOW 25 #define _LOW 50 #define _HIGH 500 #define _TOOHIGH 750 #define LEVEL_TOOLOW "Too low" #define LEVEL_LOW "Low" #define LEVEL_OPTIMAL "Ideal" #define LEVEL_HIGH "High" #define LEVEL_TOOHIGH "Too high"
Подключение BH1750 к Arduino
Модуль модуль GY-302 оборудован пяти-пиновым разъемом стандарта 2.54мм:
- VCC: Питание «+»
- GND: Земля «-«
- SCL: Линия тактирования (Serial CLock)
- SDA: Линия данных (Serial Data)
- ADDR: Выбор адреса
Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся:
Arduino Mega | Arduino Uno/Nano/Pro Mini | BH1750 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | VCC | Красный |
20 (SDA) | A4 | SDA | Синий |
21 (SCL) | A5 | SCL | Зелёный |
3.3V | 3.3V | ADDR | Жёлтый |
Схема подключения BH1750 к Arduino по I2C
На следующем рисунке показана схема подключения датчика внешней освещенности BH1750 к Arduino UNO. Вывод ADD можно оставить «висящим»:
но вы можете подключить его к 3.3 В. Это переведет вывод ADD в высокий логический уровень, и адрес ведомого I2C датчика внешней освещенности BH1750 станет 0x5C
Это важно в программировании. Если вывод ADD переведен в низкое логическое состояние путем подключения к земле, адрес ведомого устройства I2C датчика внешней освещенности BH1750 будет 0x23
Таким образом, два датчика внешней освещенности BH1750 могут быть подключены к одной шине I2C, где один вывод ADD имеет низкое логическое состояние, а другой вывод ADD высокое.
Пример скетча
В скетче мы каждые 1000 мсек считываем с датчика BH1750 показания освещённости в люксах и выводим эти данные в последовательный порт.
/*
Подключяем библиотеку Wire (для I2C)
*/
#include <Wire.h>
/*
Подключяем библиотеку для bh1750
*/
#include <BH1750.h>
/*
Объявляем объект lightMeter
*/
BH1750 lightMeter;
void setup() {
/*
Запускаем последовательный порт
*/
Serial.begin(9600);
/*
Инициализируем шину I2C (библиотека BH1750 не делает это автоматически)
На esp8266 вы можете выбрать выводы SCL и SDA, используя Wire.begin (D4, D3);
*/
Wire.begin();
/*
Инициализируем и запускаем BH1750
*/
lightMeter.begin();
Serial.println(F(«BH1750 тест»));
}
void loop() {
/*
Считываем показания с BH1750
*/
float lux = lightMeter.readLightLevel();
/*
Отправляем значение освещенности в последовательный порт
*/
Serial.print(«Light: «);
Serial.print(lux);
Serial.println(» lx»);
/*
раз в секунду
*/
delay(1000);
}
1 |
/* BH1750lightMeter; voidsetup(){ /* Запускаем последовательный порт Serial.begin(9600); /* Инициализируем шину I2C (библиотека BH1750 не делает это автоматически) Wire.begin(); /* Инициализируем и запускаем BH1750 lightMeter.begin(); Serial.println(F(«BH1750 тест»)); } voidloop(){ /* Считываем показания с BH1750 floatlux=lightMeter.readLightLevel(); /* Отправляем значение освещенности в последовательный порт Serial.print(«Light: «); Serial.print(lux); Serial.println(» lx»); /* раз в секунду delay(1000); } |
Результат
Открыть монитор последовательного порта можно сочетанием клавиш Ctrl+Shift+M или через меню Инструменты. В мониторе последовательного порта побегут значения освещённости с нашего датчика BH1750.
4Взаимодействие с сенсором BH1750 в деталях
Для управления датчиком мы должны по его I2C адресу записать код команды. Под управлением понимается изменение режима работы, изменение чувствительности, сброс и т.д. Команды можно передавать только по одной. Для чтения мы должны запросить из датчика 2 байта. Датчик хранит всегда значение в виде 16-битного числа, но его интерпретация зависит от текущей чувствительности.
Последовательность обмена с датчиком BH1750
На следующем рисунке представлен список команд, необходимых для работы с датчиком BH1750:
Команды управления датчиком BH1750
Как мы знаем, управление и обмен данными с датчиком BH1750 происходит по протоколу I2C. Мне нравится использовать для быстрых тестов общения с устройствами I2C и SPI отладочную плату с микросхемой FT2232H. Подключим SCL датчика к SCL микросхемы FT2232H, SDA датчика – к SDA и SDO микросхемы. Питание 5В возьмём с Arduino Nano, а все земли объединим.
Модуль с датчиком BH1750 управляется микросхемой FTDI
Теперь запустим программу SPI via FTDI и попробуем прочитать значения, хранящиеся в регистрах сенсора.
Чтение единичного показания датчика BH1750 с помощью FT2232HНепрерывное считывание показаний датчика BH1750 с помощью FT2232H
Программирование люксметра
Теперь можно подключить к разъемам ардуины преобразователь USB/SERIAL и начинать программировать
Для работы с дисплеем 5110 по любым 5-ти дискретным выводам использую библиотеку Adafruit-PCD8544-Nokia-5110-LCD-library и графическую библиотеку Adafruit-GFX-Library
Остальное из стандартного набора Arduino IDE
Микроконтроллер постоянно находится в режиме SLEEP_POWER_DOWN И включается/выключается длительным (более 2 сек) нажатием на кнопку питания. Ток в отключенном режиме порядка 100 мкА. Это достигнуто тем, что с платы демонтирован светодиод питания, аккумулятор заведен на контроллер минуя стабилизатор напряжения, включение всей периферии производится микроконтроллером через транзисторы. Все выходы при выключении переводятся в режим выхода в низкое состояние (LOW).
В рабочем режиме с периодичностью 1 сек выводятся показания датчика освещенности и напряжение аккумулятора.
Напряжение питания сравнивается с внутренним опорным напряжением 1.1В по методике описанной в этой статье
Скетч люксметра для ардуино
setResolutionTyp(), setResolutionMin(), setResolutionMax()
Description
The particular method sets measurement resolution by writing corresponding value to the measurement time register of the sensor.
- Those limits have nothing common with typical, minimal, or maximal values of parameters from a datasheet. They are just minimal, typical (default), and maximal values of the measurement time register.
- The measurement resolution is expressed in . It determines what binary value of the sensor’s data register corresponds to 1 lx of measured ambient illuminance.
- The measurement resolution in conjunction with sensor’s measurement accuracy determines measurement sensitivity in .
- The typical resolution is determined by the measurement time register value .
- The minimal resolution is determined by the measurement time register value and corresponds to 0.45 (31/69) fraction of typical resolution. This resolution is useful for measuring the highest light intensity up to 100000 lx, theoretically to 151946 lx at minimal datasheet resolution 0.96 bit count per lux and maximal illuminance register value 65535, i.e., .
- The maximal resolution is determined by the measurement time register value and corresponds to 3.68 (254/69) multiple of typical resolution. This resolution is useful for measuring the lowest light intensity (darkness) down to 0.11 lx in conjunction with double high measurement mode, theoretically from 0.09 lx at maximal datasheet resolution 1.44 bit count per lux, double sensitivity, and minimal illuminance register value 1, i.e., .
- Methods utilize the method for writing particular value to the sensor’s measurement time register.
Обзор
BH1750 имеет шесть различных режимов измерения, которые разделены на две группы:
- непрерывные,
- одноразовые измерения.
В непрерывном режиме датчик постоянно измеряет значение освещенности. В одноразовом режиме датчик выполняет только одно измерение и затем переходит в режим выключения питания.
Каждый режим имеет три разные точности:
- Режим низкого разрешения — (точность 4 лк, время измерения 16 мс)
- Режим высокого разрешения — (точность 1 лк, время измерения 120 мс)
- Режим высокого разрешения 2 — (точность 0,5 лк, время измерения 120 мс)
По умолчанию в этой библиотеке используется непрерывный режим высокого разрешения, но вы можете изменить его на другой режим, передав аргумент mode в BH1750.begin().
Когда используется одноразовый режим, ваш датчик перейдет в режим выключения питания, когда он завершит измерение, и вы прочитаете его. Когда датчик снова включается, он возвращается в режим по умолчанию, что означает, что его необходимо перенастроить обратно в одноразовый режим. Эта библиотека была реализована для автоматической перенастройки датчика при следующей попытке измерения, поэтому вам не придется беспокоиться о таких деталях низкого уровня.
Обычно вы получите целочисленное значение, которое представляет эквивалент в люксах.
- Режим низкого разрешения — (общий диапазон: от 0,0 до 54612,5 люкс)
- Режим высокого разрешения — (общий диапазон: от 0,0 до 54612,5 люкс)
- Режим высокого разрешения 2 — (общий диапазон: от 0,0 до 27306,25 люкс)
Сам датчик возвращает 16-битное целое число без знака. Поэтому максимальное значение ограничено в целом. Стандартное преобразование между так называемыми «отсчетами» в люкс составляет 1 / 1,2, что означает, что вы получаете меньшее значение. Поскольку используется float, в случае ошибки вы получите отрицательное значение.
- -1 с датчика не поступило достоверных данных
- -2 устройство не настроено. В противном случае измеренные значения преобразуются в люкс и возвращаются. Если никакие дополнительные параметры не изменены, максимальное значение люкс составляет 54612,5 лк.
Поскольку датчик учитывает воздействие света в определенный период времени, вы можете изменить этот период времени. Это необходимо, если вы используете накладываемые окна или компенсируете влияние окружающей среды, например, темнота. Этот период времени определяется регистром, который называется MTreg. Поэтому вы можете выбрать значение от 32 до 254. Значение по умолчанию — 69. Имейте в виду, что время измерения изменяется соответственно.
Техническое описание чипа BH1750 можно скачать здесь.
Купить Датчик освещенности GY-30 BH1750FVI в Хабаровске Robstore.ru
В наличии: 2 шт.
• 100.00 р. •
Цифровой датчик овещённости GY-30. Модуль выполнен на базе BH1750FVI.
- Чип: BH1750FVI
- Питание: 3-5Вольт
- Протокол связи: стандартный IIC (он же I2C, он же TWI)
- Диапазон измерений: 0 – 65535 Люкс
Для первого подключения нам понадобятся Arduino Uno и провода Папа-Мама. Также нужно скачать библиотеку BH1750 и подключить её к проекту в Arduino IDE.
Модуль подключаем по схеме:
GY-30 BH1750FVIArduino Uno
VCC
+5V
GND
GND
SCL
A5
SDA
A6
Для подключения используем провода Папа-Мама.
После установки библиотеки создаём и загружаем в Arduino скетч:
#include #include BH1750 lightMeter; void setup(){ Serial.begin(9600); // Initialize the I2C bus (BH1750 library doesn’t do this automatically) Wire.begin(); // On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3); lightMeter.begin(); Serial.println(F(“BH1750 Test”)); } void loop() { uint16_t lux = lightMeter.readLightLevel(); Serial.print(“Light: “); Serial.print(lux); Serial.println(” lx”); delay(1000); }
В этом примере каждую секунду в COM порт выводится ищмеренный показатель освещённости. Для просмотра поступающих данных необходимо использовать “Монитор порта”.
- Datasheet на BH1750
- Библиотека BH1750 для Arduino IDE
Датчик освещённости GY-30 BH1750FVI х1
Датчик освещенности GY-30 BH1750FVI
Модель:
GY-30
Производитель:
Датчик освещенности GY-302 BH1750
ОПИСАНИЕ Цифровой датчик освещенности с большим интервалом измерений. Модуль выполнен на базе BH1750. ПАРАМЕТРЫ Чип: BH1750 Питание: 3-5 Вольт Протокол связи: стандартный IIC (он же I2C, он же TWI) Диапазон измерений: 1 – 65535 Люкс ..
Датчик освещенности GY-2561 TSL2561
ОПИСАНИЕ Цифровой датчик освещенности с большим интервалом измерений. Модуль выполнен на базе TSL2651. ПАРАМЕТРЫ Чип: TSL2651 Питание: 3.3-5 Вольт Протокол связи: стандартный IIC (он же I2C, он же TWI) Диапазон измерений: 1 – 65535 Люкс Габариты: 1..
Датчик освещенности GY-49 MAX44009
ОПИСАНИЕ Цифровой датчик освещенности с большим интервалом измерений. Модуль выполнен на базе MAX44009. ПАРАМЕТРЫ Чип: MAX44009 Питание: 3 … 5 Вольт Протокол связи: стандартный IIC (он же I2C, он же TWI) Диапазон измерений: 0,045 … 188000 Люкс ..
Overview
The BH1750 has six different measurement modes which are divided in two groups;
continuous and one-time measurements. In continuous mode the sensor
continuously measures lightness value. In one-time mode, the sensor makes only
one measurement and then goes into Power Down mode.
Each mode has three different precisions:
- Low Resolution Mode — (4 lx precision, 16ms measurement time)
- High Resolution Mode — (1 lx precision, 120ms measurement time)
- High Resolution Mode 2 — (0.5 lx precision, 120ms measurement time)
By default, this library uses Continuous High Resolution Mode, but you can
change this to a different mode by passing the mode argument to
BH1750.begin().
When the One-Time mode is used your sensor will go into Power Down mode when
it completes the measurement and you’ve read it. When the sensor is powered up
again it returns to the default mode which means it needs to be reconfigured
back into One-Time mode. This library has been implemented to automatically
reconfigure the sensor when you next attempt a measurement so you should not
have to worry about such low level details.
Usually you will get an integer value which represent the lux equivalent.
- Low Resolution Mode — (generic range: 0.0 up to 54612.5 lux)
- High Resolution Mode — (generic range: 0.0 up to 54612.5 lux)
- High Resolution Mode 2 — (generic range: 0.0 up to 27306.25 lux)
The sensor itself returns a 16 bit unsigned integer. Therefore the maximum value is limited in general.
The standard conversion between the so called ‘counts’ to lux is 1/1.2, that means you get a smaller value.
As we use float, if an error occurs you will get a negative value.
- -1 no valid data was transmitted from the sensor
- -2 device is not configured
Otherwise the measured counts are converted to lux and returned. If no advanced parameters are changed the maximum lux value is 54612.5 lx.
As the sensor counts impact of light in a specific time frame you could change this time frame.
This is needed if you use an overlay window or compensate for environmental influence like darkness.
This time frame is defined by a register which is called MTreg. Therefore you could choose a value between 32 and 254.
The default value is 69; keep in mind that the measurement time is changed accordingly.