ESP8266-Arduino编程实例-MPL3115A2压力传感器驱动

MPL3115A2压力传感器驱动

1、MPL3115A2介绍

MPL3115A2 是一款紧凑型压阻式绝对压力传感器,具有 I2C 数字接口。 MPL3115A2 具有 20 kPa 至 110 kPa 的宽工作范围,该范围涵盖了地球上的所有表面高度。 MEMS 使用片上温度传感器进行温度补偿。 压力和温度数据被馈送到高分辨率 ADC 中,以提供完全补偿和数字化的输出,输出以帕斯卡为单位的压力和以°C 为单位的温度。

在这里插入图片描述

MPL3115A2具有如下特性:

  • 1.95V 至 3.6V 电源电压,由 LDO 内部调节
  • 1.6V 至 3.6V 数字接口电源电压
  • 内部完全补偿
  • 直读,有偿
  • 压力:20 位测量(帕斯卡)
  • 高度:20 位测量(米)
  • 温度:12位测量(摄氏度)
  • 可编程事件
  • 自主数据采集
  • 分辨率低至 1 英尺/30 厘米
  • 32 样本 FIFO
  • 能够使用 FIFO 记录长达 12 天的数据
  • 1 秒到 9 小时的数据采集速率
  • I2C 数字输出接口(工作频率高达 400 kHz)

2、硬件准备

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

硬件接线如下:

在这里插入图片描述

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
#include <Wire.h>
#include <Adafruit\_MPL3115A2.h>

Adafruit_MPL3115A2 baro = Adafruit\_MPL3115A2();

void setup() {
Serial.begin(9600);
Serial.println("Adafruit\_MPL3115A2 test!");
}

void loop() {
if (! baro.begin()) {
Serial.println("Couldnt find sensor");
return;
}

float pascals = baro.getPressure();
// Our weather page presents pressure in Inches (Hg)
// Use http://www.onlineconversion.com/pressure.htm for other units
Serial.print(pascals/3377); Serial.println(" Inches (Hg)");

float altm = baro.getAltitude();
Serial.print(altm); Serial.println(" meters");

float tempC = baro.getTemperature();
Serial.print(tempC); Serial.println("\*C");

delay(250);
}

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