当前位置: 首页 > news >正文

物联网AI MicroPython传感器学习 之 SHT3X温湿度传感器

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

Sensirion SHT3x-DIS湿度和温度传感器基于CMOSens®传感器芯片,更加智能、可靠,精度更高。SHT3x-DIS具有增强的信号处理能力、两个独特的用户可选I2C地址,通信速度高达1MHz。SHT35-DIS的典型相对湿度 (RH) 精度为±1.5%,典型温度精度为±0.2°C。SHT3x-DIS具有2.5mm x 2.5mm x 0.9mm(长x宽x高)占位面积,电源电压范围为2.4V至5.5V。
image.png

二、技术参数

  • 供电电压:2.4V~5.5V
  • I2C接口,通信速度高达1MHz,具有两个用户可选地址
  • 完全校准、线性化和温度补偿的数字输出
  • 启动和测量速度极快
  • 湿度精度:0 ~ 100%,精度为±2%RH
  • 温度精度:-40度~125度,精度±0.3℃
  • 封装:DFN-8,2.5mm * 2.5mm 0.9mm

三、软件接口

SHT3X(i2cObj) - 创建SHT3X驱动对象

  • 函数原型:
    sht3xObj = SHT3X(i2cObj)
  • 参数说明:
参数类型必选参数?说明
i2cObjI2C传入I2C对象
  • 返回值: SHT3X对象成功,返回SHT3X对象;SHT3X对象创建失败,抛出Exception
  • 示例代码:
from machine import I2C,Pin          # 驱动库
import sht3x                         # SHT3X-DIS温湿度传感器驱动库i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
humitureDev = sht3x.SHT3X(i2cObj)   # 初始化SHT3X-DIS传感器
print("sht3x inited!")

• 输出:

sht3x inited!

getTemperature - 测量温度

  • 函数功能: 量测周围温度并返回测量结果
  • 函数原型:
    SHT3X.getTemperature()
  • 参数说明: 无
  • 返回值: 成功返回温度测量结果(数据类型:浮点型;单位:摄氏度);失败抛出Exception
  • 示例:
from machine import I2C,Pin          # 驱动库
import sht3x                         # SHT3X-DIS温湿度传感器驱动库i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
humitureDev = sht3x.SHT3X(i2cObj)   # 初始化SHT3X-DIS传感器
print("sht3x inited!")
temp = humitureDev.getTemperature()
print("temperature is ", temp, "°C")
  • 输出:
sht3x inited!
temperature is 25.3°C

getHumidity - 测量相对湿度

  • 函数功能:

    量测周围相对湿度并返回测量结果
    
  • 函数原型:
    SHT3X.getHumidity()

  • 参数说明:

  • 返回值:

    成功返回相对湿度测量结果(数据类型:整型;单位:%RH);失败抛出Exception
    
  • 示例:

from machine import I2C,Pin          # 驱动库
import sht3x                         # SHT3X-DIS温湿度传感器驱动库i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
humitureDev = sht3x.SHT3X(i2cObj)   # 初始化SHT3X-DIS传感器
print("sht3x inited!")
humi = humitureDev.getHumidity()
print("humidity is ", humi, "%H")
  • 输出:
sht3x inited!
humidity is 60%H

getTempHumidity - 量测温度相对湿度

  • 函数功能:

    同时量测周围温度和相对湿度并返回测量结果
    
  • 函数原型:
    SHT3X.getTempHumidity()

  • 参数说明:

  • 返回值:

    成功返回温度和相对湿度测量结果(数据类型:数组,[温度值, 相对湿度值];温度单位:摄氏度;相对湿度单位:%RH);失败抛出Exception
    
  • 示例:

from machine import I2C,Pin          # 驱动库
import sht3x                         # SHT3X-DIS温湿度传感器驱动库i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
humitureDev = sht3x.SHT3X(i2cObj)   # 初始化SHT3X-DIS传感器
print("sht3x inited!")
data = humitureDev.getTempHumidity()
print("temperature is ", data[0], "°C")
print("humidity is ", data[1], "%H")
  • 输出:
sht3x inited!
temperature is 25.3°C
humidity is 60%H

四、接口案例

  • 示例代码:
