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引腳,只需在代碼中做出相應的配置
代碼:
from machine import Pin
import timegy302_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 測量時間:120msi2c.writeto(gy302_addr, chr(0x11)) # 發送高分辨率連續測量命令2 分辨率:0.5Lx 測量時間:120ms#i2c.writeto(gy302_addr, chr(0x13)) # 發送低分辨率連續測量命令 分辨率:4Lx 測量時間:16msdef gy_302():gy = i2c.readfrom(gy302_addr, 2) # 從gy302_addr地址設備讀取2位數據gy302 = float(gy[0] << 8 | gy[1]) / 1.2 # 左移,可以理解為 gy[0]*0xff return gy302gy_302_Init()while True:#print("光照值 = %d Lx" %round(gy_302()))print("光照值 = ", gy_302()," Lx")time.sleep(1)