ESP8266-Arduino编程实例-SHT31温度湿度传感器驱动

SHT31温度湿度传感器驱动

1、SHT31介绍

SHT31 是 Sensirion 的下一代温湿度传感器。 它建立在一个新的 CMOSens® 传感器芯片之上,该芯片是 Sensirion 新湿度和温度平台的核心。

与其前身相比,SHT3x-DIS 具有更高的智能性、可靠性和更高的精度规格。 其功能包括增强的信号处理、两个独特且用户可选择的 I2C 地址和高达 1 MHz 的通信速度。 DFN 封装的占位面积为 2.5 x 2.5 mm2,同时保持 0.9 mm 的高度。

SHT31具有如下特性:

  • 完全校准、线性化和温度补偿的数字输出
  • 宽电源电压范围,2.4 V 至 5.5 V
  • I2C 接口具有高达 1 MHz 的通信速度和两个用户可选地址

在这里插入图片描述

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • SHT31传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次使用到的SHT31驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
7
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit\_SHT31.h"

// 创建SHT31设备
Adafruit_SHT31 sht31 = Adafruit\_SHT31();

2)设备初始化

1
2
3
4
5
6
7
8
9
10
11
void setup() 
{
Serial.begin(9600);
// 启动SHT11
if (! sht31.begin(0x44))
{
Serial.println("Couldn't find SHT31");
while (1) delay(1);
}
}

3)数据采集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void loop() 
{
float t = sht31.readTemperature(); // 读取温度
float h = sht31.readHumidity(); // 读取湿度

if (! isnan(t))
{
Serial.print("Temp \*C = "); Serial.println(t);
}
else
{
Serial.println("Failed to read temperature");
}

if (! isnan(h))
{
Serial.print("Hum. % = "); Serial.println(h);
}
else
{
Serial.println("Failed to read humidity");
}
Serial.println();
delay(1000);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126340381