Package: haas-python-bh1750
HaaS Python介绍HaaS Python是阿里云IoT团队最新研发的一套低代码编程框架，兼容MicroPython编程规范，依托HaaS平台软硬件积木提供AI、支付、蓝牙配网、云连接、UI等物联网场景常用的能力，从而解决了物联网应用开发难的问题。有了Python轻应用框架，物联网编程不再局限于专业软件开发人员，一般的技术员也可以快速实现复杂的物联网需求。
更多HaaS Python介绍和开发资料见HaaS Python官网,创意案例,硬件积木HaaS Python is a set of low-code programming frameworks newly developed by Alibaba Cloud IoT team. It is compatible with MicroPython programming specifications. It relies on the hardware and software building blocks of the HaaS platform to provide capabilities commonly used in IoT scenarios such as AI, payment, Bluetooth network configuration, cloud connection, and UI. Solve the difficult problem of IoT application development. With the Python light application framework, IoT programming is no longer limited to professional software developers, and general technicians can quickly implement complex IoT requirements.
For more HaaS Python introduction and development materials, seeHaaS Python official website,Creative Case,Hardware Building Blocks安装方法在HaaS Python官网下载开发板对应的固件，并完成固件烧录Download the firmware corresponding to the development board atHaaS Python websiteand complete the firmware burning在开发板上运行以下命令完成安装和使用,如果您在使用过程中遇到问题，欢迎在github上向我们提交issue，我们的工程师会及时解答Run the following commands on the development board to complete the installation and use. If you encounter problems during use, please submit an issue to us ongithub, Our engineers will answer in timeimport upip
upip.install("haas-python-bh1750")
import haas-python-bh1750数字光强传感器 - BH1750一、产品简介BH1750 是罗姆（ROHM）半导体集团出品的数字光强传感器，也称作光敏传感器。广泛应用于移动手机、LCD电视、电脑PC、掌上游戏机、数码相机、数码摄像机、汽车导航、PDA、LCD显示屏幕等等。二、技术参数I2C总线接口，支持快速或标准模式（F/S模式）近似人眼的光谱反应能力光照度到数字信号的转换器宽范围和高分辨率（1-65535lx）通过断电达到低电流50Hz / 60Hz 光噪声抑制功能1.8v逻辑输入接口不需要任何外围电路光源依赖性小。（例如，可用于白炽灯、荧光灯、卤素灯、白光 LED、太阳光）可选择 2种 I2C 从地址红外线影响很小WSOF6I 封装 2.6mm * 1.6mm三、软件接口BH1750数字光强传感器HaaS Python驱动：下载地址注：获取值单位为勒克斯 （lux，法定符号lx）是照度（luminance）的单位。BH1750(i2cObj) - 创建BH1750驱动对象函数原型：drv = BH1750(i2cObj)参数说明：参数类型必选参数？说明i2cObjI2C是调用此函数前需确保i2cObj对象已经处于open状态返回值：
BH1750对象成功，返回BH1750对象；BH1750对象创建失败，抛出Exception示例代码：fromdriverimportI2C# 驱动库importbh1750# BH1750温湿度传感器驱动库# 初始化I2C类型的设备i2cObj=I2C()i2cObj.open("bh1750")# 按照board.json中名为"bh1750"的设备节点的配置参数（主设备I2C端口号，从设备地址，总线频率等）初始化I2C类型设备对象print("BH1750 inited!")drv=bh1750.BH1750(i2cObj)# 初始化BH1750传感器输出：bh1750 inited!getLuminance - 获取照度值函数功能：
发起测量请求，等待测量完成后（24ms），获取照度值并返回函数原型：drv.getLuminance()参数说明：
无返回值：
成功返回光强测量结果（数据类型：浮点型；单位：照度）；失败抛出Exception示例：ret=drv.getLuminance()print("luminance is ",ret,"lx")输出：luminance is 115lx四、接口案例此使用实例在 board.json 中定义了名为 bh1750 的 I2C 类型的对象。在 Python 脚本中周期性的获取光照度测量结果并打印在日志中。代码：# board.json配置：{"name":"board-name","version":"1.0.0","io":{"bh1750":{"type":"I2C","port":0,"addrWidth":7,"freq":400000,"mode":"master","devAddr":35}},"debugLevel":"ERROR","repl":"disable"}# Python代码importutime# 延时函数在utime库中fromdriverimportI2Cimportbh1750if__name__=='__main__':# 初始化 I2C 设备i2cObj=I2C()# 按照board.json中名为"bh1750"的设备节点的配置参数（主设备I2C端口号，从设备地址，总线频率等）初始化I2C类型设备对象ret=i2cObj.open("bh1750")ifret!=0:raiseException('can not open i2c%s'%ioName)# 初始化 BH1750 传感器drv=bh1750.BH1750(i2cObj)whileTrue:# 无限循环val=drv.getLuminance()# 获取光照度print('luminance is%slx'%val)i2cObj.close()# 关闭 i2c 设备输出：...luminanceis44.16667lx...luminanceis30.0lx...五、通信协议主控芯片和 BH1750 传感器之间通信所用命令字如下表所示：序号命令字功能说明命令字宏定义10b0000_0000关电 - Power DownCMD_POWER_DOWN20b0000_0001上电 - Power OnCMD_POWER_ON30b0000_0111复位 - ResetCMD_RESET40b0001_0000连续测量、高分辨率模式 - Continuously H-Resolution ModeCMD_CONT_H_MODE50b0001_0001连续测量、高分辨率模式2 - Continuously H-Resolution Mode2CMD_CONT_H_MODE260b0001_0011连续测量、低分辨率模式 - Continuously L-Resolution ModeCMD_CONT_L_MODE70b0010_0000一次测量、高分辨率模式 - One Time H-Resolution ModeCMD_ONE_H_MODE90b0010_0001一次测量、高分辨率模式2 - One Time H-Resolution Mode2CMD_ONE_H_MODE2100b0010_0011一次测量、低分辨率模式 - One Time L-Resolution ModeCMD_ONE_L_MODE实际控制此传感器的流程可参考如下伪代码。一次获取数据通过I2C发送CMD_ONE_H_MODE、CMD_ONE_H_MODE2、CMD_ONE_L_MODE高分辨率等待180ms，低分辨率等待24msMAX.，传感器完成测量HIGH_BYTE,LOW_BYTE=通过I2C发起读操作（2字节）将两次读操作读到的字节组合成实际光照度（HIGH_BYTE<<8|LOW_BYTE）如果需要新测量值，则需要再发起测量命令，因此此时传感器状态已为PowerDown连续获取数据通过I2C发送CMD_CONT_H_MODE、CMD_CONT_H_MODE2、CMD_CONT_L_MODE高分辨率等待180ms，低分辨率等待24msMAX.，传感器完成测量HIGH_BYTE,LOW_BYTE=通过I2C发起读操作（2字节）将两次读操作读到的字节组合成实际光照度（HIGH_BYTE<<8|LOW_BYTE）如果需要新测量值，则继续发起读命令，高分辨率需要间隔120ms，低分辨率需要间隔16msTYP.六、工作原理从如下方框图可以看到 BH1750 内部集成了PD（Photo-Diode）光电二极管，信号放大后通过ADC采样输入到I2C控制器种。通过数字接口IIC读取数据。引脚分布如下，左侧依次为 VCC、ADDR、GND，其中ADDR为I2C地址选择引脚可以上拉或下拉选择不同地址。示例中我们采用下拉方式。右侧为SCL、DVI、SDA，其中SCL、SDA为I2C协议数据&时钟传输线。参考文献及购买链接[1]BH1750传感器[2]购买链接