接口BMP280與Arduino讀取壓力,溫度和高度
本文展示了如何將BMP280壓力傳感器與Arduino連接起來(lái)。BMP280是由博世Sensortec公司開(kāi)發(fā)的壓力、濕度、溫度和近似高度傳感器。它非常適用于與環(huán)境相關(guān)的應(yīng)用,該傳感器也可用于與假肢相關(guān)的應(yīng)用,其中壓力是一個(gè)非常關(guān)鍵的參數(shù)。在無(wú)人機(jī)中,壓力、溫度和高度可以用于監(jiān)測(cè)和進(jìn)一步觀察。
博世BMP280可以與各種微控制器接口,如PIC, AVR, ESP32/ESP8266, Arduino等。在本教程中,我們將使用Arduino來(lái)連接我們的BMP280傳感器。除了BMP280之外,還有一種叫做BMP180的傳感器可以測(cè)量壓力。我們之前已經(jīng)將BMP180與樹(shù)莓派和BMP180與ESP32接口,以構(gòu)建基于物聯(lián)網(wǎng)的氣象站,如果感興趣,您可以查看它們。
組件的要求
1.Arduino Uno和USB電纜。
2.BMP280。
3.試驗(yàn)板。
4.跳線。
BMP280壓力傳感器的工作原理
在開(kāi)始接口之前。讓我們知道一些關(guān)于傳感器的重要細(xì)節(jié)。該傳感器的工作電壓最低為1.7V至3.6V。BMP280由一個(gè)壓阻傳感元件組成,然后與a /D轉(zhuǎn)換器連接。該轉(zhuǎn)換器提供具有特定傳感器補(bǔ)償?shù)霓D(zhuǎn)換結(jié)果以及數(shù)字接口,并配備了內(nèi)置IIR濾波器,以最大限度地減少輸出數(shù)據(jù)中的干擾。
BMP280可以使用I2C和SPI兩種協(xié)議進(jìn)行接口。它可以測(cè)量300至1100 hPa的壓力,精度為±1%,溫度范圍為-40至+85℃,精度為±1%,并可以通過(guò)一些計(jì)算給出近似的海拔高度。該傳感器的工作電壓為1.2V至3.6V,在休眠模式下電流消耗為0.1uA,這使得它適用于嵌入式電子產(chǎn)品中的低功耗應(yīng)用。要了解有關(guān)傳感器及其技術(shù)規(guī)格的更多信息,您可以查看BMP280 Datasheet。
簡(jiǎn)而言之,讓我們了解什么是I2C(內(nèi)部集成電路)協(xié)議,它允許我們將多個(gè)從機(jī)與一個(gè)或多個(gè)主電子設(shè)備集成在一起。它是一個(gè)2線協(xié)議,可以支持多達(dá)1008個(gè)從機(jī)。每個(gè)從屬節(jié)點(diǎn)可以使用唯一的地址進(jìn)行標(biāo)識(shí)。
BME280與BMP280的區(qū)別
請(qǐng)注意,有兩種類型的傳感器在市場(chǎng)上出售,即BME280和BMP280。以下是這兩種傳感器之間的區(qū)別。
?BME280和BMP280都是由博世Sensortec公司開(kāi)發(fā)的。
?BMP280傳感器用于查找數(shù)字壓力和溫度,而B(niǎo)ME280可用于測(cè)量數(shù)字壓力,溫度和濕度。
?由于這個(gè)差異,BME280比BMP280稍微貴一些。
?因此,根據(jù)您的項(xiàng)目要求,您可以選擇適合您的用途的傳感器。
BMP280與Arduino接口電路圖
BMP280與Arduino連接的完整原理圖如下所示。我還使用了注釋選項(xiàng)來(lái)說(shuō)明哪些引腳連接到什么。
連接非常簡(jiǎn)單,我使用面包板安裝傳感器,并使用連接線將傳感器與Arduino連接起來(lái)。我的硬件設(shè)置如下所示
在Arduino IDE中安裝BMP280庫(kù)
為了使用I2C與該模塊通信,避免復(fù)雜的編程技術(shù),我們需要使用這個(gè)庫(kù)Adafruit_BMP280_Library。下載zip格式的庫(kù),并按照步驟將其安裝到Arduino IDE中
轉(zhuǎn)到您下載zip文件夾的位置,選擇zip文件并按“打開(kāi)”。
這將在Arduino IDE上安裝庫(kù)。該傳感器的默認(rèn)I2C地址為0x77。如果您遇到如下所示無(wú)法找到有效的BMP280傳感器的錯(cuò)誤,請(qǐng)檢查接線!
如果問(wèn)題仍然存在,將Adafruit_BMP280.cpp的_i2caddr中的傳感器地址修改為0x76,如下所示。
如果一切正常,可以在串行監(jiān)視器上找到輸出,如下所示。
本文中演示的完整程序可以在本頁(yè)底部找到。代碼解釋如下。
我們通過(guò)定義庫(kù)開(kāi)始程序,如下所示。
然后我們將定義SPI引腳,如果我們使用SPI通信協(xié)議。
在設(shè)置中,我們定義串行監(jiān)視器波特率,并通過(guò)調(diào)用begin()函數(shù)初始化I2C模塊。它有一些打印語(yǔ)句,使代碼在重置時(shí)交互。如果傳感器由于錯(cuò)誤的地址或布線問(wèn)題而無(wú)法讀取,則在串行上給出錯(cuò)誤以檢查傳感器的布線和地址。如果傳感器連接成功,它將開(kāi)始在串行終端上打印值。
在循環(huán)中,代碼使用以下函數(shù)向我們提供來(lái)自傳感器的讀數(shù),并將其打印到串行終端上。
在市場(chǎng)上,有各種各樣的傳感器模塊,我們擁有的傳感器是直接到接口的,但是你有機(jī)會(huì)得到可能有I2C地址選擇器的傳感器,像這樣,
您不必?fù)?dān)心,我們將解釋如何使用與上面解釋的相同步驟連接此傳感器。
完整的工作也可以在下面的視頻鏈接中找到。總之,這種傳感器使我們能夠輕松獲得壓力,濕度,溫度和海拔,而無(wú)需任何復(fù)雜的布線或編程。該傳感器工作在I2C協(xié)議上,該協(xié)議易于理解,并具有預(yù)定義的功能,可以為我們完成工作。
本文編譯自iotdesignpro