BMP280 高频采样 · STM32 压差实时计算 · 三级预警保护
BMP280 @ 50Hz · STM32F103C8T6 · ΔP/Δt 三级预警
面向飞机起降、高铁进隧道和潜水下沉等快速气压变化场景,系统通过 BMP280 采集外部气压,由 STM32 计算压力变化率,并用 Web 仪表盘、OLED、LED 和蜂鸣器给出分级提醒。
STM32 以 50 Hz 读取传感器,计算 ΔP/Δt 后按 30 Pa/s 与 80 Pa/s 两个阈值判定状态。后端将最新数据封装为 JSON,前端每 300 ms 轮询并更新压力、仪表、状态、日志和 AI 建议。










| 模块 | 作用 | 接口 / 说明 |
|---|---|---|
| BMP280 气压传感器 | 采集外部大气压力 | I²C 总线,与 OLED 共用 PB6/PB7;需要 3.3 V 供电。 |
| STM32F103C8T6 | 传感器读取、压力补偿、状态判定 | 72 MHz 主频,50 Hz 采样,输出标准化串口文本。 |
| OLED 0.96 寸 | 本地显示压力、变化率和预警状态 | I²C 与 BMP280 并联,便于脱离电脑观察。 |
| CH340 USB 转串口 | 连接 STM32 与电脑 Web 后端 | USART1,9600 bps,8N1。 |
| LED + 蜂鸣器 | 提供无需盯屏的声光提醒 | SAFE 绿灯、WARNING 黄灯、DANGER 红灯闪烁并蜂鸣。 |
| STM32 引脚 | 连接模块 | 功能 |
|---|---|---|
| PB6 | BMP280 / OLED | I²C SCL |
| PB7 | BMP280 / OLED | I²C SDA |
| PC13 | 蜂鸣器 | 低电平触发 |
| PA9 / PA10 | CH340 | USART1 TX / RX,交叉连接 |
| PA13 / PA14 | ST-LINK/V2 | SWDIO / SWCLK 下载调试 |
| 运行环境 | Windows Server + Python 3.12 + Flask + pyserial + httpx |
| 服务端口 | 5030(NSSM 服务:AviationEar) |
| 网页接口 | HTTPS /aviation-ear/,反向代理到 Windows 5030 |
| 数据接口 | GET /api/data,返回 pressure、rate、status、alarms、connected 等字段 |
| 串口参数 | 9600 bps、8 data bits、no parity、1 stop bit |
后端由 Flask 提供页面与数据接口,EarplugReader 独立线程负责串口发现、数据解析、模拟模式和 AI 建议。前端不依赖额外框架,使用原生 JavaScript 更新仪表盘,既支持服务器模拟演示,也支持浏览器 Web Serial 直连硬件。
| 软件模块 | 设计职责 | 关键实现 |
|---|---|---|
| 页面展示模块 | 呈现压力、变化率、预警等级和 AI 建议 | HTML + CSS + 原生 JavaScript,SVG 仪表与响应式布局。 |
| 数据连接模块 | 在服务器模式下轮询后端数据,在本地模式下连接串口 | Fetch `/api/data`;Web Serial 读取 9600 bps 数据流。 |
| 状态计算模块 | 把压力变化率转换为 SAFE / WARNING / DANGER | 统一使用绝对变化率和 30 / 80 Pa/s 阈值。 |
| 后端服务模块 | 提供页面、JSON 接口和串口读取线程 | Flask 路由 + EarplugReader 后台线程 + 模拟模式兜底。 |
| 部署运维模块 | 保证公网访问、自动启动和反向代理 | NSSM 服务 AviationEar、Windows 5030、Nginx `/aviation-ear/`。 |
| 测试项 | 预期结果 |
|---|---|
| 打开项目首页 | 仪表盘和本技术文档正常显示,页面无空白。 |
| 访问 /api/data | 返回 JSON,connected 字段为 true。 |
| 未连接 STM32 | 自动进入模拟数据模式,仪表盘持续刷新。 |
| 接入 CH340 | 识别串口并读取三段式压力数据。 |
| 模拟高变化率 | 状态切换为 WARNING / DANGER,并触发对应声光提示。 |