Skip to main content

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
note

如果您想使用多个 I2C 设备,请参考 软件 I2C

tip

有关 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

支持的平台

ArduinoRaspberry Pi
caution

上述提到的支持平台是模块软件或理论兼容性的指示。在大多数情况下,我们只为Arduino平台提供软件库或代码示例。不可能为所有可能的MCU平台提供软件库/演示代码。因此,用户必须编写自己的软件库。

与Arduino一起使用

硬件

  • 步骤 1. 准备以下物品:
Seeeduino V4.2Base ShieldGrove - Temp&Hum Sensor(SHT31)
立即获取立即获取立即获取
  • 步骤 2. 将Grove - Temperature&Humidity Sensor(SHT31)连接到Grove-Base Shield的I2C端口。
  • 步骤 3. 将Grove - Base Shield插入Seeeduino。
  • 步骤 4. 通过USB线将Seeeduino连接到PC。

硬件概述

caution

使用时请勿触摸、摇晃或让本产品振动。否则会影响测量数据的准确性。

note

如果我们没有 Grove Base Shield,我们也可以直接将 Grove - Temperature&Humidity Sensor(SHT31) 连接到 Seeeduino,如下所示。

SeeeduinoGrove - Temperature&Humidity Sensor(SHT31)
5VRed
GNDBlack
SDAWhite
SCLYellow

软件

  • 步骤 1. 从 Github 下载库文件

  • 步骤 2. 参考如何安装库文件来为 Arduino 安装库文件。

  • 步骤 3. 重启 Arduino IDE。打开一个新的草图,并将以下代码复制到新草图中。

#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 piGrove Base Hat for RasPiGrove - 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()


tip

如果一切正常,您将能够看到温度和湿度


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

资源

项目

MediaTek 开源硬件植物健康监测器

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...