跳到主要内容

BH1750光照强度传感器

一、本例程实现功能

通过BH1750光照强度传感器模块测量周围灯光或太阳光等光照强度,并通过 print() 函数在电脑串口调试终端打印输出。

二、基本概念

光照强度: 光照强度是一种物理术语,指单位面积上所接受可见光的光通量。简称照度 [1] ,单位勒克斯(Lux或lx)。用于指示光照的强弱和物体表面积被照明程度的量。

下表是一些日常的代表性光照强度:

环境光照度(单位:lux)
烈日100,000
阴天8,000
绘图600
阅读500
夜间棒球场400
办公室/教室300
路灯5
满月0.2
星光0.0003

三、 传感器参数配置概述

Core提供的库函数默认将BH1750传感器配置在H-Resolution Mode,即精确度配置在1勒克斯(lx),测量范围在165535(lx),每次测量时间在120180毫秒之间。所以保守估计传感器每秒可以输出5组光照强度数据,具体参数配置如下图中红色方框中的内容:

para

关于BH1750传感器更详细的介绍请在下文中提供的资料下载地址中下载并查阅。

四、接线图

llumination

五、材料清单

名称推荐购买链接(或者您可以自己制作)模块/芯片硬件资料下载
BH1750光照强度传感器模块BH1750购买链接下载地址
声明:这里推荐的购买链接仅供参考,您完全可以去其他商家或渠道购买,只要功能相似即可,如果需要更低的成本建议自己开发硬件模块或定制。

product

六、完整代码

--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--设置BH1750光照强度传感器占用SCL0和SDA0引脚,并启动传感器以每秒输出5组数据的频率工作
LIB_BH1750Config("IIC0")
--开始大循环
while(GC(1) == true)
do
--每隔200毫秒查询一次传感器是否出数,也可以设置大于200毫秒的查询间隔时间,取决于您的应用需求
LIB_DelayMs(200)
flag, illumination = LIB_BH1750GetResult()
if flag == 1 then --如果传感器此时有数据
--光照强度值去掉小数部分,单位:勒克斯(lx)
print(string.format("illumination: %.0f (lx)", illumination))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

七、代码运行结果

电脑串口调试终端上显示的光照强度(单位:勒克斯(lx))内容如下图:

result