Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/sensor/bmp180
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
..

BMP180 数字气压传感器演示

一、功能模块介绍

1.1 核心主程序模块

  1. main.lua - 主程序入口,负责项目初始化、版本定义和任务调度
  2. bmp180_demo.lua - BMP180 功能演示模块,包含数据读取、过采样率切换、海拔高度计算等所有功能的演示用例

1.2 扩展库模块

  1. exs_bmp180 - BMP180 扩展库,提供初始化、气压/温度读取、过采样率切换、海拔高度计算、关闭等 API

1.3 I2C 模式说明

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

二、演示流程介绍

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

2.1 功能演示项说明

  1. [1/4] 初始化与数据读取 - 初始化 BMP180 传感器并读取温度(°C)和气压(Pa/hPa)数据
  2. [2/4] 过采样率切换演示 - 依次切换 OSS=0/1/2/3,观察不同精度下的温度与气压数据
  3. [3/4] 海拔高度测量 - 通过气压值计算当前海拔高度(米)
  4. [4/4] 关闭传感器 - 演示正确的传感器关闭流程

三、演示硬件环境

3.1 硬件清单

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

3.2 接线配置

3.2.1 BMP180 模块接线

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

说明:

  1. 接线时注意杜邦线不宜过长,以免通信不稳定
  2. SCL 和 SDA 需外接 4.7kΩ~10kΩ 上拉电阻到 VCC(部分模块已自带)

四、演示软件环境

4.1 开发工具

4.2 内核固件

4.3 脚本文件

  1. main.lua - 程序入口
  2. bmp180_demo.lua - BMP180 功能演示模块
  3. exs_bmp180 - BMP180 扩展库

五、演示核心步骤

5.1 硬件准备

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

5.2 软件配置

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

-- 加载 bmp180_demo.lua 演示模块
require "bmp180_demo"

5.3 软件烧录

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

5.4 功能测试

5.4.1 初始化与数据读取演示

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

5.4.2 过采样率切换演示

  1. 自动进入 [2/4] 过采样率切换演示
  2. 依次观察 OSS=0(最快)、OSS=1、OSS=2、OSS=3(最高精度)下的数据
  3. 注意 OSS 越高,数据跳动越小,但转换时间越长

5.4.3 海拔高度测量

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

5.4.4 关闭传感器

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

5.5 预期效果

  • 初始化与数据读取:BMP180 初始化成功,温度与气压数据正常输出
  • 过采样率切换:不同 OSS 下精度不同,OSS 越高数据越稳定
  • 海拔高度测量:根据气压计算出当前海拔高度
  • 关闭传感器:传感器正常关闭
  • 日志如下:
[2026-07-23 15:30:32.854][000000000.247] I/user.main BMP180_Demo 001.000.000
[2026-07-23 15:30:32.868][000000000.259] D/user.exs_bmp180 version -> 202607220900
[2026-07-23 15:30:32.882][000000000.260] I/user.bmp180_demo HELLO
[2026-07-23 15:30:33.032][000000001.261] I/user.bmp180_demo ===== [1/4] 初始化与数据读取 =====
[2026-07-23 15:30:33.042][000000001.269] I/user.exs_bmp180 BMP180 @ I2C 0x77, CHIP_ID=0x55
[2026-07-23 15:30:33.055][000000001.286] I/user.exs_bmp180 校准数据: AC1=6464 AC2=-1308 AC3=-14829 AC4=33096 AC5=24574 AC6=21778
[2026-07-23 15:30:33.069][000000001.286] I/user.exs_bmp180 初始化完成, oss=0
[2026-07-23 15:30:33.081][000000001.286] I/user.bmp180_demo BMP180 初始化成功,版本: 202607220900
[2026-07-23 15:30:33.092][000000001.502] I/user.bmp180_demo 温度=24.1°C 气压=1004.56hPa
[2026-07-23 15:30:35.560][000000004.517] I/user.bmp180_demo 1次读取: 温度=24.1°C 气压=100450.0Pa
[2026-07-23 15:30:37.582][000000006.533] I/user.bmp180_demo 2次读取: 温度=24.1°C 气压=100450.0Pa
[2026-07-23 15:30:39.588][000000008.548] I/user.bmp180_demo 3次读取: 温度=24.1°C 气压=100453.0Pa
[2026-07-23 15:30:39.605][000000008.548] I/user.bmp180_demo ---- [1/4] 完成 ----
[2026-07-23 15:30:40.099][000000009.049] I/user.bmp180_demo ===== [2/4] 过采样率切换演示 =====
[2026-07-23 15:30:40.121][000000009.049] I/user.bmp180_demo 设置过采样率为 oss=0
[2026-07-23 15:30:40.136][000000009.050] I/user.exs_bmp180 过采样率切换为 oss=0
[2026-07-23 15:30:40.208][000000009.165] I/user.bmp180_demo oss=0: 温度=24.1°C 气压=1004.59hPa
[2026-07-23 15:30:41.203][000000010.165] I/user.bmp180_demo 设置过采样率为 oss=1
[2026-07-23 15:30:41.216][000000010.165] I/user.exs_bmp180 过采样率切换为 oss=1
[2026-07-23 15:30:41.328][000000010.284] I/user.bmp180_demo oss=1: 温度=24.1°C 气压=1004.57hPa
[2026-07-23 15:30:42.320][000000011.284] I/user.bmp180_demo 设置过采样率为 oss=2
[2026-07-23 15:30:42.336][000000011.284] I/user.exs_bmp180 过采样率切换为 oss=2
[2026-07-23 15:30:42.444][000000011.409] I/user.bmp180_demo oss=2: 温度=24.1°C 气压=1004.56hPa
[2026-07-23 15:30:43.456][000000012.409] I/user.bmp180_demo 设置过采样率为 oss=3
[2026-07-23 15:30:43.469][000000012.409] I/user.exs_bmp180 过采样率切换为 oss=3
[2026-07-23 15:30:43.595][000000012.546] I/user.bmp180_demo oss=3: 温度=24.1°C 气压=1004.60hPa
[2026-07-23 15:30:44.589][000000013.546] I/user.bmp180_demo ---- [2/4] 完成 ----
[2026-07-23 15:30:45.086][000000014.046] I/user.bmp180_demo ===== [3/4] 海拔高度测量 =====
[2026-07-23 15:30:45.118][000000014.082] I/user.bmp180_demo 温度=24.1°C 气压=100457.0Pa 海拔=72.5
[2026-07-23 15:30:45.135][000000014.082] I/user.bmp180_demo ---- [3/4] 完成 ----
[2026-07-23 15:30:45.631][000000014.583] I/user.bmp180_demo ===== [4/4] 演示完毕 =====
[2026-07-23 15:30:45.646][000000014.583] I/user.bmp180_demo ---- [4/4] 完成 ----
[2026-07-23 15:30:46.126][000000015.083] I/user.bmp180_demo ===== [演示完毕] =====
[2026-07-23 15:30:46.139][000000015.083] I/user.bmp180_demo End

5.6 故障排除

  1. 传感器初始化失败

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

    • 检查传感器供电是否正常
    • 检查 I2C 地址是否正确(BMP180 固定地址 0x77
    • 确认接线无松动
    • 检查 SCL/SDA 上拉电阻
  3. 海拔高度显示异常

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

5.7 扩展功能建议

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