本帖最后由 alanlan86 于 2023-8-30 12:45 编辑
准备硬件
- ESP32-S3 TFT Feather开发板
- SHT30温湿度传感器
- 接线:将STEAM QT I2C接口从小间距4pin链接器,转为2.54mm间距的插针
【重点提醒手工接线】:此处需要特别说明右下角的引出线,上面的电信号定义是根据颜色定义,和4PIN连接器完全相反!!!!大坑!害得我还烧坏了一个传感器。。。(若用Adafruit的标准模块,则直接对插即可)
引脚顺序 |
颜色 |
电信号 |
1 |
灰 |
GND |
2 |
红 |
VCC |
3 |
蓝 |
SDA |
4 |
黄 |
SCL |
手工接线的话:请勿以引线顺序接线,它与座子刚好是反过来的。如拿捏不准,可以用万用表确认一下再接线!
软件代码
- 程序部分则比较简单,用到adafruit_sht31d的库,调用即可读取得到温湿度。
import time
import board
import adafruit_sht31d
i2c = board.I2C()
sensor = adafruit_sht31d.SHT31D(i2c)
print("\033[1mSensor\033[0m = SHT31-D")
print("\033[1mSerial Number\033[0m = ", sensor.serial_number, "\n")
while True:
for i in range(3):
if i == 0:
sensor.repeatability = adafruit_sht31d.REP_LOW
print("\033[1m\033[36mLow Repeatability:\033[0m\n")
if i == 1:
sensor.repeatability = adafruit_sht31d.REP_MED
print("\n\033[1m\033[36mMedium Repeatability:\033[0m\n")
if i == 2:
sensor.repeatability = adafruit_sht31d.REP_HIGH
sensor.clock_stretching = False
print("\n\033[1m\033[36mHigh Repeatability:\033[0m")
print("\033[1m\033[95mClock Stretching:\033[0m \033[92mDisabled\033[0m\n")
for itr in range(3):
print("\033[1mTemperature:\033[0m %0.3f ยบC" % sensor.temperature)
print("\033[1mHumidity:\033[0m %0.2f %%" % sensor.relative_humidity, "\n")
time.sleep(1)
time.sleep(8)
程序调试
- SHT30传感器本身的调试不复杂,主要是前期动手接线,搭建硬件正确,则调通很快!
- 若出现问题,采用万用表查电源,用逻辑分析仪检查I2C上面的信号,检查Sensor的I2C地址和ACK信号即可
- 针对SHT3X/4X系列传感器,若期望了解更多细节,可以参考芯片datasheet说明手册,里面对于操作命令,对于单次读取/周期采样读取都有比较详细的说明。
- 下一步,计划把SD卡调试起来,可以把传感器log数据以文件方式写在存储卡上。