居家實(shí)驗(yàn):為phyphox插上壓強(qiáng)計(jì)的翅膀(一)零. 背景說(shuō)明使用phyphox已經(jīng)有一段時(shí)間了,它里面帶了一個(gè)氣壓計(jì)實(shí)驗(yàn),但是是灰色的,即使你點(diǎn)擊它,它也只會(huì)提示這個(gè)實(shí)驗(yàn)不可用。據(jù)說(shuō)有氣壓計(jì)的手機(jī),要么是旗艦機(jī),要么是商務(wù)機(jī),據(jù)說(shuō)華為Mate上面就有,可是P系列上面就沒有。蘋果不了解。一個(gè)封閉的系統(tǒng)以安全自居,但是可玩性、開放性和所帶來(lái)的創(chuàng)造的熱情與火花就差得遠(yuǎn)了。 phyphox團(tuán)隊(duì)隊(duì)長(zhǎng)塞巴斯蒂安(我記不住那人名字)好多個(gè)宣傳視頻里都有phyphox結(jié)合氣壓計(jì)的實(shí)驗(yàn),這里使用常用常見的GY68-BMP180氣壓傳感器在phyphox體外嫁接一個(gè)氣壓計(jì)——當(dāng)然,研究BMP180并不是為了phyphox,而是打算琢磨一下熱學(xué)實(shí)驗(yàn)。 這個(gè)記錄,是沒有規(guī)劃的。寫哪算哪,只是整理。整理的原因,一方面BMP180有好幾款封裝,而且有的已經(jīng)不再受到官方支持,有的會(huì)在網(wǎng)上由微弱的力量支持著一些Arduino擴(kuò)展庫(kù),甚至還能看到51的、STM32的擴(kuò)展庫(kù)——因?yàn)槭情_源的,所以用起來(lái)并不容易。這里整理的,都是我親自試驗(yàn)過(guò)的,要保證它們能用。此外,看起來(lái)簡(jiǎn)單的東西,往往并不簡(jiǎn)單,整理下來(lái),可備未來(lái)自己用,亦可為他人參照之。內(nèi)容只兩片,一為BMP180與國(guó)際壓強(qiáng)方程的應(yīng)用,另一為藍(lán)牙BLE與phyphox通訊。 一. BMP180與國(guó)際壓強(qiáng)方程1.BMP180氣壓傳感器BMP180氣壓傳感是最為常用常見的氣壓傳感器,如圖1。介紹它的文章特別多,挑幾個(gè)重點(diǎn)列在這里:壓強(qiáng)可測(cè)范圍300hPa至1100hPa(hPa百帕),高度可測(cè)范圍從海拔以下數(shù)百米至海拔9000米,分辨率可達(dá)0.03hPa(0.25米) 0.06hPa(0.5米),這和設(shè)置模型有關(guān)。 需特別注意的是,BMP180電源為3.3V,萬(wàn)不可將其與Arduino 5V相接,雖然有不少文章說(shuō)可以接5V,說(shuō)有穩(wěn)壓及電平轉(zhuǎn)換云云,未免于電子市場(chǎng)之極大豐富尚缺乏想象。 BMP180有溫度輸出和溫度補(bǔ)償功能,這在價(jià)格平易使用方便的傳感器里是不多見的。 2.測(cè)量數(shù)據(jù)先上測(cè)量數(shù)據(jù)。從最簡(jiǎn)單的場(chǎng)景開始。 BMP180與Arduino連接完畢,直接測(cè)量家里室內(nèi)壓強(qiáng)和溫度(7樓): BMP180直接放置在桌子上,壓強(qiáng)1000.49hPa,溫度26.01C。 舉到一臂高處,大約上升0.5cm,壓強(qiáng)顯示1000.45hPa,溫度顯示26.02C。 放在桌子下方,位置下降大約1.0米,壓強(qiáng)顯示1000.62hPa,溫度顯示25.90C。 這確實(shí)靈敏得令人難以置信?。。?/p> 十分顯然,我們可以猜測(cè)phyphox氣壓計(jì)實(shí)驗(yàn)的原理了。我們知道,國(guó)際壓強(qiáng)方程為 其中h是海拔高度,P為當(dāng)前位置大氣壓,為海平面大氣壓強(qiáng),均以hPa為單位。那么,我們只要能夠知道就能夠讓BMP180向我們匯報(bào)高度了,去哪里得到呢?當(dāng)然最好的辦法是到地面測(cè)量一下,另一個(gè)辦法是到https://www.查詢實(shí)時(shí)海平面氣壓圖,如圖2,這個(gè)網(wǎng)站有中文。 我整理這些文字時(shí),我家里的氣壓已經(jīng)變化了,大約1001.50hPa,如圖3,于是 確實(shí)暴露了7樓的位置,比較符合實(shí)際。 但是這里面也有一些問題: (1)一個(gè)是從氣壓分布圖看,若北京海平面氣壓取1003hPa,那么得到的高度只有12米,這和BMP180強(qiáng)大的分辨率是不相符的; (2)北京地區(qū)雖地處平原,但海拔也并非零米,大概是從地表面算起的。 (3)一個(gè)校準(zhǔn)的方法,是把h替換成,這樣從數(shù)據(jù)擬合里可以把提取出來(lái)。 3.接線圖這個(gè)小板需要自己焊排針,好在只有4根。然后按照以下的針腳對(duì)應(yīng)。圖省了。 BMP180> Arduino Uno VIN > 3V3 #<------要超級(jí)小心,不能使用5V,還是要尊重DataSheet數(shù)據(jù) GND > GND SCL > A5 SDA > A4 4.實(shí)驗(yàn)圖5.串口監(jiān)視器6.計(jì)劃研究有的動(dòng)了,有的還沒動(dòng),有的可能已經(jīng)沒興趣了。 (1)通過(guò)國(guó)際壓強(qiáng)方程得到壓強(qiáng)與海拔的正或逆的關(guān)系; (2)嫁接到手機(jī),完成著名的phyphox手機(jī)壓強(qiáng)計(jì)電梯高度實(shí)驗(yàn); (3)可以嘗試氣體三定律實(shí)驗(yàn),可簡(jiǎn)易完成PT關(guān)系 (4)實(shí)驗(yàn)測(cè)量阿伏伽德羅常數(shù) 7.技術(shù)補(bǔ)充條目式列舉如下。 (1)BMP180通訊方式是I2C,可以查看Arduino電路圖知道它與BMP180的接線方法; (2)部分BMP180是5針、甚至6針的,似乎是過(guò)時(shí)的產(chǎn)品,它們的支持庫(kù)特別雜亂,且經(jīng) 常與wire庫(kù)沖突,盡量不用這些雜牌支持庫(kù); (3)所有的支持庫(kù)里最好的,是Sparkfun的開源支持庫(kù)BMP180_Breakout_Arduino_Library; (4)電源電壓3.3V,沒有保證的情況下,先別用5V。 (5)本例代碼及解釋,更詳細(xì)的,請(qǐng)自行去閱讀支持庫(kù)源碼。 #include <Wire.h> 有了擴(kuò)展庫(kù)的支持,我們只需start和get去循環(huán)讀數(shù)就可以了。 |
|
來(lái)自: 新用戶5228KeDY > 《待分類》