(SKU:SEN0332)SHT31-F 温湿度传感器

来自DFRobot Product Wiki
跳转至: 导航搜索
[SHT31-DIS-F 温湿度传感器]


目录

简介

SHT31-F数字温湿度传感器采用业内知名的瑞士Sensirion公司推出的新一代SHT31-F温湿度传感器芯片。得益于Sensirion的CMOSens®技术,高集成度电容式测湿元件和能隙式测温元件,SHT31-F能够提供极高的可靠性和出色的长期稳定性,具有功耗低、反应快、抗干扰能力强等优点。IIC通讯,兼容3.3V/5V,可以非常容易的集成到智能楼宇、天气站、仓库存储、养殖、孵化等应用场景中。
SHT31-F在SHT3x系列中属于标准版,相比上一代精度更高。传感器在0%RH~100%RH(25℃时)误差仅为±2%RH,传感器在0℃-90℃(典型值)误差仅为±0.2℃。
这款芯片上面还有一层IP67的PTFE膜,可防止传感器开孔接触灰尘,因此允许传感器在恶劣环境条件下使用,如密切接触灰尘可能对传感器的精准性具有影响的地方。由于最小封装和膜的高水气渗透性,相对湿度和温度信号的响应时间与没加膜的传感器所实现的相同。虽然,保护膜可完美防止灰尘的进入,但在一般情况下它不能防止挥发性化学物质的污染。



温湿度偏差参考:
SHT30andSHT31 deviation(CN).png

技术规格

SEN0330 尺寸图
  • 工作电压:2.15~5.5V
  • 工作电流:<1.5mA
  • 湿度测量范围:0%RH~100%RH
  • 湿度测量精度:±2%RH@0%RH~100%RH(25℃时)
  • 温度测量范围:-40℃~125℃
  • 温度测量精度:±0.2℃@0℃~90℃(典型值)
  • 通信接口:IIC
  • 外形尺寸:19mmx16mm
  • 安装孔尺寸:2mm
  • 安装孔间距:15mm


引脚说明

  • SEN0332 View


引脚说明
标号 名称 功能描述
1 SDA 数据线
2 SCL 时钟线
3 GND 电源负极
4 VCC 电源正极
3 INT 报警中断
4 RST 复位


使用教程

准备

关于如何安装库文件,点击链接

  • 主要API接口函数列表
  /**
   * @brief 获取测量到的温度(单位:摄氏度)
   * @return 返回float类型的温度数据
   */
  float getTemperatureC();
  
  /**
   * @brief 获取测量到的温度(单位:华氏度)
   * @return 返回float类型的温度数据
   */
  float getTemperatureF();

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


接线图


SEN0332 与UNO接线图


样例代码1 - 单次测量温湿度模式

单次测量模式:控制板发送一次采集命令,传感器就去采集一次数据。
此模式可以根据需要去读取数据,功耗较低。

/*!
 * @file singleMeasurement.ino
 * @brief Read ambient temperature (C/F) and relative humidity (%RH) in single-read mode.
 * @n Experimental phenomenon: the chip defaults in this mode, we need to send instructions to enable the chip collect data,
 * which means the repeatability of the read needs to be set (the difference between the data measured by the chip under the same measurement conditions)
 * then read the temperature and humidity data and print the data in the serial port.
 * @n Single measure mode: read data as needed, power consumption is relatively low, the chip idle state only costs 0.5mA. 
 * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @licence     The MIT License (MIT)
 * @author [fengli](li.feng@dfrobot.com)
 * @version  V1.0
 * @date  2019-08-21
 * @get from https://www.dfrobot.com
 * @url https://github.com/DFRobot/DFRobot_SHT3x
*/

#include <DFRobot_SHT3x.h>

/*!
 * @brief Construct the function
 * @param pWire IIC bus pointer object and construction device, both can pass or not pass parameters, 
 * Wire in default.
 * @param address Chip IIC address, two optional addresses 0x44 and 0x45(0x45 in default).
 * @param RST RST Chip reset pin, 4 in default.
 * @n IIC address is determined by the pin addr on the chip.
 * @n When the ADR is connected to VDD, the chip IIC address is 0x45.
 * @n When the ADR is connected to GND, the chip IIC address is 0x44.
 */
 
//DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);
DFRobot_SHT3x   sht3x;

