1 Star 1 Fork 0

DFRobot/DFRobot_SHT3x

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

DFRobot_SHT3x

SHT3x系列芯片用于测量环境温度和相对湿度(空气中的潮湿程度,它表示大气中水汽含量距离大气饱和的程度),它是SHT2x系列的继承者,包括低成本版本SHT30、标准版本SHT31,以及高端版本SHT35
SHT3x系列温湿度传感器通过IIC通信,使用比较方便,工作电压范围宽(2.15至5.5 V),芯片封装的占位面积
为2.5 × 2.5 mm2,高度为0.9 mm,这有助于SHT3x集成到多种应用,适合各类场景
SHT3x建立在全新和优化的CMOSens® 芯片之上,进一步提高了产品可靠性和精度规格。SHT3x提供了一系列新功能,
如增强信号处理、两个独特的用户可选的I2C地址、一个可编程温湿度极限的报警模式,以及高达1 MHz的通信速度
在使用过程中可选择是否打开加热器
加热器作用:
①通过比较加热前后测出的相对湿度值及温度值,可确定传感器是否正常工作;
②在潮湿环境下使用加热器,可避免传感器凝露;
③测量露点温度(空气中的水蒸气变为露珠时候的温度)时也需要使用加热器。
SHT3x芯片提供两种工作模式:
1.单次测量模式,此模式下空闲状态电流为0.2微安,功耗较低(测量数据时600 微安).
2.周期测量模式,此模式下空闲状态电流为45微安,此模式下ALERT开始工作(测量数据时600 微安).
以下是芯片典型的测量精度(@后面是在此温湿度范围下):

版本号 典型温度精度 (°C) 典型湿度精度 (%RH) 测量范围(温度/湿度)
SHT30 ±0.2 @0-65 °C ±2 @10-90% RH -40-125 °C/0-100 %RH
SHT31 ±0.2 @0-90 °C ±2 @0-100% RH -40-125 °C/0-100 %RH
SHT35 ±0.1 @20-60 °C ±1.5 @0-80% RH -40-125 °C/0-100 %RH

Product Image Product Image Product Image Product Image Product Image

