使用PI5与AHT10温度传感器进行温度采集,并把采集的数据打印在电脑端。
1、了解一下传感器的工作原理图性能
AHT10是一款高精度、低功耗的数字温湿度传感器,支持I²C通信协议。
参数:
温度范围:-40°C 至 +85°C,精度±0.3°C(典型值)。
湿度范围:0% 至 100% RH,精度±2% RH(典型值)。
工作电压:2.2V 至 5.5V,适合电池供电设备。
封装:DFN-3x3mm,易于集成。
特点:
完全校准,出厂即用。
抗干扰能力强,适合复杂环境。
低功耗模式,适合长期监测。
电源连接:
AHT10的VCC引脚连接到树莓派的3.3V或5V电源引脚(推荐3.3V以避免电压不匹配)。
GND引脚连接到树莓派的GND引脚。
I²C通信连接:
SCL引脚连接到树莓派的GPIO3(I²C时钟线)。
SDA引脚连接到树莓派的GPIO2(I²C数据线)。
注意事项,如果传感器模块带有上拉电阻,则无需额外添加;否则,建议在SCL和SDA线上添加4.7kΩ上拉电阻。
2、原理图及连接状态
下图是PI5连接器40P的原理连接图,这里使用的是GPIO2和2也就是3和5P用来控制温度传感器通信。
传感器与PI5连接状态图:
3、代码
# AHT10温湿度传感器驱动类class AHT10: def __init__(self, bus=1, address=0x38): """初始化AHT10传感器 bus: I2C总线编号 address: 传感器I2C地址 """ self.bus = smbus2.SMBus(bus) self.address = address def read_data(self): """读取传感器温度数据 返回: 温度值(摄氏度) """ # 发送测量命令 self.bus.write_i2c_block_data(self.address, 0xAC, [0x33, 0x00]) time.sleep(0.1) # 等待测量完成 # 读取测量结果 data = self.bus.read_i2c_block_data(self.address, 0x00, 6) # 检查设备状态位 if not (data[0] & 0x80): raise RuntimeError("Device not ready") # 解析温度数据 raw_temp = ((data[3] & 0x0F) << 16) | (data[4] << 8) | data[5] temperature = (raw_temp * 200.0 / 1048576) - 50 return temperature
4、采集的数据运行结果: