资讯详情

使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据

简 介: 使用ESP32读取BH1750光度传感器的数据。但我不知道为什么。读取的数据是0 ?后面通过证明,说明在原来进行I2C语法错误现语法错误。

光度传感器
文章目录
实验背景
实验方案
测试BH1750
基本I2C总线操作
读取数据
测试结果

 

§01 度传感器


  今天(2021-09-24 16:40:56)测试了 开关DF-11N 光强的基本特征。看到在之前的光度传感器BH1750模块。下面利用ESP32 MicroPython完成对其驱动,以备之后实验使用。

一、实验背景

1、光度传感器BH1750

  在 使用了STC单片机测试了对于光度传感器 的数据初步实验。在这次试验中,利用BH1750在普通环境下测量了光度大约为几百的数值。在 测试了激光发射器的光斑的光强度。

  很可惜在上面几个实验中,并没有对于BH1750测量数据并没有得到进一步分析,比如噪声,数值标定等。

▲ 图1.1.1 转换速度

▲ 图1.1.1 转换速度

2、MicroPython I2C

测试了 测试了 MicroPython的软件I2C功能对于IMU 9250的数据读取功能。那么在本实验中利用ESP32对于BH1750的I2C访问,来访问光度数据。

二、实验方案

1、管脚配置

SCL:GPIO15 SDA:GPIO2

▲ 图1.2.1 实验管脚配置

2、搭建实验平台

  下面是利用面包板搭建的实验电路。利用两个 4.7kΩ电阻对于SCL,SDA进行上拉到3.3V电压。

▲ 图1.2.2 利用面包板搭建的实验电路

 

§02 试BH1750


一、基本I2C总线操作

1、I2C扫描

(1) 实验代码

from machine                import Pin,SoftI2C,Timer
import time

i2c = SoftI2C(scl=Pin(15), sda=Pin(2), freq=100000)
scan = i2c.scan()
print(scan)

(2) 扫描结果

  程序运行输出结果:

[35]

(3) 结果分析

  根据BH1750的读取协议,可以看到它的的地址应该是 0x23,这与读出的数值35是相同的。

▲ 图2.1.1 BH1750读取协议

二、读取数据

1、读取H-Resolution数据

  根据前面给出的Continuously H-resolution读取协议,利用I2C读取相应的数据。

(1) 实验代码

from machine                import Pin,SoftI2C,Timer
import time
i2c = SoftI2C(scl=Pin(16), sda=Pin(17), freq=100000)
str = i2c.scan()
print('%x'%str[0])

BH1750_CMD_POWERDOWN        = 0x0
BH1750_CMD_POWERON          = 0x1
BH1750_CMD_RESET            = 0x7
BH1750_CMD_H_RESOLUTION     = 0x10
BH1750_CMD_H_RESOLUTION2    = 0x11
BH1750_CMD_L_RESOLUTION     = 0x13
BH1750_CMD_ONETIME_H        = 0x20
BH1750_CMD_ONETIME_H2       = 0x21
BH1750_CMD_ONETIME_L        = 0x23

BH1750_I2C_ADD  = 0x23

buf = bytearray(1)
buf[0] = BH1750_CMD_H_RESOLUTION

i2c.writeto(BH1750_I2C_ADD, buf)
time.sleep_ms(200)

while True:
    buf = i2c.readfrom(BH1750_I2C_ADD, 0x2)
    data = buf[0] * 256 + buf[1]
    print(data)
    time.sleep_ms(200)

(2) 读取数据波形

▲ 图2.2.1 SDA, SCL波形

(3) 读取数据

▲ 图2.2.2 读取的数据

 

试结果 ※


  知道为什么,最终使用ESP32 没有能够读取BH1750的数据。读出的数据都是0.

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2021-09-25
#
# Note:
#============================================================
from machine                import Pin,SoftI2C,Timer
import time
i2c = SoftI2C(scl=Pin(16), sda=Pin(17), freq=100000)
str = i2c.scan()
print('%x'%str[0])
#------------------------------------------------------------
BH1750_CMD_POWERDOWN        = 0x0
BH1750_CMD_POWERON          = 0x1
BH1750_CMD_RESET            = 0x7
BH1750_CMD_H_RESOLUTION     = 0x10
BH1750_CMD_H_RESOLUTION2    = 0x11
BH1750_CMD_L_RESOLUTION     = 0x13
BH1750_CMD_ONETIME_H        = 0x20
BH1750_CMD_ONETIME_H2       = 0x21
BH1750_CMD_ONETIME_L        = 0x23
BH1750_I2C_ADD  = 0x23
#------------------------------------------------------------
buf = bytearray(1)
buf[0] = BH1750_CMD_H_RESOLUTION
i2c.writeto(BH1750_I2C_ADD, buf)
time.sleep_ms(200)
#------------------------------------------------------------
while True:
    buf = i2c.readfrom(BH1750_I2C_ADD, 0x2)
    data = buf[0] * 256 + buf[1]
    print(data)
    time.sleep_ms(200)
#------------------------------------------------------------
# END OF FILE : test1.PY
#============================================================


  • 接近开关的初步测试 : DF-11N
  • 强度光照模块rimg02 BH1750光度传感器模块
  • BH1750
  • 使用BH1750测量激光发射器的强度
  • 龙邱MPU9250传感器 | 使用ESP32 模块进行测试
  • ESP32-S模块转接板设计与实现

  • 图1.1.1 转换速度
  • 图1.2.1 实验管脚配置
  • 图1.2.2 利用面包板搭建的实验电路
  • 图2.1.1 BH1750读取协议
  • 图2.2.1 读取数据波形

标签: 光强度传感器bh1750fvi

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台