Grove - 温湿度传感器(SHT31)

Grove - 温湿度传感器(SHT31) 是一款高可靠性、高精度、快速响应的集成温湿度传感器。该模块中使用的传感器(芯片)采用 Sensirion 的 CMOSens® 技术设计。该芯片经过良好的校准、线性化和补偿,可提供数字输出。
该模块的典型精度可达到 ±2%RH(相对湿度)和 ±0.3°C(温度)。该模块兼容 3.3V 和 5V 电压,因此不需要电压电平转换器。该模块使用 I2C 串行总线进行通信,工作速度可达 1 MHz。我们还提供了高度抽象的库,使该产品更易于使用。
使用该传感器很简单。对于 Seeeduino(兼容 Arduino),只需通过 Grove 线缆 将此分线板与主控板连接即可。然后使用 GitHub 上提供的库和示例/演示代码来获取数据。如果您使用的是没有 Base Shield 的 Arduino,只需将 VIN 引脚连接到 5V 电压引脚,GND 连接到地,SCL 连接到 I2C 时钟(模拟引脚 5),SDA 连接到 I2C 数据(模拟引脚 4)。
可升级为工业传感器
使用 SenseCAP S2110 控制器 和 S2100 数据记录器,您可以轻松将 Grove 转换为 LoRaWAN® 传感器。Seeed 不仅帮助您进行原型设计,还为您提供了使用 SenseCAP 系列坚固的工业传感器扩展项目的可能性。
SenseCAP S210x 系列工业传感器为环境感知提供开箱即用的体验。请参考具有更高性能和鲁棒性的 S2101 无线温湿度传感器,用于空气质量监测。该系列包括土壤湿度、空气温湿度、光照强度、CO2、EC 和 8 合 1 气象站传感器。试试最新的 SenseCAP S210x,助力您下一个成功的工业项目。
SenseCAP 工业传感器 |
S2101 空气温湿度传感器 |
版本
产品版本 | 变更 | 发布日期 |
---|---|---|
Grove - 温湿度传感器(SHT31) V1.0 | 初始版本 | 2016年1月 |
特性
- 高可靠性、精确度和快速响应时间
- Grove 兼容且易于使用
- 良好校准、线性化、数字输出补偿
- 高度抽象的开发库
- I2C 地址 0x44
如果您想使用多个 I2C 设备,请参考 软件 I2C。
有关 Grove 模块的更多详细信息,请参考 Grove 系统
规格参数
参数 | 值 |
---|---|
输入电压 (VCC) | 3.3 伏或 5 伏 |
I/O 逻辑电平 | 基于 VCC 的 3.3 伏或 5 伏 |
工作电流 | 100 μA |
工作温度 | -40–125 ℃ |
温度传感器范围 | -40–125 ℃,精度 ±0.3°C |
湿度传感器范围 | 0% - 100%(相对湿度),精度 ±2% |
传感器芯片 | SHT31(数据手册) |
接口 | I2C |
重量 | 4 g(分线板),整个包装每件 9 g |
尺寸 | 40(长)×20(宽)mm |
支持的平台
Arduino | Raspberry Pi | |||
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
上述提到的支持平台是模块软件或理论兼容性的指示。在大多数情况下,我们只为Arduino平台提供软件库或代码示例。不可能为所有可能的MCU平台提供软件库/演示代码。因此,用户必须编写自己的软件库。
与Arduino一起使用
硬件
- 步骤 1. 准备以下物品:
Seeeduino V4.2 | Base Shield | Grove - Temp&Hum Sensor(SHT31) |
---|---|---|
![]() | ![]() | ![]() |
立即获取 | 立即获取 | 立即获取 |
- 步骤 2. 将Grove - Temperature&Humidity Sensor(SHT31)连接到Grove-Base Shield的I2C端口。
- 步骤 3. 将Grove - Base Shield插入Seeeduino。
- 步骤 4. 通过USB线将Seeeduino连接到PC。

硬件概述

