环境光传感器:
这是一颗模拟传感器. 通过Grove连接到核心板的GPIO2接口, 利用内置的ADC进行电压读取
ADC读取时可以以u16格式读数, 也可以直接拿到具体电压值. 直接调用方法即可.
这颗环境光传感器使用的是SENBA的LS06-S传感器, 串联一颗68k电阻, 中间输出至LM358. 由于输出与光照强度不太不线性, 这里不计算具体照度值, 只做定性分析.
旁边放一个手机作为亮度参考.
读取的数据通过显示屏显示.
代码如下
adc = ADC(Pin(2), atten=ADC.ATTN_11DB)
while True:
light_adc = adc.read_u16()
light_uv = adc.read_uv()
oled.fill(0)
oled.text(f'light_adc: {light_adc}', 0, 0)
oled.text(f'light_mv: {light_uv / 1000}', 0, 10)
oled.show()
sleep(1)
运行效果如下. 可以看到, 一开始亮度较高, 手机和显示屏显示的数字都较大, 用手遮住光线, 手机和显示屏显示的数字都变得很小. 移开手后恢复较大数值. 下面绿色电路板仅为固定作用
温湿度传感器:
这颗是数字传感器, 通过I2C协议传输数据. 使用的芯片是AHT20, 可以直接按照规格书的说明通过I2C协议通信. 由于使用广泛, 已经有写好的库了, 这里直接调用ahtx0.py 即可. 首先需要确保此文件已写入核心板.
旁边放一个温湿度表作为参考.
同样, 读取的数据通过显示屏显示. 这里限制了读取速度为2秒一次, 以防止读取本身的发热
代码如下
import ahtx0
aht20 = ahtx0.AHT20(i2c)
while True:
t = aht20.temperature
h = aht20.relative_humidity
oled.fill(0)
oled.text(f'T: {t}', 0, 0)
oled.text(f'H: {h}', 0, 10)
oled.show()
sleep(2)
运行效果如下. 可以看到, 一开始温度与湿度与温湿度表相近, 读取较为准确. 用手指堵住sensor后, 由于人体的温度和汗液, 导致湿度和温度都有明显的快速上升.
本帖最后由 epix 于 2023-12-10 23:21 编辑