# 使用BMP180測量氣壓值與高度
## 研究目的與目標
### 引言
- 為了更了解第一代航電板,學長建議我從當中的零件(BMP 280)開始探討,藉由撰寫氣壓計程式的過程中,熟悉arduino的語法
- 因為手邊材料的緣故,使用BMP180取代BMP280
### 研究目的
- 熟悉arduino程式語法
- 寫出程式並利用BMP180測量氣壓,並能準確地偵測到物體上升或下降
- 將測量到的氣壓值轉換成所在高度
---
## 研究內容
### 研究材料
- arduino UNO Atmega328
- 杜邦線
- 氣壓計(BMP180)

- 麵包板

---
### arduino library
- <SFE_BMP180.h>
下載點: https://github.com/LowPowerLab/SFE_BMP180
- Wire.h
#### SFE_BMP180.h 函式
1. 偵測氣壓值 char getPressure(double &P, double &T);
returns 1 成功運作,returns 0 代表失敗
2. 命令BMP180運作 char startPressure(char oversampling);
returns 0 啟動失敗
---
### arduino UNO 與 BMP180 連接方式

- VIN --> 3.3V
- GND --> GND
- SCL / SCK - > A5(模擬銷 5)
- SDA / SDI - > A4(模擬引腳 4)
---
### 程式碼改良
#### 7/24
1. 改良基準高度會變動的問題(已完成)
將程式碼改成一開始輸入高度值(基準點高度)

2. 改善每次測量間隔過久,從10秒一次改成5秒一次(已完成)

3. 改良氣壓換算高度的公式,目前使用的方法為每上升9公尺,氣壓下降100Pa來換算(未完成)
>P0=Ps×10^( h/18400(1+Tm/273)
這個公式的問題在於,Tm需要使用12小時前的溫度值
#### 7/26
1. 修正基準點變動的錯誤

---
### 測試結果
#### 7/15
- 二樓結果:

- 五樓結果:

#### 7/24

#### 7/26
https://youtu.be/Vul4OVtnbvU

---
### 待改善內容
1. 高度換算公式
2. 在同一地點,氣壓值不穩定,導致測得高度起起伏伏
---
### 研究時程
#### 第一階段(7/6~7/18): 收集材料
#### 第二階段(7/18~8/8): 學習Arduino語法與程式碼的調整
#### 第三階段(8/8~8/22): 戶外降落測試
---
### 會議內容及學長建議的改良方法
#### 7/13社團會議
- 因為杜邦線的品質不一,利用麵包板接線到arduino比較穩定
- 下周生出時程表
- 題目內容較小 未來朝著其他方向發展
#### 7/18航電組會議
- 在二樓以及五樓測得的海平面氣壓不同(library內建函式),學長說大部分是使用前輸入基準的數值,可以將程式碼改成輸入的
- 閱讀別人寫好的程式碼也是個學習的好方法
#### 7/27社團會議
- 氣壓換算公式: https://en.wikipedia.org/wiki/Barometric_formula
- bmp180以及bmp280library內的濾波公式,可以研究看看
### 延伸學習內容
- [排除雜訊: Kalman filter](
https://hackmd.io/@8DvLSderTbe8QRjE9xlYvA/B1D7Fh0yK)