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

BMP388气压传感器驱动

1、BMP388介绍

BMP388 是一款非常小巧、低功耗和低噪声的 24 位绝对气压传感器。 它可以实现精确的高度跟踪,特别适合无人机应用。 BMP388 在 0-65°C 之间的同类最佳 TCO,可在宽温度范围内进行准确的高度测量,通过更轻松地进行准确转向,极大地增强了无人机的飞行体验。

它与其他博世传感器兼容,包括 BMI088,以获得更好的性能、稳健性和稳定性。

BMP388 传感器提供出色的设计灵活性,提供易于集成到其他现有和即将推出的设备(如智能家居、工业产品和可穿戴设备)的单一封装解决方案。

它比它的前辈更准确,涵盖了从 300 hPa 到 1250 hPa 的广泛测量范围。 BMP388 具有极具吸引力的性价比以及低功耗。 它采用带金属盖的紧凑型 10 针 2.0 x 2.0 x 0.75 mm³ LGA 封装。

在这里插入图片描述

BMP388具有如下特性:

  • 工作电压:3.3V/5V
  • 通讯接口:I2C/SPI
  • 气压操作范围:300~1250hPa
  • 气压绝对精度:±0.40hPa (@9001100hPa, 2540℃)
  • 气压相对精度:±0.08hPa (@9001100hPa, 2540℃)
  • 温度系数偏移:±0.75Pa/K(@7001100hPa,-2065℃)
  • 温度绝对精度:±0.5℃(0~65℃)
  • 可能的分辨率:0.016Pa(高精度模式)
  • 可能的采样率:200Hz
  • 工作电压:-40~85℃

2、硬件准备

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

硬件接线如下:

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

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

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

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


#define SEALEVELPRESSURE\_HPA (1013.25)

Adafruit_BMP3XX bmp; // I2C


void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("BMP388 test");

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

// Set up oversampling and filter initialization
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
//bmp.setOutputDataRate(BMP3\_ODR\_50\_HZ);
}

void loop() {
if (! bmp.performReading()) {
Serial.println("Failed to perform reading :(");
return;
}
Serial.print("Temperature = ");
Serial.print(bmp.temperature);
Serial.println(" \*C");

Serial.print("Pressure = ");
Serial.print(bmp.pressure / 100.0);
Serial.println(" hPa");

Serial.print("Approx. Altitude = ");
Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");

Serial.println();
delay(2000);
}

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