Thonny IDE + MicroPython + ESP32 + GY-302 测量环境中的光照强度

GY-302是一款基于BH1750FVI光照强度传感器芯片的模块。该模块能够直接测量出环境中的光照强度,并将光照强度转换为数字信号输出。其具体参数如下表所示。

|----------|-------------------------------------------------------------|
| 参数名称 | 参数特性 |
| 测量范围 | 0-65535 LX |
| 测量精度 | 在环境光下误差小于±20%,能够自动忽略50/60Hz的闪烁光源 |
| 分辨率和测量时间 | 从低分辨率快速模式(4 LX分辨率,最快16ms测量时间) 到高分辨率模式(0.5LX分辨率,最慢120ms测量时间) |
| 通信方式 | 标准IIC通信,最大通信速率为400kHz |

元件:

  • GY-302光照强度模块
  • ESP32 DEVKIT_C开发板

  • 杜邦线
  • USB Type-C

接线:

|----------------|--------|
| ESP32 DEVKIT_C | GY-302 |
| VIN或3V3 | VCC |
| GND | GND |
| D18 | SCL |
| D19 | SDA |

注:GY-302中的ADDR引脚悬空不接;GY-302中的SCL和SDA引脚也可以连接到ESP32中的其他硬/软件IIC引脚,只需在代码中做出相应的配置

代码:

python 复制代码
from machine import Pin
import time
 
gy302_addr = 0x23  # 光线传感器I2C地址
 
from machine import I2C
i2c = I2C(0, freq = 1_000_000)		#初始化IIC0,使用默认引脚"SCL=18、SDA=19",传输速度:100 Kbps
#i2c = I2C(1, freq = 1000000)		#初始化IIC1,使用默认引脚"SCL=25、SDA=26",传输速度:100 Kbps

#from machine import SoftI2C
#i2c = SoftI2C(scl=Pin(5), sda=Pin(4), freq=1000000)	#初始化软件IIC,SCL=5、SDA=4,传输速度:100 Kbps
#i2c = SoftI2C(scl=Pin(33), sda=Pin(32), freq=4_000_000)	#初始化软件IIC,SCL=33、SDA=32,传输速度:400 Kbps

#print(hex(i2c.scan()[0]))  # 打印器件I2C地址
 
def gy_302_Init():    
    i2c.writeto(gy302_addr, chr(0x01)) 		# 发送上电命令 
    #i2c.writeto(gy302_addr, chr(0x07)) 	# 发送复位命令
    #i2c.writeto(gy302_addr, chr(0x10)) 		# 发送高分辨率连续测量命令  分辨率:1Lx  测量时间:120ms
    i2c.writeto(gy302_addr, chr(0x11)) 		# 发送高分辨率连续测量命令2  分辨率:0.5Lx  测量时间:120ms
    #i2c.writeto(gy302_addr, chr(0x13)) 		# 发送低分辨率连续测量命令  分辨率:4Lx  测量时间:16ms
    
def gy_302():
    gy = i2c.readfrom(gy302_addr, 2) 		# 从gy302_addr地址设备读取2位数据
    gy302 = float(gy[0] << 8 | gy[1]) / 1.2 		# 左移,可以理解为 gy[0]*0xff 
    return gy302

gy_302_Init()

while True:
    #print("光照值 = %d Lx" %round(gy_302()))
    print("光照值 = ", gy_302()," Lx")
    time.sleep(1)

现象:

相关推荐
学测绘的小杨21 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3101 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐1 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱2 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot2 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海2 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱2 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽2 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码2 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱3 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理