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

Si7021温度传感器驱动

1、Si7021介绍

Si7021 I2C 湿度和温度传感器是一款集成了湿度和温度传感器元件、模数转换器、信号处理、校准数据和 I2C 接口的单片 CMOS IC。 Si7021 提供精确、低功耗、工厂校准的数字解决方案,非常适合测量湿度、露点和温度,应用范围从 HVAC/R 和资产跟踪到工业和消费平台。

Si7021具有如下特性:

  • 精密相对湿度传感器 ± 3% RH(最大值),0–80% RH
  • 高精度温度传感器 ±0.4 °C(最大值),–10 至 85 °C
  • 0 至 100% RH 工作范围
  • 高达 –40 至 +125 °C 的工作范围
  • 宽工作电压 –(1.9 至 3.6 V)
  • 低功耗 – 150 μA 有功电流

在这里插入图片描述

2、硬件准备

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

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

1)导入依赖库头文件

1
2
3
4
#include <Wire.h>

// SI7021 I2C地址为0x40(64)

2)设备初始化

1
2
3
4
5
6
7
8
9
void setup()
{
Wire.begin();
Serial.begin(9600);
Wire.beginTransmission(si7021Addr);
Wire.endTransmission();
delay(300);
}

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
void loop()
{
unsigned int data[2];

Wire.beginTransmission(si7021Addr);
//发送湿度测量命令
Wire.write(0xF5);
Wire.endTransmission();
delay(500);

// 请求读取两字节数据
Wire.requestFrom(si7021Addr, 2);
// 读取湿度
if(Wire.available() == 2)
{
data[0] = Wire.read();
data[1] = Wire.read();
}

// 转换湿度
float humidity = ((data[0] \* 256.0) + data[1]);
humidity = ((125 \* humidity) / 65536.0) - 6;

Wire.beginTransmission(si7021Addr);
// 发送测温指令
Wire.write(0xF3);
Wire.endTransmission();
delay(500);

// 请求读取两字节数据
Wire.requestFrom(si7021Addr, 2);

// 读取温度
if(Wire.available() == 2)
{
data[0] = Wire.read();
data[1] = Wire.read();
}

// 转换数据
float temp = ((data[0] \* 256.0) + data[1]);
float celsTemp = ((175.72 \* temp) / 65536.0) - 46.85;
float fahrTemp = celsTemp \* 1.8 + 32;

// 输出数据
Serial.print("Humidity : ");
Serial.print(humidity);
Serial.println(" % RH");
Serial.print("Celsius : ");
Serial.print(celsTemp);
Serial.println(" C");
Serial.print("Fahrenheit : ");
Serial.print(fahrTemp);
Serial.println(" F");
delay(1000);
}

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