亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

BMP280:测量温度、压力和高度

组件和用品

Arduino UNO
× 1
Adafruit BMP280
× 1
Adafruit OLED 128x32 i2c
× 1

关于这个项目

您好,欢迎来到本教程,我在 Arduino UNO 板和 OLED 显示器的帮助下使用 BMP280 测量温度、压力和高度。以下是其数据表中的一些 BMP280 关键参数:

所以对于这个项目,我们会像往常一样使用该模块在公制和英制系统中测量所有这些东西,我不确定单位,但你总是可以通过代码转换它们,这里是我们要的组件使用:

测试和故障排除:

连接模块后,最好测试库示例中的代码,其名称为“BMP280test”,如果未检测到您的模块,如下图所示:

您可以运行 i²c 扫描仪代码(但拔下任何其他 i²c 设备,如 LCD 或 OLED),如果您的模块没有损坏,或者没有焊接问题,您将看到该设备已被扫描仪检测到:

现在注意地址并转到您的库 c++ 文件,库通常安装在“Documents/Arduino/Libraries”中:

并用合适的编辑器打开它,我使用的是 Dev c++

然后转到“41”行,_i2caddr 将“a”更改为您在串行监视器上找到的地址:

全部保存并关闭,该库旨在处理具有 0x77 作为 i²c 地址的模块,但我使用的模块具有 0x76。

再次运行测试代码:

测试图片:

我希望它对你有用,如果你有任何问题,请在评论中留言。

代码

  • bmp280_Serial_metric.ino
  • bmp280_Serial_Imperial.ino
  • bmp280_OLED_m.ino
  • bmp280_OLED_US.ino