void setup() {
  Serial.begin(9600);
  //Initialize the chip
  while (sht3x.begin() != 0) {
    Serial.println("Failed to Initialize the chip, please confirm the wire connection");
    delay(1000);
  }
  /**
   * readSerialNumber Read the serial number of the chip.
   * @return Return 32-digit serial number.
   */
  Serial.print("Chip serial number");
  Serial.println(sht3x.readSerialNumber());
  
  /**
   * softReset Send command resets via IIC, enter the chip's default mode single-measure mode, 
   * turn off the heater, and clear the alert of the ALERT pin.
   * @return Read the register status to determine whether the command was executed successfully, 
   * and return true indicates success.
   */
   if(!sht3x.softReset()){
     Serial.println("Failed to Initialize the chip....");
   }
   
  /**
   * heaterEnable(): Turn on the heater inside the chip to enable the sensor get correct humidity value in wet environments.
   * @return Read the status of the register to determine whether the command was executed successfully,
   * and return true indicates success.
   * @note Heaters should be used in wet environments, and other cases of use will result in incorrect readings
   */

  //if(!sht3x.heaterEnable()){
  // Serial.println("Failed to turn on the heater....");
  //}
  Serial.println("------------------Read adta in single measurement mode-----------------------");
}

void loop() {
  Serial.print("Ambient Temperature(°C/F):");
  /**
   * getTemperatureC Get the meansured temperature(℃).
   * @return Return float temperature data.
   */
  Serial.print(sht3x.getTemperatureC());
  Serial.print(" C/");
  /**
   * getTemperatureF:Get the meansured temperature(℉).
   * @return Return float temperature data.
   */
  Serial.print(sht3x.getTemperatureF());
  Serial.print(" F ");
  Serial.print("Relative Humidity(%RH):");
  /**
   * getHumidityRH: Get the meansured humidity (%RH)
   * @return Return float humidity data
   */
  Serial.print(sht3x.getHumidityRH());
  Serial.println(" %RH");
  
  /**
   * @brief Get temperature and humidity data in single measurement mode.
   * @param repeatability Set repeatability to read temperature and humidity data with the type eRepeatability_t.
   * @note  Optional parameters:
               eRepeatability_High /**In high repeatability mode, the humidity repeatability is 0.10%RH, the temperature repeatability is 0.06°C
               eRepeatability_Medium,/**In medium repeatability mode, the humidity repeatability is 0.15%RH, the temperature repeatability is 0.12°C.
               eRepeatability_Low, /**In low repeatability mode, the humidity repeatability is0.25%RH, the temperature repeatability is 0.24°C
   * @return Return a structure containing celsius temperature (°C), Fahrenheit temperature (°F), relative humidity(%RH), status code.
   * @n Return O indicates right data return.
  DFRobot_SHT3x::sRHAndTemp_t data = sht3x.readTemperatureAndHumidity(sht3x.eRepeatability_High);
  if(data.ERR == 0){
    Serial.print("Ambient Temperature(°C/F):");
    Serial.print(data.TemperatureC);
    Serial.print(" C/");
    Serial.print(data.TemperatureF);
    Serial.print(" F ");
    Serial.print("Relative Humidity(%RH):");
    Serial.print(data.Humidity);
    Serial.println(" %RH");
  }
  */
  delay(1000);
}


结果

串口打印出获取到的温湿度数据
SEN0334 result 1.png


样例代码2 - 周期测量温湿度模式

周期测量模式:传感器按照设定采集频率自动去采集数据。

/*!
 * @file periodicDataReading.ino
 * @brief Read ambient temperature (C/F) and relative humidity (%RH) in cycle read mode.
 * @n Experimental phenomenon: Before we start, please set the read frequency and repeatability of the read
 * (the difference between the data measured by the chip under the same measurement conditions),
 * and enter the periodic read mode, and then read the temperature and humidity data.
 * @n The temperature and humidity data will be printed at the serial port, after 10 seconds of operation.
 * @n It will exit the cycle mode and enter 2 measurement mode: Single measurement mode and Cycle measurement mode.
 * @n Single measurement mode: reflect the difference between the two modes of reading data.
 * @n Cycle measurement mode: the chip periodically monitors temperature and humidity, only in this mode the ALERT pin will work.
 * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @licence     The MIT License (MIT)
 * @author [fengli](li.feng@dfrobot.com)
 * @version  V1.0
 * @date  2019-08-20
 * @get from https://www.dfrobot.com
 * @url https://github.com/DFRobot/DFRobot_SHT3x
*/

