作者:陸向陽
2011年2月Motorola推出Xoom平板電腦,2014年Apple發表iPhone 6/iPhone 6 Plus智慧型手機,這兩者有何特點?那就是:都內建了大氣壓力感測器(Barometer Sensor)。
大氣壓力感測器可以感應大氣壓力,進而推算出您目前所處位置的高度,也可簡稱高度感測器。不過不太幸運的,目前行動裝置配備這項感測器後的應用仍不多,多數用來協助導航或運動記錄,例如您的車是在平面道路上開或是在高架道路上開,導航指示便會不同,或是有人喜好運動,嘗試記錄這次滑雪,滑出去的最高高度到多少?有無破自己個人紀錄?
本文也來教導如何讓LinkIt ONE能連結、運用大氣壓力感測器,雖然過往的應用多與GPS結合,但或許各位還會有許多更佳的妙用。
筆者是使用Grove Starter Kit for LinkIt ONE中所包含的高度感測器,它是Bosch Sensortec公司的BMP180。不過,在筆者之前的網路示範、書籍示範用的是BMP085,是同公司不同型款的感測器。筆者稍微查了一下,推測可能Bosch期望用BMP180取代BMP085。
若將BMP085的程式拿來連結、感測BMP180的話,還是可以得到數據,但卻是錯誤的數據,筆者得到的是數據是:筆者正處於17,000公尺以上的高度,這可比聖母峰的8,848公尺還高啊!而且攝氏超過100度(BMP085與BMP180都是兼具溫度感測功效的大氣壓力感測器),除非是在三溫暖烤箱,否則筆者大概是被煮熟烤乾了!
Step 1: 接上I2C介面
言歸正傳,第一步先把BMP180接上LinkIt ONE,但必須是接I2C介面,不是接一般的GPIO介面,也非UART介面,如下圖的2種接法都可以。BMP180已經在內部將感測到的類比信號轉換成數位,並透過I2C介面輸出,因此也稱為數位壓力感測器(Digital Pressure Sensor)。
Step 2: 導入範例程式
進一步的,把範例程式導入,先到本網址把.zip壓縮檔下載回來後解壓縮到Arduino IDE軟體的library資料夾內,之後開啟執行Arduino IDE。
筆者用的是1.5.7版Arduino IDE,還沒有很徹底完成介面中文化,各位請選File/Examples/Grove_Barometer_Sensor-Master/Barometer_Sensor。
注意唷!在這個選項前若已經解壓縮過往的BMP085範例程式到Arduino IDE的library資料夾內,則會提前出現「Barometer_Sensor」選項,但那是給BMP085用的,選了它,且載入執行,就會出現筆者前述的「攝氏破100度、高度破1萬公尺」的錯誤。
Step 3: 開啟Serial Monitor
載入後,將COM埠從Debug埠切換成MODEM埠,再去開啟Serial Monitor(新版的LinkIt ONE SDK不需要切換COM埠),就可以看到如下圖的攝氏26度、100284Pa大氣壓力、0.9896相對大氣壓力,以及87公尺的高度(筆者測試時約位於12樓高)。
附帶一提的,無論是BMP085或BMP180的範例程式,顯示訊息中的「相對大氣壓力,Related」都寫成「Ralated」,這是個小小Bug,無傷大雅。
以上是最快速見效的高度感測器連線法,若進一步研究程式,其實新舊範例程式差異不大,都是呼叫兩個C語言的含括頭檔(.h),一是Barometer.h,另一是Wire.h,差別主要在Barometer.h,仔細看該檔才能看出連結不同款高度感測器的差異。至於Wire.h只是呼叫用來進行I2C介面的傳輸通訊,幾乎不用改變。
最後再附上感測器的簡單說明,以及範例程式頁面的說明,供各位參考:
- Bosch官網對BMP180的描述,官網似乎已經移除BMP085的資訊
http://www.bosch-sensortec.com/en/homepage/products_3/environmental_sensors_1/bmp180_1/bmp180 - SparkFun官網上的BMP085資訊(.pdf檔)
https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf - Grove – Barometer Sensor (BMP180)英文介紹
http://www.seeedstudio.com/wiki/Grove_-_Barometer_Sensor_(BMP180) - BMP180的控制範例程式,2014年9月24日
https://github.com/Seeed-Studio/Grove_Barometer_Sensor - Grove – Barometer Sensor,BMP085英文介紹
http://www.seeedstudio.com/wiki/Grove_-_Barometer_Sensor - Grove – Barometer Sensor(BMP085) / 气压传感器(簡體中文說明)
http://www.seeedstudio.com/wiki/Grove_-_Barometer_Sensor%28BMP085%29_/_%E6%B0%94%E5%8E%8B%E4%BC%A0%E6%84%9F%E5%99%A8 - BMP085的第一版控制範例程式,2013年1月28日
http://www.seeedstudio.com/wiki/images/archive/e/e8/20130221082300%21Barometer_Sensor.zip - BMP085的第二版控制範例程式,2013年2月21日
http://www.seeedstudio.com/wiki/images/e/e8/Barometer_Sensor.zip
- Ollama官方模型分類觀察 - 2025/06/13
- COMPUTEX Taipei 2025量子技術展示觀察 - 2025/05/29
- Arduino Cloud Editor加入大語言模型幫手功能 - 2025/05/28
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!