使用时请勿触摸、摇晃或让本产品振动。否则会影响测量数据的准确性。
如果我们没有 Grove Base Shield,我们也可以直接将 Grove - Temperature&Humidity Sensor(SHT31) 连接到 Seeeduino,如下所示。
Seeeduino | Grove - Temperature&Humidity Sensor(SHT31) |
---|---|
5V | Red |
GND | Black |
SDA | White |
SCL | Yellow |
软件
#include <Arduino.h>
#include <Wire.h>
#include "SHT31.h"
SHT31 sht31 = SHT31();
void setup() {
Serial.begin(9600);
while(!Serial);
Serial.println("begin...");
sht31.begin();
}
void loop() {
float temp = sht31.getTemperature();
float hum = sht31.getHumidity();
Serial.print("Temp = ");
Serial.print(temp);
Serial.println(" C"); //The unit for Celsius because original arduino don't support speical symbols
Serial.print("Hum = ");
Serial.print(hum);
Serial.println("%");
Serial.println();
delay(1000);
}
-
步骤 4. 上传演示程序。如果您不知道如何上传代码,请查看如何上传代码。
-
步骤 5. 通过点击 工具-> 串口监视器 打开 Arduino IDE 的串口监视器。或者同时按下 ++ctrl+shift+m++ 键。将波特率设置为 9600。如果一切正常,您将得到结果。
结果应该如下所示:

与 Raspberry Pi 一起使用
硬件
- 步骤 1. 本项目中使用的物品:
Raspberry pi | Grove Base Hat for RasPi | Grove - Temp&Hum Sensor(SHT31) |
---|---|---|
![]() | ![]() | ![]() |
立即获取 | 立即获取 | 立即获取 |
- 步骤 2. 将 Grove Base Hat 插入 Raspberry Pi。
- 步骤 3. 将 Grove - Temperature&Humidity Sensor (SHT31) 连接到 Base Hat 的 I2C 端口。
- 步骤 4. 通过 USB 线缆将 Raspberry Pi 连接到 PC。

软件
- 步骤 1. 按照设置软件来配置开发环境。
- 步骤 2. 通过克隆 grove.py 库来下载源文件。
cd ~
git clone https://github.com/Seeed-Studio/grove.py
- 步骤 3. 执行以下命令来运行代码。
cd grove.py/grove
python grove_temperature_humidity_sensor_sht3x.py
以下是 grove_temperature_humidity_sensor_sht3x.py 代码。
import time
from grove.i2c import Bus
def CRC(data):
crc = 0xff
for s in data:
crc ^= s
for _ in range(8):
if crc & 0x80:
crc <<= 1
crc ^= 0x131
else:
crc <<= 1
return crc
class GroveTemperatureHumiditySensorSHT3x(object):
def __init__(self, address=0x44, bus=None):
self.address = address
# I2C bus
self.bus = Bus(bus)
def read(self):
# high repeatability, clock stretching disabled
self.bus.write_i2c_block_data(self.address, 0x24, [0x00])
# measurement duration < 16 ms
time.sleep(0.016)
# read 6 bytes back
# Temp MSB, Temp LSB, Temp CRC, Humididty MSB, Humidity LSB, Humidity CRC
data = self.bus.read_i2c_block_data(self.address, 0x00, 6)
if data[2] != CRC(data[:2]):
raise ValueError("temperature CRC mismatch")
if data[5] != CRC(data[3:5]):
raise ValueError("humidity CRC mismatch")
temperature = data[0] * 256 + data[1]
celsius = -45 + (175 * temperature / 65535.0)
humidity = 100 * (data[3] * 256 + data[4]) / 65535.0
return celsius, humidity
Grove = GroveTemperatureHumiditySensorSHT3x
def main():
sensor = GroveTemperatureHumiditySensorSHT3x()
while True:
temperature, humidity = sensor.read()
print('Temperature in Celsius is {:.2f} C'.format(temperature))
print('Relative Humidity is {:.2f} %'.format(humidity))
time.sleep(1)
if __name__ == "__main__":
main()
如果一切正常,您将能够看到温度和湿度
pi@raspberrypi:~/grove.py/grove $ python grove_temperature_humidity_sensor_sht3x.py
Temperature in Celsius is 21.48 C
Relative Humidity is 51.32 %
Temperature in Celsius is 21.47 C
Relative Humidity is 51.34 %
Temperature in Celsius is 21.46 C
Relative Humidity is 51.37 %
^CTraceback (most recent call last):
File "grove_temperature_humidity_sensor_sht3x.py", line 95, in <module>
main()
File "grove_temperature_humidity_sensor_sht3x.py", line 91, in main
time.sleep(1)
KeyboardInterrupt
原理图在线查看器
我们在 geppetto 中提供了这个部件,通过 Seeed 和 Geppeto 轻松实现模块化电子设计。立即构建。geppetto.seeedstudio.com
资源
- [EAGLE] Grove - 温湿度传感器(SHT31) PCB 文件和 PDF 原理图
- [数据手册] SHT31 传感器数据手册
- [库文件] 库文件和示例代码
- [扩展阅读] Arduino I2C 使用指南
项目
MediaTek 开源硬件植物健康监测器
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。