将BMP280压力传感器模块与Arduino连接的方法

描述

  如果您想构建自己的温度监测系统或测量无人机的高度,或者只是想测量您所在地区的大气压力,那么您在项目中使用的最佳模块之一就是BMP280 压力传感器模块。BMP280是绝对压力和温度监测传感器,是BMP085、BMP180、BMP183传感器的升级版。为什么叫升级版?它将在以下各节中讨论。

  BMP280 传感器模块可以与 Arduino、PIC、AVR 等微控制器一起使用。对于这个项目,我们将使用Arduino Uno 和 BMP280以及 LCD 16x2 显示模块来显示温度和压力值。在将 BMP280 与 Arduino 连接之前,我们需要下载 Adafruit 开发的BMP280 Arduino 库。

  所需组件

  阿杜诺

  BMP280

  连接电线

  面包板

  液晶显示器- 16x2

压力传感器

  BMP280 压力传感器模块:

压力传感器

  BMP280 传感器模块在 1.71V 的最小电压 (VDD) 下工作,而之前版本的传感器模块在 1.8V (VDD) 下工作。就电流消耗而言,BMP280 消耗 2.7uA,而 BMP180 消耗 12uA,BMP183 和 BMP085 各消耗 5uA。BMP280 还支持新的过滤模式。BMP280 传感器模块支持 I2c 和 SPI 协议,而其余传感器支持 I2c 或 SPI。BMP280 传感器模块的精度为 ±0.12 hPa,相当于海拔高度差±1 m。由于这些关键特性,它主要用于各种应用。BMP传感器由压力传感元件、湿度传感元件和温度传感元件组成,它们进一步连接到压力前端、湿度前端和温度前端。这些前端 IC 是用于放大小信号的灵敏度模拟放大器。该模拟前端 IC 的输出作为输入信号馈送到 ADC。在这种情况下,模拟值被转换为数字电压,并且该电压被馈送到逻辑电路以进一步与外界连接。

  BMP280 传感器模块由三种功耗模式组成,睡眠模式、强制模式和正常模式。在睡眠模式下,不执行任何测量,并且功耗最低。在强制模式下,根据选定的测量和过滤选项执行单次测量。正常模式在测量和待机周期之间连续循环,周期时间段将由 Tstandby 定义。待机模式下的电流略高于睡眠模式。

  将 BMP280 与 Arduino 连接的电路图:

  将Arduino 与 BMP280传感器和 LCD连接的电路图如下所示。

压力传感器

  传感器的 VCC 和 GND 引脚连接到 Arduino 的 3v3 和 GND 引脚。传感器的 SCL 和 SDA 引脚连接到 Arduino 板的 A5 和 A4。LCD连接如下

压力传感器

将 BMP280 与 Arduino 连接的 Arduino 程序:

完整的BMP280 Arduino 代码可以在本页底部找到,可以直接上传到您的 Arduino 板。下面给出相同的解释

包含这些库以启用特殊功能。#include 头文件我们可以直接读取来自传感器的值。#include 标头有助于使用 I2C 通信。#include 头文件用于访问 LCD 的特殊功能,如 lcd.print()、Lcd.setCursor() 等。可以使用上面给出的链接下载这些头文件。下载的文件将采用 zip 格式。现在打开 Arduino 选择 Sketch>include library>Add.zip library。现在添加下载的文件。

 

#include 
#include 
#include 
#include 

 

为 Adafruit_BMP280 创建对象 BMP。创建目标文件以访问特殊功能。

 

Adafruit_BMP280 bmp;// I2C

 

设置 Arduino 的引脚以与 LCD 通信。使用这些引脚数据将被传输。

 

液晶液晶屏(9、8、5、4、3、2);

 

初始化 LCD 和串行通信。

 

