цифровая электроника
вычислительная техника
встраиваемые системы

 

Arduino и датчик света BH1750

Автор: Mike(admin) от 25-01-2019, 10:55

Датчик внешнего освещения на Arduino и BH1750


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


Arduino и датчик света BH1750

Самым простым датчиком света является LDR (светозависимый резистор). Использование LDR хорошо, если ваше приложение очень простое, например, включение лампы, когда становится темно. Но для сложных приложений, таких как мобильные телефоны, вам необходимо точное измерение интенсивности окружающего света. Поэтому в данном проекте Arduino мы будем связывать простой датчик внешней освещенности с платой Arduino и регистрировать интенсивность освещения в люксах (лк).


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


Модуль датчика внешнего освещения BH1750 основан на цифровой интегральной схеме (ИС) датчика внешнего освещения BH1750FVI, разработанной ROHM Semiconductor. Это цифровая ИС со встроенным 16-битным преобразователем освещенности в цифровой код. Для связи с внешними устройствами, такими как микроконтроллеры, ИС датчика внешнего освещения BH1750 использует интерфейс шины I2C. Диапазон измерения составляет от 1 до 65535 лк. Ниже приведено изображение стандартного модуля датчика внешней освещенности BH1750, доступного сегодня.


атчик внешней освещенности BH1750

Подключение BH1750 к Arduino


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


В случае Arduino UNO аналоговые выводы A4 и A5 – это выводы шины I2C, где A4 – это SDA, а A5 – SCL. Выходной сигнал датчика внешней освещенности BH1750 в нашем проекте отображается на ЖК-дисплее 16 × 2, который связан с Arduino.


Схема подключения Arduino и датчика света BH1750


На следующем рисунке показана принципиальная схема подключения датчика внешней освещенности BH1750 к Arduino UNO.


Схема подключения Arduino и датчика света BH1750

Вывод ADD можно оставить «висящим», но вы можете подключить его к GND. Это переведет вывод ADD в низкий логический уровень, и адрес ведомого I2C датчика внешней освещенности BH1750 станет 0x23. Это важно в программировании. Если вывод ADD переведен в высокое логическое состояние путем подключения к питанию, адрес ведомого устройства I2C датчика внешней освещенности BH1750 будет 0x5C. Таким образом, два датчика внешней освещенности BH1750 могут быть подключены к одной шине I2C, где один вывод ADD имеет низкое логическое состояние, а другой вывод ADD высокое.


Код программы взаимодействия датчика света BH1750 с Arduino



#include <Wire.h>
#include<LiquidCrystal.h>
 
int BH1750address = 0x23;
byte buff[2];
LiquidCrystal lcd (7,6,5,4,3,2); //RS, E, D4, D5, D6, D7

void setup()
{
  Wire.begin();
  //Serial.begin(9600);
  lcd.begin(16,2);
  lcd.print("  BH1750 Light  ");
  lcd.setCursor(0,1);
  lcd.print("Intensity Sensor");
  delay(2000);
}
 
void loop()
{
  int i;
  uint16_t value=0;
  BH1750_Init(BH1750address);
  delay(200);
 
  if(2==BH1750_Read(BH1750address))
  {
    value=((buff[0]<<8)|buff[1])/1.2;
    lcd.clear();
    lcd.print("Intensity in LUX");
    lcd.setCursor(6,1);
    lcd.print(value);
    
    //Serial.print(val);     
    //Serial.println("[lux]"); 
  }
  delay(150);
}
 
int BH1750_Read(int address) 
{
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) 
  {
    buff[i] = Wire.read();
    i++;
  }
  Wire.endTransmission();  
  return i;
}
 
void BH1750_Init(int address) 
{
  Wire.beginTransmission(address);
  Wire.write(0x10);
  Wire.endTransmission();
}

Выполните подключения согласно электрической схеме и загрузите приведенный выше код. Arduino попытается извлечь данные об окружающем освещении из датчика по шине I2C, и после простых вычислений результат отобразится на ЖК-дисплее.


Arduino и датчик света BH1750



© digitrode.ru


Теги: Arduino, датчик освещенности, датчик света



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

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