GY-BMP280 大气压传感器凭借高精度测量、灵活的通信接口、低功耗设计以及广泛的应用领域,成为众多项目中环境传感的理想选择。无论是构建气象站、开发智能穿戴设备,还是优化室内定位系统,它都能凭借出色性能满足需求,以小巧的身躯,为各类设备赋予精准感知环境的 “智慧之眼” 。
气压测量:测量范围覆盖 300 至 1100 hPa,对应海拔高度为 - 500 至 + 9000 米,可精准捕捉气压细微变化。其精度高达 ±1 hPa,高度测量精度约为 ±1 米,为需要高精度气压数据的应用提供坚实支撑。
温度测量:温度测量范围从 - 40°C 至 + 85°C,精度达 ±1.0°C,能在极端环境下提供可靠的温度数据,满足多种场景对温度感知的严苛要求。
GY-BMP280 支持 I²C(最高 3.4 MHz)与 SPI(3 线和 4 线,最高 10 MHz)两种通信协议,方便与各类微控制器连接,为开发者提供了极大的灵活性,轻松适配不同的电路设计与系统架构。该传感器在 1 Hz 采样率下,电流消耗约为 2.7 μA,功耗极低,非常适合对功耗敏感的应用场景,如便携式设备、电池供电设备等,可有效延长设备续航时间。

| 提醒:请按下图的引脚标识接线,传感器的VIN务必不能接5V只能接3.3V,否则会导致设备烧毁! |

| bmp280 下载这个bmp280的源代码上传至树莓派pico文件内,直接运行查看数据(如下图) |
如果你还没有搭建好树莓派Python编程环境可参考这个帖子→:如何搭建Python编程环境

结果:可以对着传感器大口吹起,观察气压和温度的数据变化
1. 设备初始化与校验 (__init__)
硬件连接:在 I2C 总线(SDA=Pin14, SCL=Pin15)上寻找默认地址为 0x76 的 BMP280。
芯片识别与复位:读取芯片 ID(寄存器 0xD0),校验是否为 0x58;随后发送软复位命令(0xB6)并等待设备就绪。
2. 读取工厂校准系数 (_read_calibration_data)BMP280 传感器出厂时在内部 ROM 中写入了 12 个校准参数(温度 T1~T3,气压 P1~P9)。
程序会一次性读取这些参数,并将带有符号的补码数据转换为正确的 Python 整数,用于后续计算。
3. 配置工作参数 (_configure_sensor)
通过写入控制寄存器(0xF4 和 0xF5),配置传感器的过采样倍率(温度 x2,气压 x4)以及芯片内部的 IIR 滤波器系数。
4. 原始数据读取与公式补偿(核心算法)
读取温度 (read_temperature):读取 20 位的原始 ADC 温度数据,通过博世官方给定的多项式公式计算出实际温度(℃),同时生成关键的中间变量 t_fine。
读取气压 (read_pressure):必须依赖 t_fine 才能进行准确计算。读取 20 位气压原始值,通过复杂的位移和乘法公式修正,得出气压值(hPa)。
一阶低通滤波 (EMA):对计算出的温度和气压应用一阶滤波公式(滤波系数 $\alpha = 0.2$),有效过滤掉传感器的高频噪声跳变,让数值更加平滑。
5. 海拔换算与主循环输出
海拔计算 (read_altitude):利用压高公式 44330x(1-(P/1013.25)⁰⁻¹⁹⁰³)将实时气压换算为相对海平面的海拔高度(米)。
主循环:每隔 1 秒读取一次滤波后的温度、气压和海拔数据,并带有时间戳格式化打印到控制台。
| 本次以ESP32-S3主板为例按下图接好连接线,传感器的VIN务必不能接5V只能接3.3V,否则会烧毁设备。 |

| GY-BMP280 下载这个GY-BMP280源代码直接用Arduino IDE编译上传程序打开串口监视查看(如下图) |
如果你还没有搭建好ESP32的ArduinoIDE的编程环境可参考这个帖子→:搭建ArduinoIDE编程环境

1.I2C 通信与重复起始信号(Repeated Start)
ESP32 通过 GPIO14 (SDA) 和 GPIO15 (SCL) 访问 BMP280(地址 0x76)。
核心关键:在读取寄存器数据时,使用 Wire.endTransmission(false) 保持 I2C 总线连接(Repeated Start),防止 ESP32 释放总线导致寄存器指针重置,从而解决数据全部读为 0 的问题。
2. 读取出厂校准参数(Calibration Data)
每颗 BMP280 在出厂时,内部 ROM 均写入了 12 个唯一的校准系数(T1~T3、P1~P9)。
程序在 setup() 初始化阶段将其一次性读入内存,用于后续修正传感器硬件的物理偏差。
3. 博世官方补偿算法(Bosch Formula)
采集原始值:传感器内部 ADC 采样得到 20 位的原始温度和气压二进制数值。
计算温度:利用T1~T3参数校正得到真实温度,同时生成关键中间变量 t_fine。
计算气压:气压极易受温度影响,必须结合 t_fine 和P~P9参数,通过 64 位高精度多项式算法(防止溢出)换算得到真实百帕气压(hPa)。
4. 一阶低通滤波算法(EMA Filtering)
采用软件滤波公式:
作用:抑制空气流动、电噪声对气压和温度造成的频繁微小跳动,让串口输出的数据更加平滑稳定。
5. 气压换算海拔(Barometric Formula)
基于标准大气模型压高公式:
将实时计算出的气压值P换算为相对海平面的高度H(单位:米)。
联系人:张工
电话:0755-32914578
微信:扫下方二维码添加技术工程师微信,请备注来意
创客技术交流QQ群:2095618,175680,9075883(加群请备注:跃动芯火)