ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动

BH1750FVI环境光传感器驱动

1、BH1750FVI介绍

BH1750FVI 是一款用于 I2C 总线接口的数字环境光传感器 IC。 该IC最适合获取调整手机LCD和Keypad背光功率的环境光数据。 可以在高分辨率下检测宽范围。

BH1750FVI有如下主要特性:

  • I2C总线接口(f/s模式支持)
  • 光谱责任近似于人眼反应
  • 照度数字转换器
  • 宽范围和高分辨率。 ( 1 - 65535 lx )
  • 通过断电功能实现低电流
  • 50Hz / 60Hz 光噪声抑制功能
  • 1.8V 逻辑输入接口
  • 无需任何外部零件
  • 光源依赖性小。 (例如白炽灯、荧光灯、卤素灯、白光 LED、太阳灯)
  • 可以选择 2 种 I2C 从机地址。
  • 光学窗口影响的可调测量结果(使用此功能可以检测最小 0.11 lx,最大 100000 lx。)
  • 小的测量变化 (+/- 20%)
  • 红外线的影响很小。

BH1750FVI的功能框图如下:

在这里插入图片描述

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • BH1750FVI模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次使用的BH1750FVI驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
#include <BH1750.h>
#include <Wire.h>

// BH1750设备,地址为0x23
BH1750 lightMeter(0x23);

2)设备初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void setup() {
// 串口初始化
Serial.begin(9600);
// I2C总线初始化
Wire.begin();

// 初始化为CONTINUOUS\_HIGH\_RES\_MODE
if (lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
Serial.println(F("BH1750 Advanced begin"));
} else {
Serial.println(F("Error initialising BH1750"));
}
}

3)数据采集

1
2
3
4
5
6
7
8
9
10
11
void loop() {
// 数据可以读取
if (lightMeter.measurementReady()) {
// 读取数据
float lux = lightMeter.readLightLevel();
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
}
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126136657