学物联网,来万物简单IoT物联网!!
一、产品简介
BMP280是博世出品的气压传感器,它集成了压电压力传感单元、信号处理电路及模数转换器,气压值可以通过SPI或I2C读出,在室内导航、无人机、气象站等场景有广泛应用。
本文档使用I2C通信接口作为本教学文档输出。
引脚定义
- VCC: 3.3V
- GND: GND
- SCL: IIC时钟
- SDA: IIC数据
- CSB: 3.3V
- SDO: GND
二、技术参数
- 供电电压:1.9~3.6V
- 通信方式:可以采用I2C或SPI通信协议
- 气压测量范围: 300hPa至1100hPa,最大误差为±12hPa
- 工作温度范围: -40摄氏度 - +85摄氏度
- 封装尺寸: 2.0mm * 2.5mm* 0.95mm
三、软件接口
BMP280(i2cObj) - 创建BMP280驱动对象
- 函数原型:
bmpObj = BMP280(i2cObj)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
i2cObj | I2C | 是 | 传入I2C对象 |
- 返回值:
BMP280对象成功,返回BMP280对象;BMP280对象创建失败,抛出Exception - 示例代码:
from machine import I2C,Pin # 驱动库
import bmp280 # BMP280温湿度传感器驱动库
# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("bmp280 inited!")
bmpObj = bmp280.BMP280(i2cObj) # 初始化创建BMP280传感器
- 输出:
bmp280 inited!
getPressure - 测量气压
- 函数功能:
量测气压值并返回测量结果 - 函数原型:
BMP280.getPressure()
- 参数说明:
无 - 返回值:
成功返回温度测量结果(数据类型:浮点型;单位:Pa);失败抛出Exception - 示例:
from machine import I2C,Pin # 驱动库
import bmp280 # BMP280温湿度传感器驱动库
# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("bmp280 inited!")
bmpObj = bmp280.BMP280(i2cObj) # 初始化创建BMP280传感器
pressure = bmpObj.getPressure()
print("pressure is ", pressure, "Pa")
- 输出:
pressure is 103000Pa
四、接口案例
# Python代码
import utime # 延时API所在组件
from machine import I2C,Pin # 驱动库
import bmp280 # BMP280温湿度传感器驱动库
# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("bmp280 inited!")
bmpObj = bmp280.BMP280(i2cObj) # 初始化创建BMP280传感器
def get_pressure():
pressure = bmp280.getPressure() # 获取大气压测量结果
print("The pressure is: %.1f" % pressure)
return pressure # 返回读取到的大气压值
if __name__ == '__main__':
while True:
data = get_pressure() # 读取温度信息和相对湿度信息
utime.sleep(1) # 每隔1秒钟进行一次温湿度信息测量和打印
- 输出:
...
bmp280 inited!
The pressure is 103000Pa
...
五、通信协议
I2C最高传输速率可到3.4MHz,SPI最高传输速率可达10MHz,当CSB管脚接VCC时选择为IIC接口,当CSB管脚接GND时选择为SPI接口,I2C地址可配置0X76或者0x77,取决于SDO,SDO接GND时I2C地址维0x76,SDO接VCC时I2C地址为0x77
主控芯片和 BMP280 传感器之间通信所用命令字如下表所示:
序号 | 命令字 | 功能说明 | 命令字宏定义 |
---|---|---|---|
1 | 0x88 | 读T1校准参数 | CMD_READ_DIG_T1 |
2 | 0x82 | 读T2校准参数 | CMD_READ_DIG_T2 |
3 | 0x8c | 读T3校准参数 | CMD_READ_DIG_T3 |
4 | 0x8e | 读P1校准参数 | CMD_READ_DIG_P1 |
5 | 0x90 | 读P2校准参数 | CMD_READ_DIG_P2 |
6 | 0x92 | 读P3校准参数 | CMD_READ_DIG_P3 |
7 | 0x94 | 读P4校准参数 | CMD_READ_DIG_P4 |
8 | 0x96 | 读P5校准参数 | CMD_READ_DIG_P5 |
9 | 0x98 | 读P6校准参数 | CMD_READ_DIG_P6 |
10 | 0x9a | 读P7校准参数 | CMD_READ_DIG_P7 |
11 | 0x9c | 读P8校准参数 | CMD_READ_DIG_P8 |
12 | 0xFA | 读取温度 | CMD_READ_TEMPERATURE |
13 | 0xF7 | 读取大气压 | CMD_READ_PRESSURE |
实际控制此传感器的流程可参考如下描述。
- 一次获取数据
通过 IIC 发送CMD_READ_DIG_T1-CMD_READ_DIG_T3获取温度校准参数并且发送CMD_READ_DIG_P1-CMD_READ_DIG_P8获取气压校准参数;
通过 IIC 发送CMD_READ_TEMPERATURE获取温度RAW数据,通过温度校准参数计算
得到实际摄氏度温度;
通过 IIC 发送CMD_READ_PRESSURE获取气压RAW数据, 通过气压校准参数和温度校准
参数数计算得到实际气压Pa;
六、工作原理
从下图可以看到bmp280内部集成了压力传感单元,通过ADC采样输入到校正储存器。通过数字接口IIC或SPI读取数据,引脚分布如下:
典型电路如下,由于SCL和SDA为开漏输出,驱动能力不足,需要接上拉电阻。要通过IIC总线访问bmp280,CSB需要接到VDDIO。
文章来源:https://www.toymoban.com/news/detail-848369.html
参考文献及购买链接
[1] BMP280气压传感器 - 学习手册
[2] BMP280气压传感器 - 购买链接文章来源地址https://www.toymoban.com/news/detail-848369.html
到了这里,关于物联网AI MicroPython传感器学习 之 BMP280气压传感器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!