Arduino Uno 使用气压传感器
目录
实现效果
如果无法播放,请按一下连接查看: https://www.bilibili.com/video/BV1qV411e7qG
元件说明

专为测量大气压力而设计的基本传感器, BMP180可以测量300至1100 hPa(海拔9000m至-500m)的大气压,以及-40°C至85°C的温度,精度为±1.0°C。 而大气压随天气变化,因此我们也可以用它来监测天气的变化。
(所以在本次实验当中受天气影响,位置实际海拔为20米,但测量出为-1米,因为同样的程序两天前是正确的海拔高度。)
该模块带有板载LM6206 3.3V稳压器,因此您可以与Arduino等5V逻辑微控制器一起使用,而无需担心。
该模块使用的是I2C通信方式,非常方便与其他开发主板进行交互,其I2C地址已设置为0x77。
引脚说明

VIN 是模块的供电输入,可以在3.3V至5V之间的任何范围内 GND 地线,该连接到Arduino的地线(GND) SCL 是I2C接口的串行时钟引脚 SDA 是I2C接口的串行数据引脚
BOM表
| 名称 | 数量 | 
|---|---|
| Arduino Uno | x1 | 
| 气压传感器BMP180 | x1 | 
| 面包板 | x1 | 
| 跳线(杜邦线) | 若干 | 
接线方式
| Arduino Uno 引脚 | <-> | 电位器 引脚 | 
|---|---|---|
| 3.3V | <-> | VCC | 
| GND | <-> | GND | 
| A5 | <-> | SCL | 
| A4 | <-> | SDA | 

程序提点
安装BMP180/BMP085库
在代码编写之前,需要在添加BMP180的库, 从菜单栏中,依次打开:「项目」->「加载库」->「管理库」 在弹出的对话框的搜素栏里,输入:“bmp180” 查找相关的库 我使用的是名为「Adafruit BMP085 Library」的库 点击安装后,等待安装完成即可关闭对话框,进行代码的编写
在视频中有详细的添加步骤,如有不懂可再参考视频。
加载库
安装好之后,则可以在代码中引用加载
#include <Adafruit_BMP085.h>创建bmp实例
创建名为bmp的实例,这样可以方便我们在代码中,使用Adafruit_BMP085的功能和访问
Adafruit_BMP085 bmp;bmp常用函数
readTemperature() 获取/返回 传感器的温度。 readPressure() 获取/返回 传感器的气压。 readAltitude(101500) 获取/返回 指定的大气压力(以hPa为单位)计算海拔高度(以米为单位)。 readSealevelPressure() 获取/返回 计算海平面的压力(以hPa为单位)。
程序实现
// by lingshunlab.com
#include <Adafruit_BMP085.h> // 加载BMP库,BMP085/BMP180通用
Adafruit_BMP085 bmp;  // 创建名为bmp的实例
void setup() {
  Serial.begin(9600); // 设置波特率
  if (!bmp.begin()) { // 判断bmp是否能正常初始化
    Serial.println("Could not find a valid BMP085 sensor, check wiring!"); 
    while (1) {
    }
  }
}
void loop() {
  Serial.print("Temperature = "); 
  Serial.print(bmp.readTemperature()); // 输出温度
  Serial.println(" *C");
  Serial.print("Pressure = "); 
  Serial.print(bmp.readPressure()); // 输出气压
  Serial.println(" Pa");
  Serial.print("Altitude = "); 
  Serial.print(bmp.readAltitude()); // 输出海拔
  Serial.println(" meters");
  Serial.print("Pressure at sealevel (calculated) = "); 
  Serial.print(bmp.readSealevelPressure()); //输出密封面的压力(计算后)
  Serial.println(" Pa");
  Serial.print("Real altitude = "); 
  Serial.print(bmp.readAltitude(101500)); // 输出通过指定海平面气压值计算的实际高度 
  Serial.println(" meters");
  Serial.println();
  delay(500);
}程序上传成功后,打开「串口监视器」可以查看当前的位置信息 

 
							 
							