首页 > 新闻资讯 > 新闻详情

SHT31传感器模块与Arduino连接图解示意

IC先生 IC先生 438 2023-11-17 16:03:33

SHT31温度和传感器模块采用紧凑的用户友好尺寸,采用Sensirion的SHT31芯片。该芯片实际上是温度和湿度传感器,提供各种功能、接口并且非常易于与微控制器一起使用。

SHT31传感器能够测量-40至125°C范围内的温度读数,精度高达±0.2°C。同样,SHT32芯片还提供湿度传感器,其工作湿度范围为0-100%,典型相对湿度精度为2%。

由于尺寸小、成本低以及2.15-5.5V的宽工作电压范围,SHT31传感器是与微控制器一起使用进行温度和湿度测量(例如恒温器、气象站等)的绝佳选择。

SHT31

I2C接口

SHT31传感器模块使用I2C通信协议将传感器数据传输到微控制器。传感器模块具有SCL(串行时钟)和SDA(串行数据)引脚,可与Arduino或支持相同接口的其他传感器的I2C接口连接。

需要注意的是,SHT31传感器模块带有两个I2C地址,分别是0x44和0x45。默认情况下,I2C地址设置为0x44。用户可以通过I2C地址选择引脚(俗称AD)更改I2C地址。

I2C接口

AD引脚包含一个内部下拉电阻,确保当该引脚未连接(低电平状态)时,I2C地址为0x44(默认)。然而,当该引脚的状态设置为高电平时,I2C地址为0x45。通过为每个传感器设置相同的I2C地址,此地址更改功能使用户可以自由地在同一总线上使用多个SHT31传感器模块。

警报输出引脚

SHT31传感器模块有一个独特的功能,即它具有一个警报输出引脚(通常称为AL),用于将模块设置为警报模式。通过使用该引脚,用户可以使传感器与微控制器一起工作,其中传感器不断获取读数,而微控制器则执行不同的任务。只要温度和湿度读数大于用户定义的范围,就会发生这种情况。因此,AL引脚充当触发引脚,其工作方式类似于中断。

只要湿度或温度读数超过用户定义的上限或下限,AL引脚就会进入高电平状态。该引脚保持高电平状态,直到值回到正常限制范围。

警报输出引脚

SHT31传感器模块引脚配置

下图为SHT31传感器模块的引脚图,该模块由6个引脚组成,具体如下图所示:

SHT31引脚配置

以下列出了SHT31传感器模块的引脚排列及其简要说明。

引脚名称 功能描述
VIN 为传感器模块提供2.4-5.5V范围内的电源。将其与Arduino的5V引脚连接。
GND 用于在设备之间提供公共接地的接地引脚。
SCL 生成时钟信号的串行时钟引脚。
SDA 串行数据引脚,用于发送和接收数据
AD  I2C地址选择引脚。
AL 警报输出引脚。

SHT31传感器模块规格

下表为SHT31温湿度传感器的规格:

典型相对湿度精度 2%相对湿度
工作相对湿度范围 0 – 100%相对湿度
响应时间 (τ63%) 8秒
典型温度精度 0.2℃
工作温度范围 -40 – 125°C
响应时间 (τ63%) 小于2秒
电源电压 2.4 – 5.5V
平均供电电流 1.7微安
最大供电电流 1500微安

SHT31模块与Arduino的接口

接下来,主要介绍如何将SHT31传感器模块与Arduino连接。将需要以下组件:

  • Arduino
  • SHT31传感器模块
  • 跳线

SHT31与Arduino板的连接非常简单。将SHT31模块的VCC端与Arduino的5V相连,GND与地(公共地)相连,传感器的SCL与Arduino的SCL引脚(A5)相连,传感器的SDA与Arduino的SDA引脚(A4)相连。

Arduino中SDA的I2C引脚是A4,SCL的I2C引脚是A5。两个设备之间的连接如下表所示。

Arduino SHT31模块
5V VIN
A4 SDA
A5 SCL
GND GND

按照下面的Arduino模块原理图进行相应连接。

Arduino模块原理图

安装SHT31 Arduino库

由于使用Arduino IDE对Arduino开发板进行编程。因此,应该拥有最新版本的Arduino IDE。由于将SHT31传感器模块与Arduino连接,因此必须安装库来访问传感器数据。该项目需要两个库:

  1. Adafruit SHT31
  2. Adafruit BusIO

这里将使用Arduino IDE中的库管理器来安装最新版本的库。打开Arduino IDE并转到Sketch>Include Libraries>Manage Libraries。然后在搜索栏中输入Adafruit SHT31并安装最新版本

Adafruit SHT31

在搜索栏中输入Adafruit BusIO并安装它,如下图所示:

Adafruit BusIO

在Arduino串行监视器上获取SHT31读数

下面的代码功能实现每秒在Arduino串行监视器上显示当前温度和湿度读数:

#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"

Adafruit_SHT31 sht31 = Adafruit_SHT31();

void setup() {
  Serial.begin(115200);

  if (! sht31.begin(0x44)) {   
    Serial.println("Check circuit. SHT31 not found!");
    while (1) delay(1);
  }
}

void loop() {
  float temp = sht31.readTemperature();
  float hum = sht31.readHumidity();

  if (! isnan(temp)) { 
    Serial.print("Temperature(°C): "); 
    Serial.print(temp); 
    Serial.print("\t\t");
  } else { 
    Serial.println("Failed to read temperature!");
  }
  
  if (! isnan(hum)) {  
    Serial.print("Humidity(%): "); 
    Serial.println(hum);
  } else { 
    Serial.println("Failed to read humidity!");
  }

  delay(1000);
}

应用示例

在Arduino IDE中,单击“Tools”>“Board”,然后选择“Arduino Uno”:

Arduino Uno

现在,单击“Tools”>“Port”并选择你正在使用的端口。现在,单击上传按钮上传上面的代码。将代码上传到Arduino开发板上后,按ENABLE按钮,如下所示:

代码上传到Arduino开发板

在Arduino IDE中,打开串行监视器并将波特率设置为115200。串行监视器将开始显示温度和湿度读数以及单位。每秒都会显示新的读数,如下草图所示:

温度和湿度显示

另外,如果感兴趣及有条件的话,大家也可以在OLED显示屏上显示SHT31传感器值,以方便查看(范例如下图所示),具体的连接电路和代码,本文就不赘述了。

OLED显示屏显示温度

推荐商品
MC74HC573ADW
库存:0
¥ 0.98875
RC0402FR-07220KL
库存:10000
¥ 0.002
TDK063BJ104KP-F
库存:0
¥ 0.01154
RC0805FR-07750RL
库存:0
¥ 0.00816
TMK212B7225KG-TR
库存:0
¥ 0.08756
版权声明: 部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者及时联系本站,我们会尽快处理。
标题:

SHT31传感器模块与Arduino连接图解示意


网址: https://www.mrchip.cn/newsDetail/12976
文章标签: 传感器
0 购物车
0 消息