BMP280温度气压传感器arduino UNO 上的使用-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4680|回复: 3

[已解决] BMP280温度气压传感器arduino UNO 上的使用

[复制链接]
发表于 2019-10-18 16:30 | 显示全部楼层 |阅读模式
气象站实验概述
本实验,我们利用arduinoUNO R3板以及外围传感器,搭建一个DIY气象站。
气压传感器模块介绍
BMP280是一种专为移动应用设计的绝对气压传感器。该传感器模块采用极其紧凑的封装。得益于小尺寸和低功耗特性,这种器件可用在如移动电话、GPS模块或手表等电池供电型设备中。
特性
l  工作范围 300 hPa 至 100 hPa
l  工作温度范围:-40°C 至 +85°C
l  相对的绝对精度 ±0.12 hPa(典型值)
l  平均测量时间 5.5 ms
l  电源电压 VDD 1.71V 至 3.6 V
l  电源电压 VDDIO1.2 V 至 3.6 V
l  I²C 和串行外设接口 (SPI)
l  2.0 mm x 2.5 mm x 0.95 mm、8 引脚 LGA,金属封装
应用
l  GPS 导航增强(例如改进初次定位时间、航位推算、斜率检测)
l  室内导航(室内检测、电梯检测)
l  户外导航,休闲和运动应用
l  天气预报
l  健康保健应用(如肺活量测定)
l  垂直速度指示(如上升/下沉速度)
                                 
大气压强传感器模块原理图
     
大气压测量原理
Arduino UNO R3SPI引脚分别是:
  
D13
  
SCK
D12
MISO
D11
MOSI
D10
SS
需要注意的是这块气压传感器板子的额定电压是3.3v,且同时支持两种连接方式:I²CSPI ,以SPI的连接方式和程序为例,连线如下。
备注:不要使用5V,可能会损坏BMP280传感器。
  
GY-BM E/P 280
  
Arduino UNO
VCC
3.3v
GND
gnd
SCL
13
SDA
11
CSB
10
SDO
12
实验器件清单
1.       UNO R3 主板*1
2.       Sensor 扩展板*1
3.       USB 数据线*1
4.       气压传感器模块*1
5.       LCD1602模块
接线
     
     
实验一 测试BPM280模块实验原理
Arduino UNO R3板和气压传感器模块连接,测量温度,气压等大气数据。
ArduinoIDE 编程程序
  
#include  <SPI.h>
  
#include  "Adafruit_Sensor.h"
  
#include  "Adafruit_BMP280.h"
  
  
#define  BMP_SCK 13
  
#define  BMP_MISO 12
  
#define  BMP_MOSI 11
  
#define  BMP_CS 10
  
  
Adafruit_BMP280  bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);
  
  
  
void setup() {
  
  Serial.begin(9600);
  
  Serial.println(F("BMP280  test"));
  
  
  
  if (!bme.begin()) {  
  
    Serial.println("Could  not find a valid BMP280 sensor, check wiring!");
  
    while (1);
  
  }
  
}
  
  
  
void loop() {
  
    Serial.print("Temperature  = ");
  
    Serial.print(bme.readTemperature());
  
    Serial.println("  *C");
  
   
  
    Serial.print("Pressure  = ");
  
    Serial.print(bme.readPressure());
  
    Serial.println("  Pa");
  
    Serial.println();
  
    delay(2000);
  
}
   
  
实验结果
实验一测试BPM280模块实验目的
Arduino UNO R3板和气压传感器模块连接,测量温度,气压等大气数据并显示在LCD上。
ArduinoIDE 编程程序
  
#include <Wire.h>
  
#include <SPI.h>
  
#include "Adafruit_Sensor.h"
  
#include "Adafruit_BMP280.h"
  
#include "LiquidCrystal_I2C.h"
  
  
  
#define BMP_SCK 13
  
#define BMP_MISO 12
  
#define BMP_MOSI 11
  
#define BMP_CS 10
  
  
//Adafruit_BMP280 bme; // I2C
  
//Adafruit_BMP280 bme(BMP_CS); // hardware SPI
  
Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);
  
LiquidCrystal_I2C lcd(0x27, 16, 2);  //  set the LCD address to 0x27 for a 16 chars and 2 line display
  
  
void setup() {
  
  Serial.begin(9600);
  
  Serial.println("BMP280  test");
  
  
  
  if (!bme.begin()) {  
  
    Serial.println("Could  not find a valid BMP280 sensor, check wiring!");
  
    while (1);
  
  }
  
   lcd.init();
  
   lcd.backlight();
  
}
  
  
  
void loop() {
  
  
     
  
     Serial.print("Tep:  ");
  
     Serial.print(bme.readTemperature());
  
     Serial.println("'C");
  
     
  
     lcd.setCursor(0, 0);
  
     lcd.print("Tep:  ");
  
     lcd.print(bme.readTemperature());
  
     lcd.print("'C");
  
     
  
     lcd.setCursor(0, 1);
  
     lcd.print("Pre:");
  
     lcd.print(bme.readPressure());
  
     lcd.print("  Pa");
  
  
     Serial.print("Pressure  = ");
  
     Serial.print(bme.readPressure());
  
     Serial.println("  Pa");
  
     delay(5000);
  
}
  
  
实验结果

发表于 2021-9-7 00:59 | 显示全部楼层
大佬,为什么我得找不到bmp280呀,程序和接线都没有问题,板子是arduino UNO R3
发表于 2021-9-7 01:01 | 显示全部楼层
zcc123 发表于 2021-9-7 00:59
大佬,为什么我得找不到bmp280呀,程序和接线都没有问题,板子是arduino UNO R3 ...

我用的spi得方式
发表于 2021-12-11 14:06 | 显示全部楼层
zcc123 发表于 2021-9-7 01:01
我用的spi得方式

同求,一样的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 19:03 , Processed in 0.131501 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表