Adatum
Дек
7
2015

Подключение цифрового датчика обнаружения интенсивности освещения BH1750

bh1750 подключение
Пришёл новый датчик, это датчик интенсивности освещения. К сожалению не где не нашёл как на датчике BH1750 сменить адрес хотя ножка ADDR присутствует, а также как подключить несколько датчиков к одной adruino. Просмотрев Datasheet по датчику видим что если на ножка ADDR подать > чем 0,7 напряжения питания то I2C адрес устройства будет 0x5C в противном случае 0x23. Тесть мы можем подключить всего два датчика к одной Ардуинке.
На Aliexpres ищется по фразам GY-302 BH1750 BH1750FVI.ADDR

bh1750 подключение
GY-302 BH1750 BH1750FVI
Вид спереди и сзади.
GY-302 BH1750 BH1750FVI
Вид в упаковке.

Характеристики датчика:

Модель: GY-302
Размеры: 13.9 мм x 18.5 мм
Чип: BH1750FVI
Питание: 3-5 В
Диапазон данных 0-65535
Датчик Встроенный 16 bit AD конвертер
Шина: I2C
Датчик откалиброван и показывает яркость в Lux.

BH1750 address (ножка ADDR):

ножка ADDR не подключена(висит в воздухе) — 0x23
ножка ADDR подключена (от 3,3 до 5 вольт) — 0x5C

Можно использовать стандартные библиотеки Wire.h и math.h

#include <Wire.h> //BH1750 IIC Mode 
#include <math.h> 
int BH1750address = 0x23; //Устанавливаем i2c address

byte buff[2];
void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  int i;
  uint16_t val=0;
  BH1750_Init(BH1750address);
  delay(200);

  if(2==BH1750_Read(BH1750address))
  {
    val=((buff[0]<<8)|buff[1])/1.2;
    Serial.print(val,DEC);     
    Serial.println("[lx]"); 
  }
  delay(150);
}

int BH1750_Read(int address) //
{
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) //
  {
    buff[i] = Wire.read();  // receive one byte
    i++;
  }
  Wire.endTransmission();  
  return i;
}

void BH1750_Init(int address) 
{
  Wire.beginTransmission(address);
  Wire.write(0x10);//1lx reolution 120ms
  Wire.endTransmission();
}

Или использовать библиотеку Genotronex BH1750FVI https://github.com/Genotronex/BH1750FVI_Master

#include <Wire.h>
#include <BH1750FVI.h>

BH1750FVI LightSensor;

void setup() {   
  Serial.begin(9600);
  LightSensor.begin();
  LightSensor.SetAddress(0x5C);//Указываем адресс 0x5C или 0x23
  LightSensor.SetMode(Continuous_H_resolution_Mode);
}


void loop() {
  uint16_t lux = LightSensor.GetLightIntensity();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lux");
  delay(1000);
}

GY-302 BH1750 BH1750FVI

Похожие статьи

Оставить комментарий