产品链接(https://www.dfrobot.com.cn/goods-2695.html)

SEN0330:Fermion: SHT30数字温湿度传感器
SEN0331:Fermion: SHT31数字温湿度传感器
SEN0332:Fermion: SHT31-F数字温湿度传感器
SEN0333:Fermion: SHT35-F数字温湿度传感器(Breakout)
SEN0334:Gravity: SHT31-F数字温湿度传感器

目录

概述

1.在单次测量模式下读取环境温湿度,用户可以选择测量的可重复性(芯片在两次相同测量条件下测量到的数据的差值)
可重复性越高,差值越小,数据越可靠
2.在周期测量模式下读取环境温湿度,用户可以选择测量的可重复性和测量频率(0.5Hz,1Hz,2Hz,4Hz,10Hz)
3.利用ALERT引脚和Arduino的中断引脚达到温湿度超阈值报警的效果,用户可自定义阈值大小

库安装

要使用这个库,首先下载库文件,将其粘贴到\Arduino\libraries目录中,然后打开示例文件夹并在文件夹中运行演示程序。

方法


/**
 * @fn readSerialNumber
 * @brief 读取芯片的序列号
 * @return 返回32位序列号
 */
uint32_t  readSerialNumber();

/**
 * @fn begin
 * @brief 初始化函数
 * @return 返回0表示初始化成功,返回其他值表示初始化失败,返回错误码
 */
int begin();

/**
 * @fn softReset
 * @brief 通过IIC发送命令复位,进入芯片的默认模式单次测量模式,关闭加热器,并清除ALERT引脚的警报。
 * @return 通过读取状态寄存器来判断命令是否成功被执行,返回true则表示成功
 */
bool softReset();

/**
 * @fn pinReset
 * @brief 通过芯片的复位引脚进行复位,进入芯片的默认模式单次测量模式,并清除ALERT引脚的警报。
 * @return 状态寄存器有一数据位能检测芯片是否进行了复位,返回true则表示成功
 */
bool pinReset();

/**
 * @fn readTemperatureAndHumidity
 * @brief 在单次测量模式下获取温湿度数据
 * @param repeatability 设置读取温湿度数据的可重复性,eRepeatability_t类型的数据
 * @return 返回包含摄氏温度(°C),华氏温度(°F),相对湿度(%RH),状态码的结构体
 * @n 状态为0表示返回数据正确
 */
sRHAndTemp_t readTemperatureAndHumidity(eRepeatability_t repeatability );

/**
 * @fn getTemperatureC
 * @brief 获取测量到的温度(单位:摄氏度)
 * @return 返回float类型的温度数据
 */
float getTemperatureC();

/**
 * @fn getTemperatureF
 * @brief 获取测量到的温度(单位:华氏度)
 * @return 返回float类型的温度数据
 */
float getTemperatureF();

/**
 * @fn getHumidityRH
 * @brief 获取测量到的湿度(单位:%RH)
 * @return 返回float类型的湿度数据
 */
float getHumidityRH();

/**
 * @fn startPeriodicMode
 * @brief 进入周期测量模式,并设置可重复性(芯片在两次相同测量条件下测量到的数据的差值)、读取频率。
 * @param measureFreq  读取数据的频率,eMeasureFrequency_t类型的数据
 * @param repeatability 设置读取温湿度数据的可重复性,eRepeatability_t类型的数据,默认为eRepeatability_High(高重复性)
 * @return 返回true表示进入周期模式成功。
 */
bool startPeriodicMode(eMeasureFrequency_t measureFreq,eRepeatability_t repeatability = eRepeatability_High);

/**
 * @fn readTemperatureAndHumidity
 * @brief 在周期测量模式下获取温湿度数据.
 * @return 返回包含摄氏温度(°C),华氏温度(°F),相对湿度(%RH),状态码的结构体
 * @n 状态为0表示返回数据正确
 */
sRHAndTemp_t readTemperatureAndHumidity();

/**
 * @fn stopPeriodicMode
 * @brief 从周期读取数据模式退出。
 * @return 通过读取状态寄存器来判断命令是否成功被执行,返回true则表示成功
 */
bool stopPeriodicMode();

/**
 * @fn heaterEnable
 * @brief 打开芯片里面的加热器.
 * @return 通过读取状态寄存器来判断命令是否成功被执行,返回true则表示成功
 * @note 加热器的使用条件,应是在潮湿环境时,若正常情况下使用则会造成读数不准.
 */
bool heaterEnable();

/**
 * @fn heaterDisable
 * @brief 关闭芯片里面的加热器.
 * @return 通过读取状态寄存器来判断命令是否成功被执行,返回true则表示成功
 * @note 加热器的使用条件,应是在潮湿环境时,若正常情况下使用则会造成读数不准.
 */
bool heaterDisable();

/**
 * @fn clearStatusRegister
 * @brief All flags (Bit 15, 11, 10, 4) in the status register can be cleared (set to zero)
 * @n  把bit:15 设置为0后ALERT引脚才能正常工作,否则将一直处于高电平。
 */
void clearStatusRegister();

/**
 * @fn readAlertState
 * @brief 读取ALERT引脚的状态.
 * @return 高电平则返回1,低电平则返回0.
 */
bool readAlertState();

/**
 * @fn environmentState
 * @brief 判断温湿度超出阈值范围的情况 
 * @return 返回状态码,状态码代表含义如下:
 * @n 01 :表示湿度超过下阈值范围
 * @n 10 :表示温度超过下阈值范围
 * @n 11 :表示温湿度都超过下阈值范围
 * @n 02 :表示湿度超过上阈值范围
 * @n 20 :表示温度超过上阈值范围
 * @n 22 :表示温湿度都超过上阈值范围
 * @n 12 :表示温度超过下阈值范围,湿度超过上阈值范围
 * @n 21 :表示温度超过上阈值范围,湿度超过下阈值范围
 */
uint8_t environmentState();

/**
 * @fn setTemperatureLimitC
 * @brief 设置温度阈值温度和警报清除温度(°C)
 * @param highset 高温报警点,当温度大于此值时ALERT引脚产生报警信号。
 * @param highClear 高温警报清除点,当温度大于highset产生报警信号,而温度小于此值报警信号则被清除。
 * @param lowset 低温报警点,当温度小于此值时ALERT引脚产生报警信号。
 * @param lowclear 低温警报清除点,当温度小于lowset产生报警信号,而温度大于此值时报警信号则被清除
 * @note 范围:-40 到 125 ,highset>highClear>lowclear>lowset。 
 * @return 返回0则表示设置成功.
 */
uint8_t  setTemperatureLimitC(float highset,float highclear,float lowset,float lowclear);

/**
 * @fn setTemperatureLimitF
 * @brief 设置温度阈值温度和警报清除温度(°F)
 * @param highset 高温报警点,当温度大于此值时ALERT引脚产生报警信号。
 * @param highClear 高温警报清除点,当温度大于highset产生报警信号,而温度小于此值报警信号则被清除。
 * @param lowset 低温报警点,当温度小于此值时ALERT引脚产生报警信号。
 * @param lowclear 低温警报清除点,当温度小于lowset产生报警信号,而温度大于此值时报警信号则被清除。
 * @note 范围:-40 到 257 ,highset>highClear>lowclear>lowset。 
 * @return 返回0则表示设置成功.
 */
uint8_t  setTemperatureLimitF(float highset,float highclear, float lowset,float lowclear);

/**
 * @fn setHumidityLimitRH
 * @brief 设置相对湿度阈值温度和警报清除湿度(%RH)
 * @param highset 高湿度报警点,当相对湿度大于此值时ALERT引脚产生报警信号。
 * @param highClear 高湿度警报清除点,当相对湿度大于highset产生报警信号,而相对湿度小于此值报警信号则被清除。
 * @param lowset 低湿度报警点,当相对湿度小于此值时ALERT引脚产生报警信号。
 * @param lowclear 低湿度警报清除点,当相对湿度小于lowset产生报警信号,而相对湿度大于此值时报警信号则被清除。
 * @note 范围:0 - 100 %RH,highset>highClear>lowclear>lowset。
 * @return 返回0则表示设置成功.
 */
uint8_t setHumidityLimitRH(float highset,float highclear, float lowset,float lowclear);

/**
 * @fn measureTemperatureLimitC
 * @brief 测量温度阈值温度和警报清除温度
 * @return 返回true 表示数据获取成功
 */
bool measureTemperatureLimitC();

/**
 * @fn getTemperatureHighSetC
 * @brief 获取高温报警点温度(°C)
 * @return 返回高温报警点温度
 */
float getTemperatureHighSetC();

/**
 * @fn getTemperatureHighClearC
 * @brief 获取高温警报清除点温度(°C)
 * @return 返回高温警报清除点温度
 */
float getTemperatureHighClearC();

/**
 * @fn getTemperatureLowClearC
 * @brief 获取低温警报清除点温度(°C)
 * @return 返回低温警报清除点温度
 */
float getTemperatureLowClearC();

/**
 * @fn getTemperatureLowSetC
 * @brief 获取低温报警点温度(°C)
 * @return 返回低温报警点温度
 */
float getTemperatureLowSetC();

/**
 * @fn measureTemperatureLimitF
 * @brief 测量相对湿度阈值温度和警报清除湿度
 * @return 返回true 表示数据获取成功
 */
bool measureTemperatureLimitF();

/**
 * @fn getTemperatureHighSetF
 * @brief 获取高温报警点温度(°F)
 * @return 返回高温报警点温度
 */
float getTemperatureHighSetF();

/**
 * @fn getTemperatureHighClearF
 * @brief 获取高温警报清除点温度(°F)
 * @return 返回高温警报清除点温度
 */
float getTemperatureHighClearF();

/**
 * @fn getTemperatureLowClearF
 * @brief 获取低温警报清除点温度(°F)
 * @return 返回低温警报清除点温度
 */
float getTemperatureLowClearF();

/**
 * @fn getTemperatureLowSetF
 * @brief 获取低温报警点温度(°F)
 * @return 返回低温报警点温度
 */
float getTemperatureLowSetF();

/**
 * @fn measureHumidityLimitRH
 * @brief 读取相对湿度阈值温度和警报清除湿度
 * @return 返回true 表示数据获取成功
 */
bool measureHumidityLimitRH();

/**
 * @fn getHumidityHighSetRH
 * @brief 获取高湿度报警点湿度(%RH)
 * @return 返回高湿度报警点湿度
 */
float getHumidityHighSetRH();

/**
 * @fn getHumidityHighClearRH
 * @brief 获取高湿度警报清除点湿度(%RH)
 * @return 返回高湿度警报清除点湿度
 */
float getHumidityHighClearRH();

/**
 * @fn getHumidityLowClearRH
 * @brief 获取低湿度警报清除点湿度(%RH)
 * @return 返回低湿度警报清除点湿度
 */
float getHumidityLowClearRH();

/**
 * @fn getHumidityLowSetRH
 * @brief 获取低湿度报警点湿度(v)
 * @return 返回低湿度报警点湿度
 */
float getHumidityLowSetRH();


兼容性

主板 通过 未通过 未测试 备注
Arduino uno
Mega2560
Leonardo
ESP32
micro:bit

兼容性

  • 2019/08/25 - 1.0.0 版本

创作者

Written by fengli(li.feng@dfrobot.com), 2019.8.25 (Welcome to our website)

Copyright 2010 DFRobot Co.Ltd Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

暂无描述 展开 收起
C++ 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/dfrobot/DFRobot_SHT3x.git
git@gitee.com:dfrobot/DFRobot_SHT3x.git
dfrobot
DFRobot_SHT3x
DFRobot_SHT3x
master

搜索帮助