Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/sensor/bmp280
wangfq 173dd6874f init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
2026-08-31 08:53:49 +08:00
..

BMP280 数字气压传感器演示

一、功能模块介绍

1.1 核心主程序模块

  1. main.lua - 主程序入口
  2. bmp280_demo.lua - BMP280 功能演示模块

1.2 扩展库模块

  1. exs_bmx280 - BMP280/BME280 扩展库,提供初始化、气压/温度/湿度读取、IIR 滤波配置、海拔高度计算等 API

1.3 I2C 模式说明

推荐使用软件 I2C 模式BMP280 使用标准 I2C 接口通信,软件 I2C 模式无需指定 I2C 控制器,任意 GPIO 均可模拟 I2C 时序,灵活性更高。本 demo 使用软件 I2C 模式演示。

二、演示流程介绍

本 demo 按顺序演示 exs_bmx280 扩展库的 4 项功能:HELLO → [1/4] → [2/4] → [3/4] → [4/4] → End

2.1 功能演示项说明

  1. [1/4] 初始化与数据读取 - 初始化 BMP280 传感器并读取温度(°C)和气压(hPa)数据
  2. [2/4] IIR 滤波器切换演示 - 依次切换 filter=0/1/2/3/4,观察数据平滑效果
  3. [3/4] 海拔高度测量 - 通过气压值计算当前海拔高度(米)
  4. [4/4] 关闭传感器 - 关闭传感器,结束演示

三、演示硬件环境

3.1 硬件清单

  • Air780EPM 核心板 × 1
  • BMP280 数字气压传感器模块 × 1 demo所演示的BMP280 气压传感器模块购买链接
  • 母对母杜邦线 × 4
  • TYPE-C 数据线 × 1

3.2 接线配置

3.2.1 BMP280 模块接线

Air780EPM 核心板 BMP280 模块
32/GPIO31 SCL
31/GPIO30 SDA
VDD_EXT VCC
GND GND

说明:

  1. 接线时注意杜邦线不宜过长,以免通信不稳定
  2. SCL 和 SDA 需外接 4.7kΩ~10kΩ 上拉电阻到 VCC(部分模块已自带)
  3. BMP280 的 I2C 地址:SDO=GND 时 0x76SDO=VCC 时 0x77

四、演示软件环境

4.1 开发工具

4.2 内核固件

4.3 脚本文件

  1. main.lua - 程序入口
  2. bmp280_demo.lua - BMP280 功能演示模块
  3. exs_bmx280 - BMP280/BME280 扩展库

五、演示核心步骤

5.1 硬件准备

  1. 按照接线表将 BMP280 模块连接到核心板
  2. 确保电源连接正确,通过 TYPE-C USB 口供电
  3. 检查所有接线无误,避免短路

5.2 软件配置

main.lua 中加载对应的演示模块:

require "bmp280_demo"

5.3 软件烧录

  1. 使用 Luatools 选择最新内核固件
  2. 下载本项目所有脚本文件
  3. 将固件和脚本一起烧录到设备
  4. 烧录成功后设备自动重启后开始运行

5.4 功能测试

5.4.1 初始化与数据读取演示

  1. 设备启动后打印 "HELLO",随后自动进入 [1/4] 初始化与数据读取
  2. 观察日志输出,确认初始化成功
  3. 观察温度(°C)和气压(hPa)的连续读取

5.4.2 IIR 滤波器切换演示

  1. 自动进入 [2/4] IIR 滤波器切换演示
  2. 依次观察 filter=0(关闭)~ filter=416 次平均)下的数据
  3. filter 越大数据跳动越小

5.4.3 海拔高度测量

  1. 自动进入 [3/4] 海拔高度测量
  2. 观察基于当前气压值和海平面标准气压(101325Pa)计算的海拔高度

5.4.4 关闭传感器

  1. 自动进入 [4/4] 关闭传感器
  2. 演示完毕后打印 "End"

5.5 预期效果

  • 初始化与数据读取:BMP280 初始化成功,温度与气压数据正常输出
  • IIR 滤波器切换:不同滤波器下数据平滑度不同
  • 海拔高度测量:根据气压计算出当前海拔高度
  • 关闭传感器:传感器正常关闭
  • 日志如下:
