天天看點

樹莓派使用 DHT11 溫濕度傳感器

一、相關介紹

dht11介紹:

dht11是一款比較便宜的溫濕度傳感器子產品。讀取資料隻需要占用一個io口。能夠同時測量溫度和相對濕度。

需要注意的是,文檔中寫明一句話:小數部分用于擴充,現隻能讀出0。是以小數部分目前永遠是0!

樹莓派io口介紹

我使用的是b版樹莓派,接口如下圖。其中的name一列是樹莓派實際的io口功能。pin#一列是後面要介紹的wiringpi和pi4j庫檔案程式設計使用的接口編号。

樹莓派使用 DHT11 溫濕度傳感器
樹莓派使用 DHT11 溫濕度傳感器

wiringpi介紹

wiringpi是通過c語言控制樹莓派gpio口的頭檔案。在c語言中包含這個頭檔案之後可以很簡單的調用已經封裝好的方法來控制樹莓派gpio口。程式需要先安裝。

編譯和運作:

寫好c檔案後,通過如下指令進行編譯:

gcc是編譯器,-wall是在編譯時顯示警告資訊,-o executefilename cfilename.c是将cfilename.c檔案編譯成檔案名為executefilename的可執行檔案,-lwiringpi是将wiringpi頭檔案包含在可執行檔案中。

編譯完之後會生成檔案名為executefilename的檔案,使用root權限執行如下指令即可運作:

pi4j介紹

pi4j是基于wiringpi開發的通過java來控制樹莓派gpio口的庫檔案。在java程式中引入相關類就可以使用已經封裝好的方法控制樹莓派gpio口。

使用了pi4j後,編譯.java檔案和運作.class檔案時,需要使用root權限。例如:

編譯:

運作:

如果使用sudo編譯和運作時提示找不到javac和java,這是由于root使用者沒有加載環境變量,是以找不到java的執行指令。可以使用如下指令切換到帶有環境變量的root使用者後,再執行編譯和運作:

二、硬體連接配接

由于本人較懶,而且目前是新手狀态使用ubuntu,不知道用什麼軟體來做圖,是以用文字簡單描述一下硬體的連接配接。

dht11引腳有格子空的為正面,引腳朝下,從左數4個引腳分别為

樹莓派使用 DHT11 溫濕度傳感器

此外按照dht11資料手冊要求,我在data和vcc之間連接配接了一個4.7k歐姆的電阻,起到上拉作用。

三、軟體編寫

使用wiringpi編寫c程式:

如下程式借鑒了網上一老外的程式,忘了原帖位址在哪。

上述程式儲存為.c檔案後編譯成可執行檔案,運作後會在螢幕列印溫度和濕度。

程式中的資料接收處理部分細節如下:

使用pi4j編寫java程式:

在使用pi4j編寫dht11要求的時序時,始終收不到dht11回應信号,個人感覺是java達不到dht11要求的微秒級時序,是以java程式沒有成功。如果有哪位大神成功用java寫出dht11程式,希望能賜教一下。