【HaaS Python 硬件积木】 BMP280气压传感器

简介: 【HaaS Python 硬件积木】 BMP280气压传感器

来这里发现更多拿来即用的传感器

HaaS开发框架

HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。

https://haas.iot.aliyun.com/solution/hardware


一、产品简介

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





引脚定义

VCC: 3.3V

GND: GND

SCL: IIC时钟

SDA: IIC数据

CSB: 3.3V

SDO: GND

二、技术参数

供电电压:1.9~3.6V

可以采用I2C或SPI通信协议(HaaS Python实现了IIC接口驱动),I2C最高传输速率可到3.4MHz,SPI最高传输速率可达10MHz,当CSB管脚接VCC时选择为IIC接口,当CSB管脚接GND时选择为SPI接口,I2C地址可配置0X76或者0x77,取决于SDO,SDO接GND时I2C地址维0x76,SDO接VCC时I2C地址为0x77

气压测量范围: 300hPa至1100hPa,最大误差为±12hPa

封装:8-pin LGA metal-lid,2.0mm * 2.5mm, height: 0.95mm

工作温度范围: -40摄氏度 - +85摄氏度

三、软件接口

BMP280气压传感器HaaS Python驱动:下载地址


BMP280(i2cObj) - 创建BMP280驱动对象

函数原型:

bmpObj = BMP280(i2cObj)


参数说明:

参数 类型 必选参数? 说明

i2cObj I2C 是 调用此函数前需确保i2cObj对象已经处于open状态

返回值: BMP280对象成功,返回BMP280对象;BMP280对象创建失败,抛出Exception

示例代码:

from driver import I2C               # 驱动库

import bmp280                        # BMP280温湿度传感器驱动库

# 初始化I2C类型的设备

i2cObj = I2C()

i2cObj.open("bmp280")                # 按照board.json中名为"bmp280"的设备节点的配置参数(主设备I2C端口号,从设备地址,总线频率等)初始化I2C类型设备对象

print("bmp280 inited!")

baroDev = bmp280.BMP280(i2cObj)  # 初始化BMP280传感器

输出:

bmp280 inited!

getPressure - 测量气压

函数功能: 量测气压值并返回测量结果

函数原型:

BMP280.getPressure()


参数说明: 无

返回值: 成功返回温度测量结果(数据类型:浮点型;单位:Pa);失败抛出Exception

示例:

from driver import I2C               # 驱动库

import bmp280                        # BMP280温湿度传感器驱动库

# 初始化I2C类型的设备

i2cObj = I2C()

i2cObj.open("bmp280")                # 按照board.json中名为"bmp280"的设备节点的配置参数(主设备I2C端口号,从设备地址,总线频率等)初始化I2C类型设备对象

baroDev = bmp280.BMP280(i2cObj)  # 初始化BMP280传感器

pressure = baroDev.getPressure()

print("pressure is ", pressure, "Pa")

输出:

pressure is 103000Pa

四、接口案例

此使用实例在board.json中定义了名为bmp280的I2C类型的对象。在Python脚本中周期性的获取温湿度测量结果并打印在日志中。


代码:

# board.json配置:

{

   "name": "board-name",

   "version": "1.0.0",

   "io": {

     "bmp280": {

       "type": "I2C",

       "port": 0,

       "addrWidth": 7,

       "freq": 400000,

       "mode": "master",

       "devAddr": 118

     }

   },

   "debugLevel": "ERROR",

   "repl": "disable"

}


# Python代码

import utime                         # 延时API所在组件

from driver import I2C               # 驱动库

import bmp280                        # BMP280温湿度传感器驱动库

# 初始化I2C类型的设备

i2cObj = I2C()

i2cObj.open("bmp280")                # 按照board.json中名为"bmp280"的设备节点的配置参数(主设备I2C端口号,从设备地址,总线频率等)初始化I2C类型设备对象

baroDev = bmp280.BMP280(i2cObj)  # 初始化BMP280传感器

# 通过温湿度传感器读取温湿度信息

def get_pressure():

   pressure = baroDev.getPressure()         # 获取大气压测量结果

   print("The pressure is: %.1f" % pressure)

   return pressure                        # 返回读取到的大气压值

if __name__ == '__main__':

   while True:

       data = get_pressure()                          # 读取温度信息和相对湿度信息

       utime.sleep(1)                                  # 每隔1秒钟进行一次温湿度信息测量和打印

   i2cObj.close()                                      # 关闭I2C设备对象


输出:

...

The pressure is 103000Pa

...

五、通信协议

主控芯片和 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读取数据。



引脚分布如下,3和4号脚是IIC总线接口的SCL和SDA管脚。



典型电路如下,由于SCL和SDA为开漏输出,驱动能力不足,需要接上拉电阻。要通过IIC总线访问bmp280,CSB需要接到VDDIO。



参考文献及购买链接

[1] BMP280气压传感器


[2] 购买链接

————————————————

版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HaaSTech/article/details/124730611

相关文章
|
4月前
|
机器学习/深度学习 人工智能 数据挖掘
Numba是一个Python库,用于对Python代码进行即时(JIT)编译,以便在硬件上高效执行。
Numba是一个Python库,用于对Python代码进行即时(JIT)编译,以便在硬件上高效执行。
|
4月前
|
监控 网络协议 安全
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
|
传感器 物联网 数据处理
【Python入门系列】第二十一篇:Python物联网和传感器应用
物联网和传感器在现代科技中扮演着重要的角色。物联网是指通过互联网连接各种设备和传感器,实现设备之间的通信和数据交换。传感器则是物联网的核心组成部分,用于感知和采集环境中的各种数据。在这篇文章中,我们将探讨使用Python开发物联网和传感器应用的主题。
575 0
|
传感器 人工智能 开发框架
ESP32 + Python 还不知道怎么垃圾分类? 用HaaS DIY一个智能垃圾桶吧
ESP32 + Python 还不知道怎么垃圾分类? 用HaaS DIY一个智能垃圾桶吧
240 0
|
传感器 监控 物联网
饭碗空空 猫猫流泪 用HaaS Python DIY一个宠物自动投食器 再也不用担心主子挨饿
饭碗空空 猫猫流泪 用HaaS Python DIY一个宠物自动投食器 再也不用担心主子挨饿
208 0
|
传感器 编解码 Python
【HaaS Python硬件积木】空气质量检测模块 - CCS811
【HaaS Python硬件积木】空气质量检测模块 - CCS811
220 0
|
6天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
12天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
11天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
12天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
下一篇
无影云桌面