给无人机、爬楼小车或者桌面气象站做高度和环境监测,BMP280是个很划算的选择。它同时测气压、温度和海拔,芯片小、I2C接线又简单。别看它便宜,读数一旦换算没对上,高度能差出一层楼去。这篇把接线和换算的关键点写清楚。

四根线,注意电压和上拉
BMP280模块通常是标准四脚:VCC、GND、SCL、SDA。接到Arduino上就是SDA接A4、SCL接A5、GND接地。有一个点要特别提醒:BMP280本身是颗3.3V芯片,板载稳压可以把5V降下来,所以你按模块供电接5V一般没问题;但如果是裸芯片(没板载稳压的版本),就老老实实给3.3V,别直接怼5V。
BMP280支持I2C和SPI两种接口,咱们用I2C最方便。它的I2C地址默认是0x76,如果SDO引脚接了高电平就变成0x77。先把地址扫出来再连库,能省很多排查时间。
读海拔,先搞懂“气压”怎么变高度
库装好后面一般用Adafruit_BMP280、Bosch自己的bmp280等库,读出来的有温度、气压,还有readAltitude()这样的高度方法。注意:readAltitude()需要一个seaLevel海平面气压参数,如果你不传或者传错,算出来的海拔就是错的。
换算逻辑是这样的:气压越低,海拔越高。它内部用标准大气压公式把当前气压换算成高度,默认seaLevel一般是1013.25hPa。你所在地区海平面气压不一样,所以真正要准,得先用一个已知地点的校准值(比如当地气象局给的海平面气压),而不是拿默认值单人定。

三个高频坑,提前绕开
第一是误差来源别搞混。BMP280量程够用,但温度对气压读数有影响,传感器离发热元器件太近、贴在电机或板上,高度读数会跟着“漂”。让它离热源远点,或做温度补偿。
第二是分辨率设置。BMP280有采样率和滤波档位,默认档位够日常用,但如果要更平滑,可以在库的构造函数里调oversampling,别纠结卡顿问题。
第三是相对高度用法。很多时候你不需要绝对海拔,只需要“相对一楼升高了几米”。那就记录一个基准气压,再用相对差算,这种方式最省心也最准,很适合爬楼小车这种场景。
把供电、地址和seaLevel三个参数捋对,BMP280就是一个很皮实的气压高度传感器,做高度测量、气象站和无人机辅助都顺手。


SDO接高变0x77这个细节真有人不知道,地址扫出来一下就清晰了
芯片别贴电机太近,温度一上去高度就漂,我挪远了就好很多
readAltitude的seaLevel不填就是满屏乱数,填了当地海平面气压才准,卡我好久
爬电梯当气压计测高度挺好玩的,相对高度那个算法思路很省心