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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!