物联网AI MicroPython传感器学习 之 BMP280气压传感器

物联网AI MicroPython传感器学习 之 BMP280气压传感器BMP280是博世出品的气压传感器,它集成了压电压力传感单元、信号处理电路及模数转换器,气压值可以通过SPI或I2C读出,在室内导航、无人机、气象站等场景有广泛应用

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

BMP280是博世出品的气压传感器,它集成了压电压力传感单元、信号处理电路及模数转换器,气压值可以通过SPI或I2C读出,在室内导航、无人机、气象站等场景有广泛应用。
本文档使用I2C通信接口作为本教学文档输出。
image.png

引脚定义

  • 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=) 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=) print("bmp280 inited!") bmpObj = bmp280.BMP280(i2cObj) # 初始化创建BMP280传感器 pressure = bmpObj.getPressure() print("pressure is ", pressure, "Pa") 
  • 输出:
pressure is Pa 

四、接口案例

# Python代码 import utime # 延时API所在组件 from machine import I2C,Pin # 驱动库 import bmp280 # BMP280温湿度传感器驱动库 # 初始化I2C类型的设备 i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=) 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 Pa ... 

五、通信协议

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读取数据,引脚分布如下:
image.png
典型电路如下,由于SCL和SDA为开漏输出,驱动能力不足,需要接上拉电阻。要通过IIC总线访问bmp280,CSB需要接到VDDIO。
image.png

参考文献及购买链接

[1] BMP280气压传感器 – 学习手册
[2] BMP280气压传感器 – 购买链接

今天的文章
物联网AI MicroPython传感器学习 之 BMP280气压传感器分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/80167.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注