无效设置(){
  lcd.开始(16,2);
  序列号.开始(9600);
  Serial.println(F("BMP280 测试"));
  lcd.print("欢迎来到");
  lcd.setCursor(0,1);
  lcd.print("电路文摘");
  延迟(1000);
  lcd.clear();
  如果(!bmp.begin()){
    Serial.println(F("找不到有效的 BMP280 传感器,检查接线!"));
    而(1);
  }

 

该函数在 bmp 对象初始化失败时起作用。

 

  /* 数据表中的默认设置。*/
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 操作模式。*/
                  Adafruit_BMP280::SAMPLING_X2,/* 温度。过采样 */
                  Adafruit_BMP280::SAMPLING_X16, /* 压力过采样 */
                  Adafruit_BMP280::FILTER_X16, /* 过滤。*/
                  Adafruit_BMP280::STANDBY_MS_500); /* 待机时间。*/
}

 

这部分代码在串行监视器上打印温度,用于调试目的。

 

无效循环(){
    Serial.print(F("温度 = "));
    Serial.print(bmp.readTemperature());
    Serial.println("*C");

 

函数bmp.readPressure和bmp.readTemprature用于调用特殊函数并返回温度和压力值。

 

    lcd.print(bmp.readTemperature());
    lcd.print(bmp.readPressure());

 

  Arduino BMP280压力传感器接口项目的工作

  函数bmp.readTemprature()和bmp.readPressure()用于返回温度和压力值。这些函数是一组执行特殊任务的语句,在我们的例子中是返回温度和压力文件。使用bmp.readTemprature()和bmp.readPressure()函数调用这些函数。lcd.setCursor将 LCD 的光标设置到屏幕上所需的位置。液晶打印命令从程序员设置的位置打印数据。如果 LCD 没有设置位置,默认以(0,0)为初始位置,连续打印数据。下一个数据占据下一列的位置,并且该过程继续进行,直到它到达行的末尾并移动到下一行。

压力传感器

  BMP280 可用于飞行玩具、手机、平板电脑、PC、GPS 设备、便携式保健设备、家庭气象站等。按照此程序并使用头文件和一些特殊功能,我们可以轻松地将 BMP280 与阿杜诺。完整的工作也可以在下面给出的视频中找到,希望您喜欢这个BMP280 Arduino 教程并学到一些有用的东西。

#include

#include

#include

#include

Adafruit_BMP280 bmp; // I2C

//Adafruit_BMP280 bmp(BMP_CS); //硬件SPI

//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);

液晶液晶(9、8、5、4、3、2);

无效设置() {

lcd.begin(16,2);

序列号.开始(9600);

Serial.println(F("BMP280 测试"));

lcd.print("欢迎来到");

lcd.setCursor(0,1);

lcd.print("电路文摘");

延迟(1000);

lcd.clear();

if (!bmp.begin()) {

Serial.println(F("找不到有效的 BMP280 传感器,检查接线!"));

而(1);

}

/* 数据表中的默认设置。*/

bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 操作模式。*/

Adafruit_BMP280::SAMPLING_X2, /* 温度过采样 */

Adafruit_BMP280::SAMPLING_X16, /* 压力过采样 */

Adafruit_BMP280::FILTER_X16, /* 过滤。 */

Adafruit_BMP280::STANDBY_MS_500); /* 待机时间。*/

}

void loop() {

Serial.print(F("Temperature = "));

Serial.print(bmp.readTemperature());

Serial.println("*C");

lcd.setCursor(0,0);

lcd.print("温度= ");

lcd.print(bmp.readTemperature());


Serial.print(F("压力 = "));

Serial.print(bmp.readPressure());

Serial.println("Pa");

lcd.setCursor(0,1);

lcd.print("按=");

lcd.print(bmp.readPressure());

Serial.print(F("大约高度 = "));

Serial.print(bmp.readAltitude(1018)); /* 调整为当地预测!*/

Serial.println("m");

序列号.println();

延迟(2000);

}
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
tqfenghanjietq 06-10
0 回复 举报
本来是很简单的应用确因为有些英语自动翻译成了中文,反而一头雾水,看不懂。呵呵 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分