#include <DFRobot_SHT3x.h>

/*!
 * @brief Construct the function
 * @param pWire IIC bus pointer object and construction device, can both pass or not pass parameters, Wire in default.
 * @param address Chip IIC address, two optional addresses 0x44 and 0x45(0x45 in default).
 * @param RST Chip reset pin, 4 in default.
 * @n The IIC address is determined by the pin addr on the chip.
 * @n When the ADR is connected to VDD, the chip IIC address is 0x45.
 * @n When the ADR is connected to GND, the chip IIC address is 0x44.
 */
//DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);

DFRobot_SHT3x sht3x;

void setup() {

  Serial.begin(9600);
    //Initialize the chip to detect if it can communicate properly.
  while (sht3x.begin() != 0) {
    Serial.println("Failed to initialize the chip, please confirm the chip connection");
    delay(1000);
  }
  
  /**
   * readSerialNumber Read the serial number of the chip
   * @return Return 32-digit serial number
   */
  Serial.print("chip serial number: ");
  Serial.println(sht3x.readSerialNumber());
  /**
   * softReset Send command resets via IIC, enter the chip's default mode single-measure mode, 
   * turn off the heater, and clear the alert of the ALERT pin.
   * @return Read the status register to determine whether the command was executed successfully, 
   * and return true indicates success.
   */
   if(!sht3x.softReset()){
     Serial.println("Failed to reset the chip");
   }

  /**
   * pinReset Reset through the chip's reset pin, enter the chip's default mode single-measure mode, 
   * turn off the heater, and clear the alert of the ALERT pin.
   * @return The status register has a data bit that detects whether the chip has been reset, 
   * and return true indicates success.
   * @note When using this API, the reset pin of the chip nRESET should be connected to RST (default to pin4) of arduino.
   */
  //if(!sht3x.pinReset()){
    //Serial.println("Failed to reset the chip");
  //}

  /**
   * heaterEnable() Turn on the heater inside the chip so that the sensor can have accurate humidity data even in humid environment.
   * @return Read the status register to determine whether the command was executed successfully, and return true indicates success.
   * @NOTE Heaters should be used in wet environment, and other cases of use will result in incorrect readings.
   */
  //if(!sht3x.heaterEnable()){
    // Serial.println("Failed to turn on the heater");
  //}
  /**
   * startPeriodicMode Enter cycle measurement mode and set repeatability and read frequency.
   * @param measureFreq Read the eMeasureFrequency_t data frequency.
   * @note  Selectable parameters:
               eMeasureFreq_Hz5,   /**the chip collects data in every 2s
               eMeasureFreq_1Hz,   /**the chip collects data in every 1s 
               eMeasureFreq_2Hz,   /**the chip collects data in every 0.5s 
               eMeasureFreq_4Hz,   /**the chip collects data in every 0.25s 
               eMeasureFreq_10Hz   /**the chip collects data in every 0.1s 
   * @param repeatability Read the repeatability of temperature and humidity data, the default parameter is eRepeatability_High.
   * @note  Optional parameters:
               eRepeatability_High /**In high repeatability mode, the humidity repeatability is 0.10%RH, the temperature repeatability is 0.06°C
               eRepeatability_Medium,/**In medium repeatability mode, the humidity repeatability is 0.15%RH, the temperature repeatability is 0.12°C.
               eRepeatability_Low, /**In low repeatability mode, the humidity repeatability is0.25%RH, the temperature repeatability is 0.24°C
   * @return Read the status of the register to determine whether the command was executed successfully, and return true indicates success
   */          
  if(!sht3x.startPeriodicMode(sht3x.eMeasureFreq_1Hz)){
    Serial.println("Failed to enter the periodic mode");
  }
  Serial.println("------------------Read data in cycle measurement mode-----------------------");
}