bmp280_Serial_metric.inoArduino
/* 此代码与 Adafruit BMP280(公制)一起使用 * 它测量温度和压力,并将它们显示在带有海拔高度的串行监视器上 * 这是 Adafruit 示例代码的修改版本 * 请参阅 www.surtrtech .com 或 SurtrTech Youtube 频道 */#include Adafruit_BMP280 bmp; // I2C Interfacevoid setup() { Serial.begin(9600); Serial.println(F("BMP280 测试")); if (!bmp.begin()) { Serial.println(F("找不到有效的 BMP280 传感器,请检查接线!"));而 (1); } /* 数据表中的默认设置。 */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 操作模式。*/ Adafruit_BMP280::SAMPLING_X2, /* 温度过采样 */ Adafruit_BMP280::SAMPLING_X16, /* 压力过采样 */ Adafruit::_BMP280,/*Filtering. */ Adafruit_BMP280::STANDBY_MS_500); /* 待机时间。 */}void loop() { Serial.print(F("Temperature =")); Serial.print(bmp.readTemperature()); Serial.println(" *C"); Serial.print(F("压力 =")); Serial.print(bmp.readPressure()/100); //以hPa为单位显示压力,您可以更改单位 Serial.println(" hPa"); Serial.print(F("大约高度 =")); Serial.print(bmp.readAltitude(1019.66)); //“1019.66”是您所在地区白天海平面的压力(hPa) Serial.println(" m"); //如果你不知道,修改它直到你得到你当前的高度 Serial.println();延迟(2000);}
bmp280_Serial_Imperial.inoArduino
/* 此代码用于 Adafruit BMP280 (Imperial) * 它测量温度和压力,并在串行监视器上显示高度 * 这是 Adafruit 示例代码的修改版本 * 请参阅 www.surtrtech .com 或 SurtrTech Youtube 频道 */#include Adafruit_BMP280 bmp; // I2Cvoid setup() { Serial.begin(9600); Serial.println(F("BMP280 测试")); if (!bmp.begin()) { Serial.println(F("找不到有效的 BMP280 传感器,请检查接线!"));而 (1); } /* 数据表中的默认设置。 */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 操作模式。*/ Adafruit_BMP280::SAMPLING_X2, /* 温度过采样 */ Adafruit_BMP280::SAMPLING_X16, /* 压力过采样 */ Adafruit::_BMP280,/*Filtering. */ Adafruit_BMP280::STANDBY_MS_500); /* 待机时间。 */}void loop() { float f =bmp.readTemperature()*9/5 + 32; //从 C 到 F 的转换 Serial.print(F("Temperature =")); Serial.print(f); Serial.println(" *F");浮动 P =bmp.readPressure()/3386.39; //以英寸汞柱显示压力,您可以更改单位 Serial.print(F("Pressure =")); Serial.print(P); Serial.println(" inHg");浮点 A =bmp.readAltitude(1019.66)*3.28084; //“1019.66”是您所在地区白天海平面的压力(hPa) Serial.print(F("Approx height =")); //如果你不知道,修改它直到你得到你当前的高度 Serial.print(A); Serial.println("英尺"); Serial.println();延迟(2000);}
bmp280_OLED_m.inoArduino
/* 此代码用于 Adafruit BMP280 和 OLED 屏幕(公制) * 测量温度和压力,并在 OLED 显示屏上显示高度 * 这是 Adafruit 示例代码的修改版本 * 请参阅www.surtrtech.com 或 SurtrTech Youtube 频道 */#include  //OLED 和 BMP280 的库#include #include #define SCREEN_WIDTH 128 // OLED 显示宽度,以像素为单位#define SCREEN_HEIGHT 32 // OLED 显示高度,以像素为单位#define OLED_RESET -1 // 重置引脚#(如果共享 Arduino 重置引脚,则为 -1)Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //声明显示名称(display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); //启动bmp display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //启动OLED显示屏 display.clearDisplay();显示。显示(); display.setTextColor(WHITE); display.setTextSize(1); display.print("SurtrTech"); //显示名称,可以去掉也可以替换 display.setCursor(32,12); display.setTextSize(2); display.println("BMP280");显示。显示(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature(); //读取C中的温度 float P =bmp.readPressure()/100; //以Pa为单位读取压力并转换为hPa float A =bmp.readAltitude(1019.66); //计算海拔高度,“1019.66”是您所在地区白天海平面的压力(hPa)//如果您不知道它,请修改它直到获得您所在位置的海拔高度 display.setCursor(0 ,0); //oled显示,只需要玩文字大小和光标就可以得到你想要的显示 display.setTextColor(WHITE); display.setTextSize(2); display.print("Temp"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); display.setTextSize(1); display.print("C"); display.setTextSize(1); display.setCursor(65,0); display.print("Pres"); display.setCursor(65,10);显示.打印(P); display.setCursor(110,10); display.print("hPa"); display.setCursor(65,25); display.print("Alt"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("m");显示。显示();延迟(2000);}
bmp280_OLED_US.inoArduino
/* 此代码用于 Adafruit BMP280 和 OLED 屏幕(英制) * 测量温度和压力,并在 OLED 显示屏上显示高度 * 这是 Adafruit 示例代码的修改版本 * 参考www.surtrtech.com 或 SurtrTech Youtube 频道 */ #include  //OLED 和 BMP280 的库#include #include #define SCREEN_WIDTH 128 // OLED 显示宽度,以像素为单位#define SCREEN_HEIGHT 32 // OLED 显示高度,以像素为单位#define OLED_RESET -1 // 重置引脚#(如果共享 Arduino 重置引脚,则为 -1)Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //声明显示名称(display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); //启动bmp display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //启动OLED显示屏 display.clearDisplay();显示。显示(); display.setTextColor(WHITE); display.setTextSize(1); display.print("SurtrTech"); //显示名称,可以去掉也可以替换 display.setCursor(32,12); display.setTextSize(2); display.println("BMP280");显示。显示(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature()*9/5 + 32; //读取C中的温度并转换为F float P =bmp.readPressure()/3386.39; //以Pa为单位读取压力并转换为英寸汞柱浮点A =bmp.readAltitude(1019.66)*3.28084; //计算海拔高度,“1019.66”是您所在地区白天海平面的压力(hPa)//如果您不知道它,只需修改它直到您获得您所在位置的海拔高度 display.setCursor(0 ,0); //oled显示,只需要玩文字大小和光标就可以得到你想要的显示 display.setTextColor(WHITE); display.setTextSize(2); display.print("Temp"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); display.setTextSize(1); display.print("F"); display.setTextSize(1); display.setCursor(65,0); display.print("Pres"); display.setCursor(65,10);显示.打印(P); display.setCursor(100,10); display.print("inHg"); display.setCursor(65,25); display.print("Alt"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("ft");显示。显示();延迟(2000);}
BMP280_Adafruit_library
您可能想要更改教程中的内容https://github.com/adafruit/Adafruit_BMP280_Library
Adafruit GFX 库
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

示意图

两个模块均采用i²c接口,SDA/SCL采用A4和A5,BMP280采用5v供电,OLED采用3.3v供电。

制造工艺

  1. 带二维码、RFID 和温度验证的访问控制
  2. 使用 1 线 DS18B20 传感器和 Raspberry Pi 测量温度
  3. Python 和 Raspberry Pi 温度传感器
  4. Raspberry Pi 上的简易温度和湿度
  5. DIY:HomeBrew 的温度监控和调节
  6. Raspberry Pi 读取 BMP085 温度和压力
  7. 实验室和科学项目的温度测量
  8. Raspberry Pi 温度和光传感器
  9. 带模拟传感器的压力气流测量设备
  10. 温湿度数据记录仪
  11. 使用 Arduino 的频率和占空比测量
  12. BME280 Nextion Display 上的温度、湿度和压力