[2026-07-24 19:59:39.006][000000000.213] D/user.exs_bmx280 version -> 202607240000
[2026-07-24 19:59:39.028][000000000.214] I/user.bmp280_demo HELLO
[2026-07-24 19:59:39.586][000000001.214] I/user.bmp280_demo ===== [1/4] 初始化与数据读取 =====
[2026-07-24 19:59:39.605][000000001.224] I/user.exs_bmx280 BMP280 @ I2C 0x76
[2026-07-24 19:59:39.613][000000001.262] I/user.exs_bmx280 校准数据: T1=27251 T2=25882 T3=50 P1=39170 P2=-10689
[2026-07-24 19:59:39.622][000000001.264] I/user.exs_bmx280 BMP280 初始化完成, filter=4
[2026-07-24 19:59:39.630][000000001.265] I/user.bmp280_demo BMP280 初始化成功,版本: 202607240000
[2026-07-24 19:59:39.640][000000001.469] I/user.bmp280_demo 温度=25.55°C 气压=1008.00hPa
[2026-07-24 19:59:42.440][000000004.473] I/user.bmp280_demo 1次读取: 温度=26.02°C 气压=1008.0hPa
[2026-07-24 19:59:43.789][000000005.748] I/mobile sim0 sms ready
[2026-07-24 19:59:43.809][000000005.749] D/mobile cid1, state0
[2026-07-24 19:59:43.822][000000005.749] D/mobile bearer act 0, result 0
[2026-07-24 19:59:43.837][000000005.750] D/mobile NETIF_LINK_ON -> IP_READY
[2026-07-24 19:59:43.852][000000005.786] D/mobile TIME_SYNC 0 tm 1784894382
[2026-07-24 19:59:44.448][000000006.477] I/user.bmp280_demo 2次读取: 温度=26.06°C 气压=1008.0hPa
[2026-07-24 19:59:46.450][000000008.481] I/user.bmp280_demo 3次读取: 温度=26.08°C 气压=1008.0hPa
[2026-07-24 19:59:46.476][000000008.481] I/user.bmp280_demo ---- [1/4] 完成 ----
[2026-07-24 19:59:46.949][000000008.982] I/user.bmp280_demo ===== [2/4] IIR 滤波器切换演示 =====
[2026-07-24 19:59:46.967][000000008.983] I/user.bmp280_demo 设置滤波器 filter=0
[2026-07-24 19:59:46.983][000000008.986] I/user.exs_bmx280 IIR 滤波器系数设为 0
[2026-07-24 19:59:47.059][000000009.090] I/user.bmp280_demo filter=0: 温度=26.09°C 气压=1008.00hPa
[2026-07-24 19:59:48.071][000000010.090] I/user.bmp280_demo 设置滤波器 filter=1
[2026-07-24 19:59:48.091][000000010.093] I/user.exs_bmx280 IIR 滤波器系数设为 1
[2026-07-24 19:59:48.164][000000010.197] I/user.bmp280_demo filter=1: 温度=26.10°C 气压=1008.00hPa
[2026-07-24 19:59:49.175][000000011.197] I/user.bmp280_demo 设置滤波器 filter=2
[2026-07-24 19:59:49.196][000000011.200] I/user.exs_bmx280 IIR 滤波器系数设为 2
[2026-07-24 19:59:49.284][000000011.305] I/user.bmp280_demo filter=2: 温度=26.11°C 气压=1008.00hPa
[2026-07-24 19:59:50.281][000000012.305] I/user.bmp280_demo 设置滤波器 filter=3
[2026-07-24 19:59:50.301][000000012.308] I/user.exs_bmx280 IIR 滤波器系数设为 3
[2026-07-24 19:59:50.390][000000012.412] I/user.bmp280_demo filter=3: 温度=26.12°C 气压=1008.00hPa
[2026-07-24 19:59:51.387][000000013.412] I/user.bmp280_demo 设置滤波器 filter=4
[2026-07-24 19:59:51.409][000000013.415] I/user.exs_bmx280 IIR 滤波器系数设为 4
[2026-07-24 19:59:51.497][000000013.520] I/user.bmp280_demo filter=4: 温度=26.13°C 气压=1008.00hPa
[2026-07-24 19:59:52.493][000000014.520] I/user.bmp280_demo ---- [2/4] 完成 ----
[2026-07-24 19:59:52.992][000000015.020] I/user.bmp280_demo ===== [3/4] 海拔高度测量 =====
[2026-07-24 19:59:53.011][000000015.024] I/user.bmp280_demo 温度=26.14°C 气压=1008.0hPa 海拔=43.8
[2026-07-24 19:59:53.025][000000015.025] I/user.bmp280_demo ---- [3/4] 完成 ----
[2026-07-24 19:59:53.492][000000015.525] I/user.bmp280_demo ===== [4/4] 关闭传感器 =====
[2026-07-24 19:59:53.511][000000015.527] I/user.exs_bmx280 传感器已关闭
[2026-07-24 19:59:53.528][000000015.527] I/user.bmp280_demo ---- [4/4] 完成 ----
[2026-07-24 19:59:54.003][000000016.027] I/user.bmp280_demo ===== [演示完毕] =====
[2026-07-24 19:59:54.025][000000016.027] I/user.bmp280_demo End

5.6 故障排除

  1. 传感器初始化失败

    • 检查 BMP280 接线是否正确(SCL、SDA、VCC、GND
    • 确认 GPIO 引脚配置与接线一致
    • 检查电源电压是否稳定(3.3V
    • 确认 SCL/SDA 上拉电阻是否连接
    • 确认 exs_bmx280 扩展库已正常加载
  2. 读取数据异常

    • 检查传感器供电是否正常
    • 自动地址检测会尝试 0x76 和 0x77,确认 SDO 引脚电平
    • 检查接线无松动
  3. 海拔高度显示异常

    • 海拔计算基于海平面标准气压 101325Pa,天气变化会影响计算精度
    • 可通过 exs_bmx280.set_sea_level_pressure(pressure) 传入实际海平面气压校正

5.7 扩展功能建议

exs_bmx280 更多接口的使用可以查看 exs_bmx280 扩展库说明

六、BMP180 与 BMP280 对比

特性 BMP180 BMP280
扩展库 exs_bmp180 exs_bmx280
初始化方式 exs_bmp180.setup({scl, sda}) exs_bmx280.setup("I2C", {scl, sda, ...})
气压单位 Pa(帕斯卡) hPa(百帕斯卡)
温度精度 0.1°C 0.01°C
IIR 滤波 不支持(过采样 OSS 方式) 支持 filter=0~4
工作电压 1.8V~3.6V 1.71V~3.6V
气压范围 300~1100hPa 300~1100hPa
湿度测量 不支持 BME280 型号支持