什么是亮度?
光照度指被照射物体单位面积上所接受可见光的光通量,单位是勒克斯( Lux) 或流明每平方米( lm /m2) ,是用来描述光的亮度的。我们平时最关心的我家灯到底够不够亮,具体数值可以用照度计测量。
参考文献:张大勇.室内设计中灯光的明暗搭配[J].北京印刷学院学报,2021,29(01):71-74.
环境准备
1、GY30模块(BH1750FVI光照度传感器)
2、安装python-smbus
sudo apt-get install python-smbus
这个安装会附带安装 i2c-tools,不用单独安装了。
3、IIC 开启
sudo raspi-config
进入 Interfacing Options 高级设置,将 SPI 与 I2C 设置为 Enable 后重启系统。
4、连接传感器
代码
直接运行如下程序,即可得到环境的光照度:
import smbus
import time
__DEV_ADDR=0x23
__CMD_PWR_OFF=0x00
__CMD_PWR_ON=0x01
__CMD_RESET=0x07
__CMD_CHRES=0x10
__CMD_CHRES2=0x11
__CMD_CLHRES=0x13
__CMD_THRES=0x20
__CMD_THRES2=0x21
__CMD_TLRES=0x23
__CMD_SEN100H=0x42
__CMD_SEN100L=0X65
__CMD_SEN50H=0x44
__CMD_SEN50L=0x6A
__CMD_SEN200H=0x41
__CMD_SEN200L=0x73
bus=smbus.SMBus(1)
bus.write_byte(__DEV_ADDR,__CMD_PWR_ON)
bus.write_byte(__DEV_ADDR,__CMD_RESET)
bus.write_byte(__DEV_ADDR,__CMD_SEN100H)
bus.write_byte(__DEV_ADDR,__CMD_SEN100L)
bus.write_byte(__DEV_ADDR,__CMD_PWR_OFF)
def getIlluminance():
bus.write_byte(__DEV_ADDR,__CMD_PWR_ON)
bus.write_byte(__DEV_ADDR,__CMD_THRES2)
time.sleep(0.2)
res=bus.read_word_data(__DEV_ADDR,0)
res=((res>>8)&0xff)|(res<<8)&0xff00
res=round(res/(2*1.2),2)
result="光照强度: "+str(res)+"lx"
return result
if __name__ == '__main__':
while True:
print(getIlluminance())
time.sleep(2)
说明:毕业设计用树莓派来做家庭灯光的控制,需要用到此功能,特此记录!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)