背景
此次活动购买的 U136 模块是一个环境光传感器,罗姆半导体设计的BH1750FVI是一款用于I2C总线接口的数字环境光传感器IC。该IC最适合用于调整移动电话LCD和键盘背光功率所需的环境光数据获取。它可以以高分辨率检测宽范围内的光照强度(1~65535lx).
特点
1. I2C 总线接口:支持快速/标准模式。
2. 光谱响应接近人眼反应。
3. 照度转数字转换器。
4. 宽范围高分辨率:1 - 65535 lx。
5. 通过功耗功能实现低电流消耗。
6. 50Hz / 60Hz 光噪声抑制功能。
7. 1.8V 逻辑输入接口。
8. 无需外部组件。
9. 光源依赖性小:如白炽灯、荧光灯、卤素灯、白色LED、阳光等。
10. 可选择两种类型的I2C从地址。
11. 可调测量结果以适应光学窗口的影响:使用此功能可检测最小0.11 lx,最大100000 lx。
12. 测量变化小(±20%)。
13. 红外影响很小。
应用
移动电话
LCD电视
笔记本电脑
便携式游戏机
数码相机
数码摄像机
车载导航系统
PDA
LCD显示器
绝对最大额定值
供电电压:最高4.5V
工作温度:-40°C 至 85°C
存储温度:-40°C 至 100°C
SDA 拉电流:最大7mA
功率耗散:260mW(注:70mm × 70mm × 1.6mm 玻璃环氧板,在Ta > 25°C时降额为3.47mW/℃)
工作条件
VCC电压:2.4V 至 3.6V
I2C参考电压:1.65V 至 VCC
Arduino 库 BH1750
编程环境为 VSCode + PlatformIO IDE。打开工程,在 PIO Home 中打开 Libraries 搜索 BH1750 然后安装到对应的工程即可。
程序设计
我的代码模块话设计,解耦了各个模块,因此只需要实现模块初始化和处理函数,然后在 setup() 和 loop() 函数分别调用以下两个函数接口。
/* Includes --------------------------------------------------------------------------------------*/ #include <Wire.h> #include <BH1750.h> #include "dlight_bh1750.h" /* Constants -------------------------------------------------------------------------------------*/ #define BH1750_I2C_ADDR 0x23 /* Variables -------------------------------------------------------------------------------------*/ BH1750 lightmeter(BH1750_I2C_ADDR); /* 构造对象 */ /* Function Implementations ----------------------------------------------------------------------*/ /** * @brief BH1750 环境光传感器初始化 * * @return int 0 on success; -1 on error. */ int dlight_bh1750_init(void) { int retval = 0; Wire.begin(); if (lightmeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) { Serial.println(F("BH1750 Advanced begin")); } else { Serial.println(F("Error: BH1750 init")); retval = -1; } return retval; } /** * @brief BH1750 测光 * * @return float 返回测光结果 lux 为档位;失败返回0.0 */ float dlight_bh1750_process(void) { float lux = 0.0; if (lightmeter.measurementReady()) { lux = lightmeter.readLightLevel(); Serial.print(">lux: "); Serial.println(lux); } return lux; }
演示
办公室环境比较暗,手机开了手电筒在旁边晃悠,光照强度变化明显。