如果您想构建自己的温度监测系统或测量无人机的高度,或者只是想测量您所在地区的大气压力,那么您在项目中使用的最佳模块之一就是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#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);
}
-
压力传感器
+关注
关注
35文章
2214浏览量
163409 -
Arduino
+关注
关注
188文章
6469浏览量
187034 -
BMP280
+关注
关注
1文章
20浏览量
5729
发布评论请先 登录
相关推荐
评论