概述
DHT11是一個數字傳感器,由兩個不同的傳感器組成一個封裝。該傳感器包含一個NTC(負溫度系數)溫度傳感器,一個電阻型濕度傳感器和一個8位微控制器,用于轉換來自這些傳感器的模擬信號并產生數字輸出。
我已經在我的 DHT11濕度傳感器Arduino 項目中使用了DHT11傳感器。在該項目中,我提到了DHT11傳感器的引腳配置,如何將其與微控制器連接以及如何解碼DHT11傳感器的數字輸出。
所以,我建議您參考該項目一次,以獲取有關DHT11濕度和溫度傳感器的更多信息。我將解釋一下我在Arduino項目中遺漏的一些事情。
我們知道輸出來自DHT11傳感器是數字的。但我們究竟能讀取這些數字數據?
從DHT11讀取數字輸出
DHT11使用單總線數據格式進行通信。只有像Arduino或Raspberry Pi這樣的MCU與DHT11傳感器之間的單條數據線足以交換信息。
在此設置中,微控制器充當主設備和DHT11傳感器充當從站。 DHT11傳感器的數據輸出采用漏極開路配置,因此必須在5.1KΩ電阻的幫助下將其拉高。
此上拉將確保當Master沒有請求數據時,數據的狀態為HIGH(除非Master請求,否則DHT11不會發送數據)。
現在,我們將如何傳輸數據和DHT11傳感器的數據格式。每當微控制器想要從DHT11傳感器獲取信息時,
微控制器的引腳被配置為OUTPUT,它將使數據線保持低電平至少18ms并釋放線路。在此之后,微控制器引腳設為INPUT。
DHT11傳感器的數據引腳,即INPUT引腳,讀取微控制器產生的低電平,并充當輸出引腳,在數據線上發送低信號響應約80μs,然后再將該線路上拉80μs。
此后,DHT11傳感器發送40邏輯‘0’的位數據是50μs的低電平和26到28μs的高電平的組合,邏輯‘1’是50μs的低電平和70到80μ的高電平。
發送40位數據后,DHT11數據引腳保持低電平再持續50μs,最后將其狀態更改為輸入以接受來自微控制器的請求。
注意:我們在編寫Arduino時實現了這個邏輯。但是對于Raspberry Pi,我們使用了一個處理所有這些事情的庫。
Raspberry Pi DTH11濕度和溫度傳感器接口
通過將DHT11傳感器與Raspberry Pi連接,您可以構建自己的物聯網氣象站。實現此類物聯網天氣所需的只是Raspberry Pi,DHT11濕度和溫度傳感器以及具有互聯網連接功能的計算機。
電路圖
以下是DHT11和Raspberry Pi接口的電路圖。
所需組件
Raspberry Pi 3型號B
DHT11溫度和濕度傳感器
連接電線
計算機
如果你觀察電路圖,那么連接方面就沒有很多東西了。您需要做的就是將DHT11傳感器的VCC和GND引腳連接到Raspberry Pi的+ 5V和GND,然后將傳感器的數據輸出連接到GPIO4,即Raspberry Pi的物理引腳7。
安裝DTH11庫
由于我們使用Adafruit為此項目提供的名為Adafruit_DHT的庫,我們需要先將此庫安裝到Raspberry Pi中。
第一步是從GitHub下載庫。但在此之前,我在Raspberry Pi的桌面上創建了一個名為“library”的文件夾來放置下載的文件。您不必這樣做。
現在,輸入以下命令以下載與Adafruit_DHT庫相關的文件。
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
所有內容都將下載到名為“Adafruit_Python_DHT”的文件夾中。使用cd Adafruit_Python_DHT打開此目錄。要查看此文件夾的內容,請使用“ls”命令。
在該文件夾中,有一個名為“setup.py”的文件。我們需要使用以下命令安裝此文件。
sudo python setup.py install
代碼
我們正在使用該庫對于這個項目的Adafruit_DHT,Python編程部分沒什么可做的。您需要做的就是使用傳感器和GPIO引腳調用庫并打印溫度和濕度值。
工作
按照電路圖進行連接并安裝庫。使用上面的python程序查看結果。
應用程序
DHT11溫度和濕度傳感器是業余愛好者在許多物聯網項目中實施的流行傳感器模塊之一。此傳感器與Raspberry Pi一起也可用于:
HVAC Systems
恒溫器
家庭和辦公室氣候控制
氣象站
-
傳感器
+關注
關注
2565文章
52955瀏覽量
767066 -
樹莓派
+關注
關注
121文章
2001瀏覽量
107419
發布評論請先 登錄
評論