void loop() {

  Serial.print("Ambient temperature(°C/F):");
  /**
   * getTemperatureC Get the measured temperature (in degrees Celsius).
   * @return Return the float temperature data.
   */
  Serial.print(sht3x.getTemperatureC());
  Serial.print(" C/");
  /**
   * getTemperatureF Get the measured temperature (in degrees Fahrenheit).
   * @return Return the float temperature data. 
   */
  Serial.print(sht3x.getTemperatureF());
  Serial.print(" F ");
  Serial.print("Relative humidity(%RH):");
  /**
   * getHumidityRH Get measured humidity(%RH)
   * @return Return the float humidity data
   */
  Serial.print(sht3x.getHumidityRH());
  Serial.println(" %RH");
  //Please adjust the frequency of reading according to the frequency of the chip collection data.
  //The frequency to read data must be greater than the frequency to collect the data, otherwise the returned data will go wrong.
  delay(100);
  if(millis() > 10000 && millis() < 10200){
    /**
     * stopPeriodicMode() Exit from the cycle read data
     * @return Read the status of the register to determine whether the command was executed successfully, 
     * and return true indicates success.
     */
    sht3x.stopPeriodicMode();
    Serial.println("Exited from the cycle measurement mode, enter the single measurement mode");
  }
  /**
   * readTemperatureAndHumidity Get temperature and humidity data in cycle measurement mode and use structures to receive data
   * @return Return a structure containing celsius temperature (°C), Fahrenheit temperature (°F), relative humidity (%RH), status code.
   * @n A status of 0 indicates that the right return data.
   
  DFRobot_SHT3x::sRHAndTemp_t data = sht3x.readTemperatureAndHumidity();
  if(data.ERR == 0){
    Serial.print("ambient temperature(°C/F):");
    Serial.print(data.TemperatureC);
    Serial.print("C/");
    Serial.print(data.TemperatureF);
    Serial.print("F");
    Serial.print("relative humidity(%RH):");
    Serial.print(data.Humidity);
    Serial.println("%RH");
  }
  */
}


结果

串口前10S打印周期测量模式下获取的温湿度数据,10S后退出周期测量模式,进入单次测量模式,打印单次测量模式下获取的温湿度数据。
SEN0334 result 2.png


样例代码3 - 温湿度报警

设定温湿度阈值,超出了自定义的阈值时,INT引脚就会产生报警信号。

本样例需要将传感器的INT引脚连接到主控板相应的中断引脚。请参照样例中的中断关系表连接引脚。

注意:只能在周期测量模式下报警引脚才能正常工作

/*!
 * @file alert.ino
 * @brief Temperature and humidity over-threshold alarm.
 * @n Experimental phenomenon: The user can customize the temperature and humidity thresholds, 
 * and the ALERT pin generates an alarm signal once the values exceed the user-defined threshold.
 * @n NOTE: The ALERT pin on the sensor should be connected to the interrupt pin on the main panel when using this function.
 * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @licence  The MIT License (MIT)
 * @author [fengli](li.feng@dfrobot.com)
 * @version  V1.0
 * @date  2019-08-26
 * @get from https://www.dfrobot.com
 * @url https://github.com/DFRobot/DFRobot_SHT3x
 */

#include <DFRobot_SHT3x.h>
/*!
 * @brief Construct the function
 * @param pWire IIC bus pointer object and construction device, can both pass or not pass parameters, Wire in default.
 * @param address Chip IIC address, two optional addresses 0x44 and 0x45(0x45 in default).
 * @param RST Chip reset pin, 4 in default.
 * @n IIC address is determined by the pin addr on the chip.
 * @n When the ADR is connected to VDD, the chip IIC address is 0x45.
 * @n When the ADR is connected to GND, the chip IIC address is 0x44.
 */
//DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);

