简介
DFRobot新推BMP280气压传感器Breakout版本,具有温度检测和大气压检测双重功能。支持Arduino代码控制,传感器模块采用非常紧凑的封装。它是基于博世经过验证的压阻式压力传感器技术,具有高精度和线性度以及长期稳定性和高EMC稳健性。众多的器件操作选项提供了最高的灵活性,以优化器件的功耗,分辨率和滤波器性能。
气压传感器通常用于大气压检测和温度检测,并且由于气压和海拔高度之间的关系,人们通常可以利用气压来检测海拔高度和相对的楼层高度。在导航方面,气压计也可以用来增强GPS定位效果或者配合IMU传感器,实现三维(3D)室内导航。
应用领域
- 温度检测
- 大气压强检测
- 海拔高度检测
- 室内导航(楼层检测、电梯检测)
- 户外导航、休闲和运动的应用程序
- 医疗保健应用程序(如肺活量测定法)
- 垂直速度指示(如上升/下沉速度)
技术规格
- 工作电压:3.3V-5.5V
- 气压检测范围:300~1100hPa
- 相对精度:±0.12hPa(±1m)
- 绝对精度:±1hPa(±8.33m)
- 温度测量范围:0℃~65℃
- 温度测量精度: 0.01℃
- 外形尺寸:16.5mm x 12.5mm
更多详细的技术规格信息请参见附件中的BMP280数据手册
引脚说明
丝印 | 功能描述 |
---|---|
VCC | 电源正极 |
GND | 电源负极 |
SCL | I2C时钟 |
SDA | I2C数据 |
ADDR | I2C地址选择 |
使用教程
- 目标:测出当前环境下的大气压强和温度值,计算出模块当前所在环境的海拔高度
准备
- 硬件
- 1 x Arduino UNO控制板
- 1 x BMP280 Digital pressure sensor module温度&气压计
- 若干 杜邦线
- 软件
- Arduino IDE 点击下载Arduino IDE
接线图
连接模块与UNO主板(通过I2C接口),按照如下图的方式连接。
样例代码
/*!
* read_data.ino
*
* Download this demo to test simple read from bmp280, connect sensor through IIC interface
* Data will print on your serial monitor
*
* Copyright [DFRobot](https://www.dfrobot.com), 2016
* Copyright GNU Lesser General Public License
*
* version V1.0
* date 12/03/2019
*/
#include "DFRobot_BMP280.h"
#include "Wire.h"
typedef DFRobot_BMP280_IIC BMP; // ******** use abbreviations instead of full names ********
BMP bmp(&Wire, BMP::eSdoLow);
#define SEA_LEVEL_PRESSURE 1015.0f // sea level pressure
// show last sensor operate status
void printLastOperateStatus(BMP::eStatus_t eStatus)
{
switch(eStatus) {
case BMP::eStatusOK: Serial.println("everything ok"); break;
case BMP::eStatusErr: Serial.println("unknow error"); break;
case BMP::eStatusErrDeviceNotDetected: Serial.println("device not detected"); break;
case BMP::eStatusErrParameter: Serial.println("parameter error"); break;
default: Serial.println("unknow status"); break;
}
}
void setup()
{
Serial.begin(115200);
bmp.reset();
Serial.println("bmp read data test");
while(bmp.begin() != BMP::eStatusOK) {
Serial.println("bmp begin faild");
printLastOperateStatus(bmp.lastOperateStatus);
delay(2000);
}
Serial.println("bmp begin success");
delay(100);
}
void loop()
{
float temp = bmp.getTemperature();
uint32_t press = bmp.getPressure();
float alti = bmp.calAltitude(SEA_LEVEL_PRESSURE, press);
Serial.println();
Serial.println("======== start print ========");
Serial.print("temperature (unit Celsius): "); Serial.println(temp);
Serial.print("pressure (unit pa): "); Serial.println(press);
Serial.print("altitude (unit meter): "); Serial.println(alti);
Serial.println("======== end print ========");
delay(1000);
}
结果
- 读取BMP280模块采集到的温度、大气压、海拔等信息,并通过串口打印出数值,其测量值的单位分别为摄氏度、pa、m;其中海拔是通过板载传感器BMP280采集到的温度、压强等值计算而来,不是实际测量之值,存在误差。
- 在串口查看读取到的值
Mind+ Python模式编程(行空板)
Mind+Python模式为完整Python编程,因此需要能运行完整Python的主控板,此处以行空板为例说明
连接图
操作步骤
1、下载及安装官网最新软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
2、切换到“Python模式”。“扩展”中选择“官方库”中的“行空板”和“pinpong库”中的”pinpong初始化“和“BMP280温度传感器”。切换模式和加载库的详细操作链接
3、进行编程
4、连接行空板,程序点击运行后,可在终端查看数据。行空板官方文档-行空板快速上手教程 (unihiker.com)
代码编程
以pinpong库为例,行空板官方文档-行空板快速上手教程 (unihiker.com)
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from pinpong.libs.dfrobot_bmp280 import BMP280
from pinpong.board import Board
import time
Board().begin()
bmp2801 = BMP280(mode = 0)
bmp2801.begin()
while True:
print("气压:")
print(bmp2801.pressure_p())
print("海拔:")
print(round(bmp2801.altitude_m(bmp2801.pressure_p()), 2))
print("温度:")
print(bmp2801.temp_c())
time.sleep(0.2)
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
更多
[DFRobot商城购买链接]