ESP8266-Arduino编程实例-BMP280+SI7021(GY-21P)组合模块驱动

BMP280+SI7021(GY-21P)组合模块驱动

1、GY-21P模块介绍

GY-21P模块结合了 BMP280 传感器和 SI7021 传感器。 板载 BMP280+SI7021 传感器可测量 30kPa 至 110kPa 的大气压力以及相对湿度和温度。

在这里插入图片描述

BMP280具有如下特性:

  • 压力范围:300-1100 hPa(海拔9000米-500m)
  • 相对精度(25°C 时 950 – 1050 hPa):± 0.12 hPa,当量。 至 ± 1 米
  • 绝对精度(在 (950 – 1050 hPa, 0 – +40 °C)):± 0.12 hPa,相当于 ± 1 m
  • 电源电压:1.8V – 3.6V
  • 功耗:1Hz 读出速率时为 2.7µA
  • 温度范围:-40 至 + 85°C

SI7021具有如下特性:

  • 工作电压:3.3V
  • I2C 和 SPI 通信接口
  • 温度范围:-40C 至 85C
  • 湿度范围:0 – 100% RH,=-3% 从 20-80%
  • 压力范围:30,000Pa至110,000Pa,相对精度12Pa,绝对精度100Pa
  • 海拔范围:0 到 30,000 英尺(9.2 公里),海平面相对精度为 3.3 英尺(1 m),30,000 英尺为 6.6(2 m)。

2、硬件准备

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

硬件接线如下:

传感器引脚 ESP8266开发板引脚
Vin 5v
Gnd Gnd
SCL D1
SDA D2

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

本次实例使用的驱动库如下:

BMP280驱动库:

SI7021驱动库:

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
include <Wire.h>
#include <Adafruit\_Sensor.h>
#include <Adafruit\_BMP280.h>
#include "Adafruit\_Si7021.h"

Adafruit_BMP280 bme; // I2C
Adafruit_Si7021 sensor = Adafruit\_Si7021();

void setup()
{
Serial.begin(9600);
Serial.println("BMP280 and SI7021 (GY-21p) test");

if (!bme.begin())
{
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}

if (!sensor.begin())
{
Serial.println("Did not find Si7021 sensor!");
while (true);
}
}

void loop()
{
Serial.println("BMP280 results");
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" \*C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure());
Serial.println(" Pa");
Serial.print("Approx altitude = ");
Serial.print(bme.readAltitude(1013.25)); // this should be adjusted to your local forcase
Serial.println(" m");
Serial.println();

Serial.println("SI7021 results");
Serial.print("Humidity: ");
Serial.println(sensor.readHumidity(), 2);
Serial.print("Temperature: ");
Serial.println(sensor.readTemperature(), 2);
Serial.println();
delay(2000);
}

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