DFRobot_SHT3x sht3x;
//The non-alarm status of the alert pin is low;
volatile  int alertState = 0;
void alert(){
  alertState = 1 - alertState;
}
void setup() {
  Serial.begin(9600);
  #ifdef ARDUINO_ARCH_MPYTHON 
  /*                    The Correspondence Table of ESP32 Interrupt Pins And Terminal Numbers
   * -----------------------------------------------------------------------------------------------------
   * |            |  DigitalPin  | P0-P20 can be used as an external interrupt                           |
   * |    esp32   |--------------------------------------------------------------------------------------|
   * |            | Interrupt No |  DigitalPinToInterrupt (Pn) can be used to query the interrupt number |
   * |---------------------------------------------------------------------------------------------------|
   */
  attachInterrupt(digitalPinToInterrupt(P16)/*Query the interrupt number of the P16 pin*/,alert,CHANGE);
  //Open esp32's P16 pin for external interrupt, bilateral edge trigger, ALERT connected to P16
  #else
  /*    The Correspondence Table of AVR Series Arduino Interrupt Pins And Terminal Numbers
   * ---------------------------------------------------------------------------------------
   * |                                        |  DigitalPin  | 2  | 3  |                   |
   * |    Uno, Nano, Mini, other 328-based    |--------------------------------------------|
   * |                                        | Interrupt No | 0  | 1  |                   |
   * |-------------------------------------------------------------------------------------|
   * |                                        |    Pin       | 2  | 3  | 21 | 20 | 19 | 18 |
   * |               Mega2560                 |--------------------------------------------|
   * |                                        | Interrupt No | 0  | 1  | 2  | 3  | 4  | 5  |
   * |-------------------------------------------------------------------------------------|
   * |                                        |    Pin       | 3  | 2  | 0  | 1  | 7  |    |
   * |    Leonardo, other 32u4-based          |--------------------------------------------|
   * |                                        | Interrupt No | 0  | 1  | 2  | 3  | 4  |    |
   * |--------------------------------------------------------------------------------------
   */
  /*                      The Correspondence Table of micro:bit Interrupt Pins And Terminal Numbers
   * ---------------------------------------------------------------------------------------------------------------------------------------------
   * |             micro:bit                       | DigitalPin |P0-P20 can be used as an external interrupt                                     |
   * |  (When using as an external interrupt,      |---------------------------------------------------------------------------------------------|
   * |no need to set it to input mode with pinMode)|Interrupt No|Interrupt number is a pin digital value, such as P0 interrupt number 0, P1 is 1 |
   * |-------------------------------------------------------------------------------------------------------------------------------------------|
   */
  attachInterrupt(/*Interrupt No*/0,alert,CHANGE);//Open the external interrupt 0, connect ALERT to the digital pin of the main control: 
     //UNO(2), Mega2560(2), Leonardo(3), microbit(P0).
  #endif
    //Initialize the chip to detect if it can communicate properly
  while (sht3x.begin() != 0) {
    Serial.println("The initialization of the chip is failed, please confirm whether the chip connection is correct");
    delay(1000);
  }
  /**
   * readSerialNumber Read the serial number of the chip
   * @return Return 32-digit serial number
   */
  Serial.print("The chip serial number");
  Serial.println(sht3x.readSerialNumber());
  /**
   * softReset Send command resets via iiC, enter the chip's default mode single-measure mode, turn off the heater, 
   * and clear the alert of the ALERT pin.
   * @return Read the status register to determine whether the command was executed successfully, and returning true indicates success.
   */
  if(!sht3x.softReset()){
     Serial.println("Failed to reset the chip");
   }
  /**
   * @brief All flags (Bit 15, 11, 10, 4) in the status register can be cleared (set to zero).
   * @n ALERT can work properly only when the bit:15 is set to 0, otherwise it will remain high.
   */
  sht3x.clearStatusRegister();
  /**
   * startPeriodicMode Enter cycle measurement mode and set repeatability, read frequency, and only in this mode ALERT can work.
   * @param measureFreq Read the data frequency, data type eMeasureFrequency_t
   * @note  Selectable parameters:
               eMeasureFreq_Hz5,   /**the chip collects data in every 2s
               eMeasureFreq_1Hz,   /**the chip collects data in every 1s 
               eMeasureFreq_2Hz,   /**the chip collects data in every 0.5s 
               eMeasureFreq_4Hz,   /**the chip collects data in every 0.25s 
               eMeasureFreq_10Hz   /**the chip collects data in every 0.1s 
   * @param repeatability Read the repeatability of temperature and humidity data, the default parameter is eRepeatability_High.
   * @note  Optional parameters:
               eRepeatability_High /**In high repeatability mode, the humidity repeatability is 0.10%RH, the temperature repeatability is 0.06°C
               eRepeatability_Medium,/**In medium repeatability mode, the humidity repeatability is 0.15%RH, the temperature repeatability is 0.12°C.
               eRepeatability_Low, /**In low repeatability mode, the humidity repeatability is0.25%RH, the temperature repeatability is 0.24°C
   * @return Read the status of the register to determine whether the command was executed successfully, and return true indicates success.
   */
  if(!sht3x.startPeriodicMode(sht3x.eMeasureFreq_10Hz)){
    Serial.println("Failed to enter the periodic mode");
  }
  /**
   * setTemperatureLimitC Set the threshold temperature and alarm clear temperature(°C)
   * setTemperatureLimitF Set the threshold temperature and alarm clear temperature(°F)
   * @param highset High temperature alarm point, when the temperature is greater than this value, the ALERT pin generates an alarm signal.
   * @param highClear High temperature alarm clear point, alarming when the temp higher than the highset, otherwise the alarm signal will be cleared.
   * @param lowset Low temperature alarm point, when the temperature is lower than this value, the ALERT pin generates an alarm signal.
   * @param lowclear Low temperature alarm clear point, alarming when the temp lower than the highset, otherwise the alarm signal will be cleared.
   * @note The filled value should be an integer (range: -40 to 125 degrees Celsius), -40 to 257 (Fahrenheit)highset>highClear>lowclear>lowset)
   */
  //sht3x.setTemperatureLimitF(/*highset=*/35,/*highClear=*/34,/*lowSet=*/18,/*lowClear=*/20)
  if(sht3x.setTemperatureLimitC(/*highset=*/35,/*highClear=*/34,/*lowSet=*/18,/*lowClear=*/20) != 0){
    Serial.println("Failed to set the temperature limit");
  }
  /**
   * setHumidityLimitRH Set the relative humidity threshold temperature and the alarm clear humidity(%RH)
   * @param highset High humidity alarm point, when the humidity is greater than this value, the ALERT pin generates an alarm signal.
   * @param highClear High humidity alarm clear point, alarming when the humidity higher than the highset, otherwise the alarm signal will be cleared.
   * @param lowset Low humidity alarm point, when the humidity is lower than this value, the ALERT pin generates an alarm signal.
   * @param lowclear Low humidity alarm clear point, alarming when the humidity lower than the highset, otherwise the alarm signal will be cleared.
   * @note The filled value should be an integer (range: 0 - 100 %RH,highset>highClear>lowclear>lowset) 
   */
  if(sht3x.setHumidityLimitRH(/*highset=*/70,/*highClear=*/68,/*lowSet=*/19,/*lowClear=*/20) != 0){
    Serial.println("Failed to set the humidity limit");
  }
  //Serial.println(F("string") Save stings to flash to save the dynamic ram when compiling.
  Serial.println(F("----------------------Alarm Detection-------------------------------"));
  Serial.println(F("Alarms raised when temp and humidity are out of the threshold range. Please connect ALERT to the main control board interrupt pin"));
  Serial.println(F("-Different main contorl UNO(2), Mega2560(2), Leonardo(3), microbit(P0), mPython(P16)----"));
  Serial.println(F("----------------------the humidity limit(%RH)-----------------------------------"));
  /**
   * @brief Measure relative humidity threshold temperature and alarm clear humidity
   * @return Return true indicates successful data acquisition
   */
  if(sht3x.measureHumidityLimitRH()){
    Serial.print("high set:");
    //getHumidityHighSetRH() Get the high humidity alarm point
    Serial.print(sht3x.getHumidityHighSetRH());
    Serial.print("               low clear:");
    //getHumidityHighClearRH() Get the high humidity alarm clear point
    Serial.println(sht3x.getHumidityLowClearRH());
    Serial.print("high clear:");
    //getHumidityLowClearRH() Get the low humidity alarm clear point
    Serial.print(sht3x.getHumidityHighClearRH());
    Serial.print("               low set:");
    //getHumidityLowSetRH() Get the low humidity alarm point
    Serial.println(sht3x.getHumidityLowSetRH());
  } else {
    Serial.println("Failed to get the humidity limit");
  }
  /**
   * measureTemperatureLimitC Measure the threshold temperature and alarm clear temperature(°C)
   * measureTemperatureLimitF Measure the threshold temperature and alarm clear temperature(°F)
   * @return Return true indicates successful data acquisition
   */
  Serial.println("----------------------temperature limit(°C)---------------------------------");
  //Serial.println(F("----------------------temperature limit(°F)---------------------------------"));
  if(sht3x.measureTemperatureLimitC()){
    Serial.print("high set:");
    //getTemperatureHighSetC() Get high temperature alarm points(°C)
    //getTemperatureHighSetF() Get high temperature alarm points(°F)
    Serial.print(sht3x.getTemperatureHighSetC());
    Serial.print("               low clear:");
    //getTemperatureHighClearC() Get high temperature alarm clear points(°C)
    //getTemperatureHighClearF() Get high temperature alarm clear points(°F))
    Serial.println(sht3x.getTemperatureLowClearC());
    Serial.print("high clear:");
    //getTemperatureLowClearC() Get low temperature alarm clear points(°C)
    //getTemperatureLowClearF() Get low temperature alarm clear points(°F)
    Serial.print(sht3x.getTemperatureHighClearC());
    Serial.print("               low set:");
    //getTemperatureLowSetC() Get low temperature alarm points(°C)
    //getTemperatureLowSetF() Get low temperature alarm points(°F)
    Serial.println(sht3x.getTemperatureLowSetC());
    Serial.println("------------------------------------------------------------------");
  } else {
    Serial.println("Failed to get temperature limit");
  }
  /**
   * readAlertState Read the status of the ALERT pin.
   * @return High returns 1, low returns 0.
   */
  //To initialize the state of ALERT
  if(sht3x.readAlertState() == 1){
    alertState = 1;
  } else {
    alertState = 0;
  }
}   
void loop() {
  Serial.print("environment temperature(°C/F):");
  /**
   * getTemperatureC Get the measured temperature (in degrees Celsius)
   * @return Return temperature data of the type float
   */
  Serial.print(sht3x.getTemperatureC());
  Serial.print(" C/");
  /**
   * getTemperatureF Get the measured temperature (in degrees Celsius)
   * @return Return temperature data of the type float
   */
  Serial.print(sht3x.getTemperatureF());
  Serial.print(" F      ");
  Serial.print("relative humidity(%RH):");
  /**
   * getHumidityRH Get measured humidity (in %RH)
   * @return Return humidity data of the type float
   */
  Serial.print(sht3x.getHumidityRH());
  Serial.println(" %RH");
  //The read data frequency should greater than the frequency to collect data, otherwise the return data will make errors.
  if(alertState == 1){
    /**
     * @brief Determine if the temperature and humidity are out of the threshold range
     * @return Return the status code, representing as follows
     * @n 01 Indicates that the humidity exceeds the lower threshold range
     * @n 10 Indicates that the temperature exceeds the lower threshold range
     * @n 11 Indicates that both the humidity and the temperature exceed the lower threshold range
     * @n 02 Indicates that the humidity exceeds the upper threshold range
     * @n 20 Indicates that the temperature exceeds the upper threshold range
     * @n 22 Indicates that both the humidity and the temperature exceed the upper threshold range
     * @n 12 Indicates that the temperature exceeds the lower threshold range,
     //and the humidity exceeds the upper threshold range
     * @n 21 Indicates that the temperature exceeds the upper threshold range,
     //and the humidity exceeds the lower threshold range
     * @n 0  Back to normal, but the alarm is not cleared.
     */
    uint8_t state = sht3x.environmentState();
    //Serial.println(F("string") Save stings to flash to save the dynamic ram when compiling.
    if(state == 1)  Serial.println(F("The humidity exceeds the lower threshold range!"));
    else if(state == 10)  Serial.println(F("The temperature exceeds the lower threshold range!"));
    else if(state == 11)  Serial.println(F("The humidity and the temperature exceed the lower threshold range!"));
    else if(state == 2)   Serial.println(F("The humidity exceeds the upper threshold range!"));
    else if(state == 20)  Serial.println(F("The temperature exceeds the upper threshold range!"));
    else if(state == 22)  Serial.println(F("The humidity and the temperature exceed the upper threshold range!"));
    else if(state == 12)  Serial.println(F("The temperature exceeds the lower threshold range,the humidity exceeds the upper threshold range!"));
    else if(state == 21)  Serial.println(F("The temperature exceeds the upper threshold range, and the humidity exceeds the lower threshold range!"));
    else Serial.println(F("T&H back to normal, but the alarm is not cleared!"));
  } else {
    Serial.println(F("T&H in normal range, alarm cleared"));
  }
  delay(1000);
}


结果

SEN0334 result 3.png

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!


更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。


更多


DFshopping car1.png DFRobot商城购买链接

个人工具
名字空间

变换
操作
导航
工具箱