import utime                         # 延时API所在组件
from machine import I2C,Pin          # 驱动库
import sht3x                         # SHT3X-DIS温湿度传感器驱动库i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
humitureDev = sht3x.SHT3X(i2cObj)   # 初始化SHT3X-DIS传感器
print("sht3x inited!")
# 通过温湿度传感器读取温湿度信息
def get_temp_humi():temperature = humitureDev.getTemperature()         # 获取温度测量结果humidity = humitureDev.getHumidity()               # 获取相对湿度测量结果print("The temperature is: %.1f" % temperature)print("The humidity is: %d" % humidity)return temperature, humidity                        # 返回读取到的温度值和相对湿度值
if __name__ == '__main__':while True:data = get_temp_humi()                          # 读取温度信息和相对湿度信息utime.sleep(1)                                  # 每隔1秒钟进行一次温湿度信息测量和打印i2cObj.close()                                      # 关闭I2C设备对象
  • 输出:
...
sht3x inited!
The temperature is 25.3°C
The humidity is 60%H
...
The temperature is 25.3°C
The humidity is 60%H
...

五、通信协议

主控芯片和SHT3X-DIS传感器之间通信所用命令字如下表所示:

序号命令字功能说明缩写
10x3780读取芯片序列号CMD_READ_SERIALNBR
20xF32D读取状态寄存器CMD_READ_STATUS
30x3041清除状态寄存器CMD_CLEAR_STATUS
40x306D开启加热功能CMD_HEATER_ENABLE
50x3066关闭加热功能CMD_HEATER_DISABLE
60x30A2软件复位CMD_SOFT_RESET
70x2B32加速响应时间CMD_ART
80x3093停止周期性测量CMD_BREAK
90x2400高频率周期性测量CMD_MEAS_POLLING_H
100x240B中频率周期性测量CMD_MEAS_POLLING_M
110x2416低频率周期性测量CMD_MEAS_POLLING_L

实际控制此传感器的流程可参考如下伪代码。

  • 初始化传感器并开始进行温湿度测量
清除状态寄存器(发送CMD_CLEAR_STATUS)等待20ms发送周期性测量指令(CMD_MEAS_POLLING_H、CMD_MEAS_POLLING_M或CMD_MEAS_POLLING_L)等待20ms
  • 读取温湿度测量结果
发起I2C读取数据(6个字节)的操作将读取到的测量结果转换成实际温室度值

读取到的6个字节格式如下表所示:

字节序号123456
意义温度(高位)温度(低位)温度CRC-8校验值湿度(高位)湿度(低位)

转换过程可以使用如下公式: 温度值 = ((data[0]<<8) | data[1]) _ 0.0015259022 相对湿度值 = -45.0 + ((data[3]<<8) | data[4]) _ 175.0 / (0xFFFF - 1)

  • 停止测量
发送停止周期性测量指令字(CMD_BREAK)

参考文献

[1] SHT3X-DIS温湿度传感器购买链接

http://www.lryc.cn/news/214411.html

相关文章:

  • int* p = new int[5]; int *p = new int[5]();delete[] p; delete p;区别是什么?
  • 数据结构|基础知识定义
  • 物联网AI MicroPython传感器学习 之 MFRC522 RFID射频IC卡感应模块
  • 搭建ES集群
  • Tomcat的日志接收文件catalina.out nohup.out说明
  • 手机ip地址切换后有什么影响
  • C++ 赋值运算重载,const成员,取地址及const取地址操作符重载
  • 嵌入式Linux系统的闪存设备和文件系统学习纪要
  • android 8.1 disable unsupported sensor
  • 二、类与对象(一)
  • 写给所有的程序员,或者努力生活的你。
  • pytorch 笔记:GRU
  • Kubernetes - Ingress HTTP 升级 HTTPS 配置解决方案(新版本v1.21+)
  • Verilog:写流水灯时遇到的问题
  • 操作系统第四章-存储器管理
  • org.springframework.cloud:spring-cloud-starter-openfeign:jar is missing详解
  • Netty第一部
  • 【设计模式】第11节:结构型模式之“装饰器模式”
  • Spire.doc读取模板文档,并在书签处插入内容
  • 性能测试实施流程,5个阶段给老板安排的明明白白!
  • 【教程】R语言生物群落(生态)数据统计分析与绘图
  • 数据库-用户权限管理
  • 十一、W5100S/W5500+RP2040树莓派Pico<ARP 地址解析>
  • 可以直接在线制作电子画册的网站
  • SortableJS:vuedraggable实现元素拖放排序
  • 跟着Nature Communications学作图:纹理柱状图+添加显著性标签!
  • 88. 合并两个有序数组、Leetcode的Python实现
  • 视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频)
  • 论文-分布式-共识,事务以及两阶段提交的历史描述
  • [100天算法】-二叉树剪枝(day 48)