ESP8266-Arduino编程实例-BMP280气压传感器驱动

BMP280气压传感器驱动

1、BMP280介绍

BMP280 是一款专为移动应用设计的绝对气压传感器。 传感器模块采用极其紧凑的封装。 它的小尺寸和低功耗允许在手机、GPS 模块或手表等电池供电的设备中实施。

作为其前身 BMP180,BMP280 基于博世久经考验的压阻式压力传感器技术,具有高精度和线性度以及长期稳定性和高 EMC 鲁棒性。 众多设备操作选项提供了最高的灵活性,可针对功耗、分辨率和滤波器性能优化设备。 为开发人员提供了一组经过测试的默认设置(例如用例),以使设计尽可能简单。

在这里插入图片描述

BMP有如下特性:

  • 操作范围(全精度):
    • 压力:300…1100 hPa
    • 温度:-40…85°C
  • 绝对精度(Temp. @0…65°C):~ ±1 hPa
  • 相对精度(p = 700…900hPa,Temp. @ +25…+40°C):± 0.12 hPa (典型),相当于±1 m
  • 平均电流消耗(1 Hz 数据刷新率):2.74 μA,典型值(超低功耗模式)
  • 睡眠模式下的平均电流消耗:0.1 μA
  • 平均测量时间:5.5 msec,(超低功耗预设)
  • 电源电压 VDDIO:1.2 … 3.6 V
  • 电源电压 VDD:1.71 … 3.6 V
  • 数据分辨率:
    • 压力:0.01 hPa (< 10 cm)
    • 温度:0.01°C
  • 温度系数偏移(+25°…+40°C @900hPa):± 0.12 hPa(典型)相当于 ±1 m
  • 接口:I2C或SPI

2、硬件准备

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

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

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

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

#define BMP\_SCK 13
#define BMP\_MISO 12
#define BMP\_MOSI 11
#define BMP\_CS 10

Adafruit_BMP280 bme; // I2C
//Adafruit\_BMP280 bme(BMP\_CS); // hardware SPI
//Adafruit\_BMP280 bme(BMP\_CS, BMP\_MOSI, BMP\_MISO, BMP\_SCK);

void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));

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

void loop() {
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();
delay(2000);
}

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