概述
本教程介紹了低成本的DHT溫濕度傳感器。這些傳感器非常基礎且速度慢,但是對于想要進行一些基本數(shù)據(jù)記錄的業(yè)余愛好者來說非常有用。 DHT傳感器由兩部分組成:電容式濕度傳感器和熱敏電阻。內(nèi)部還有一個非?;镜?a target="_blank">芯片,可以進行一些模擬到數(shù)字的轉換,并發(fā)出帶有溫度和濕度的數(shù)字信號。使用任何微控制器都可以輕松讀取數(shù)字信號。
DHT11與DHT22
我們有兩個版本的DHT傳感器,它們看起來有點相似,并且具有相同的引腳排列,但是具有不同的特性。規(guī)格如下:
DHT11
超低成本
3至5V電源和I/O
轉換過程中使用的最大電流為2.5mA(在請求數(shù)據(jù)時)
適用于20-80%的濕度讀數(shù),精度為5%
適用于0-50°C溫度讀數(shù)±2°C精度
采樣率不超過1 Hz(每秒一次)
機身尺寸15.5mm x 12mm x 5.5mm
4間距為0.1“的引腳
DHT22
低成本
3至5V電源和I/O
轉換期間最大電流消耗為2.5mA(在請求數(shù)據(jù)時)
適用于0-100%的濕度讀數(shù),精度為2-5%
適用于-40至80°C溫度讀數(shù),精度為±0.5°C
采樣率不超過0.5 Hz(每2秒一次)
機身尺寸15.1mm x 25mm x 7.7mm
4個間距為0.1“的引腳
如您所見,DHT22在稍大的范圍內(nèi)精度更高,性能更好。兩者都使用單個數(shù)字引腳,因此它們“呆滯”,因為您每秒鐘查詢一次或兩次都不會超過一次。
您可以從adafruit商店拿起DHT11和DHT22!
連接到DHTxx傳感器
幸運的是,連接這些傳感器很簡單,它們具有相當長的0.1“間距引腳,因此您可以將它們插入任何面包板,穿孔板或類似。
AM2302(有線DHT22)溫濕度傳感器
產(chǎn)品ID:393
AM2302是DHT22的有線版本,采用大型塑料主體,是一種基本的低成本數(shù)字溫度和濕度傳感器。。..
$ 15.00
庫存
添加到購物車
連接DHT傳感器非常容易,它們有四個引腳
VCC -紅色導線連接到3.3-5V電源,有時3.3V電源是不夠的在這種情況下,請嘗試使用5V電源。
數(shù)據(jù)輸出-白色或黃色電線
未連接
接地-黑線
只需忽略引腳3,它就不會使用。您將需要在VCC和數(shù)據(jù)引腳之間放置一個10 Kohm電阻,以充當數(shù)據(jù)線上的中等強度上拉電阻。 Arduino內(nèi)置了可以打開的上拉電阻,但它們非常弱,大約20-50K
DHT22和AM2302通常已經(jīng)在內(nèi)部裝有一個上拉電阻,但是添加另一個上拉電阻也沒有問題!
此圖顯示了我們?nèi)绾芜B接測試草圖。將數(shù)據(jù)連接到引腳2,您可以稍后將其更改為任何引腳。
如果您有AM2302
使用DHTxx傳感器
要測試草圖,我們將使用Arduino。您可以使用任何可以執(zhí)行微秒計時的micrcontroller,但由于要對其進行編碼有些棘手,因此我們建議驗證Arduino的接線和傳感器是否正常工作。
您應該使用 Arduino IDE 軟件目前正在運行。接下來,需要安裝我們的DHT庫,可以通過Arduino庫管理器完成:
素描→包含庫→管理庫…
輸入“ dht ”,然后在列表中瀏覽“ Adafruit 的 DHT傳感器庫”。單擊“安裝”按鈕,或“
div》
重要信息::從DHT庫的1.3.0版本開始,您還需要安裝 Adafruit_Sensor 庫,該庫也可在Arduino庫管理器:
現(xiàn)在加載示例→DHT→DHTtester 草圖
如果您使用的是 DHT11 傳感器,請?zhí)砑幼⑨屧O置類型的行:
下載:文件
復制代碼
//#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT22 // DHT 22 (AM2302)
,并取消注釋以下行:
下載:文件
復制代碼
#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT11 // DHT 11
此將使數(shù)據(jù)對于正確的傳感器正確顯示。上載草圖!
您應該看到溫度和濕度。呼吸傳感器可以看到變化(就像您要霧化窗戶一樣),這會增加濕度。
您可以在線路上添加任意數(shù)量的DHT傳感器單個引腳,只需在初始DHT dht2 = DHT(pin, type);對象的聲明下方添加新行,例如
dht
,就可以引用新的dht2隨時隨地。
DHT CircuitPython代碼
Adafruit CircuitPython模塊安裝
要在您的Adafruit CircuitPython板上使用DHT傳感器,您需要在您的板上安裝Adafruit_CircuitPython_DHT模塊。
首先請確保您為該板上運行了最新版本的Adafruit CircuitPython。特別是對于 Gemma M0,Trinket M0和M0基本板,您必須運行CircuitPython 2.1.0或更高版本才能訪問必要的Pulseio模塊!
下一步,您將需要安裝必要的庫才能使用硬件-仔細按照以下步驟從Adafruit的CircuitPython庫捆綁中查找并安裝這些庫。我們的簡介指南上有一個很棒的頁面,介紹如何為快速和非表達板安裝庫包。
請記住非表達板,例如,您需要從束中手動安裝必要的庫:
adafruit_dht.mpy
您也可以從其發(fā)行頁面下載 adafruit_dht.mpy
。在繼續(xù)之前,請確保您開發(fā)板的lib文件夾或根文件系統(tǒng)已復制 adafruit_dht.mpy 模塊。
接線
DHT接線非常簡單:
最左邊的引腳是電源。我們建議使用5V供電(有時3V是不夠的)-即使您使用的是3.3V邏輯,也可以這樣做
第二個引腳是 data 。從該引腳連接一個10K上拉電阻至3.3V。如果您使用的是DHT11,則是必需的。如果您使用的是DHT22或AM2302,則有時可以將其關閉
跳過第三個引腳
最右邊的引腳是接地
對于DATA引腳,您必須選擇一個具有PWM支持的引腳(pulseio )-檢查電路板的指南,了解哪些引腳可以使用計時器
以下是使用小飾品M0的示例-您可以使用任何CircuitPython開發(fā)板,只需檢查Data引腳是否為pulseio-
在在此示例中,我們將使用連接到D6引腳的Feather M0和DHT22傳感器
Fritzing Source
用法
演示DHT傳感器模塊的用法,您可以將其連接到開發(fā)板的串行REPL并運行讀取溫度和濕度的Python代碼。
下一步連接到開發(fā)板的串行REPL,因此您位于CircuitPython的》》》 提示符下。
下一步導入 board 和 adafruit_dht 模塊,這些是初始化和訪問傳感器的必要模塊:
下載:文件
復制代碼
import board
import adafruit_dht import board
import adafruit_dht
嘗試從5V為DHT傳感器供電(我們發(fā)現(xiàn)有時確實需要更多功率),但仍將10K上拉電阻設為3.3V伏)
現(xiàn)在創(chuàng)建一個 DHT11實例或 DHT22 類,具體取決于您使用的傳感器的類型(對于AM2302傳感器,請使用DHT22類)。您必須傳入連接到信號線的引腳,例如,連接到板引腳D6的DHT22或AM2302傳感器將需要以下代碼:
下載:文件
復制代碼
dht = adafruit_dht.DHT22(board.D6) dht = adafruit_dht.DHT22(board.D6)
請注意,對于DHT11傳感器,您可以使用 adafruit_dht.DHT11 代替上面的 adafruit_dht.DHT22 代碼。
此時,您一切就緒,準備開始讀取溫度和濕度!您可以通過讀取 temperature 屬性來完成此操作,該屬性返回以攝氏度為單位的溫度:
下載:文件
復制代碼
dht.temperature dht.temperature
要讀取濕度獲取值濕度屬性的值,它將返回相對濕度百分數(shù)(從0到100%):
下載:文件
復制代碼
dht.humidity dht.humidity
在大多數(shù)情況下,您總是會在收到請求時返回溫度或濕度值,但是有時如果存在電噪聲或信號被某種方式中斷,則可能看到拋出異常以重試。這些傳感器有時很難讀取,這是正常的,如果讀取失敗,您可能需要使代碼重試幾次。但是,如果您總是遇到錯誤并且無法讀取傳感器,請仔細檢查接線(如果需要,請不要忘記上拉電阻?。┖驮O備的電源。
示例代碼
這是一個完整的示例草圖,它也可以管理錯誤-重試邏輯(有時會發(fā)生。
不要忘記將邏輯引腳更改為您正在使用的任何引腳!然后將其保存為main.py在CircuitPython板上
下載:Project Zip 或 dht22 .py | 在Github上查看
復制代碼
import time
import adafruit_dht
import board
dht = adafruit_dht.DHT22(board.D2)
while True:
try:
temperature = dht.temperature
humidity = dht.humidity
# Print what we got to the REPL
print(“Temp: {:.1f} *C Humidity: {}%”.format(temperature, humidity))
except RuntimeError as e:
# Reading doesn‘t always work! Just print error and we’ll try again
print(“Reading from DHT failure: ”, e.args)
time.sleep(1)
import time
import adafruit_dht
import board
dht = adafruit_dht.DHT22(board.D2)
while True:
try:
temperature = dht.temperature
humidity = dht.humidity
# Print what we got to the REPL
print(“Temp: {:.1f} *C Humidity: {}%”.format(temperature, humidity))
except RuntimeError as e:
# Reading doesn‘t always work! Just print error and we’ll try again
print(“Reading from DHT failure: ”, e.args)
time.sleep(1)
如果您使用的是DHT11,請更改代碼以使用adafruit_dht.DHT11(board.D2)對象。
打開REPL以查看輸出!看看它會提高溫度和濕度(除非您是White Walker,否則溫度會下降)
下載
DHT傳感器的Arduino庫和示例代碼
Adafruit_Sensor庫(由上面的DHT庫要求)
DHT11數(shù)據(jù)表(中文,也請參見DHT22數(shù)據(jù)表?。?/p>
DHT22數(shù)據(jù)表
K&R Smith校準說明
責任編輯:wv
-
溫濕度傳感器
+關注
關注
5文章
579瀏覽量
35706
發(fā)布評論請先 登錄
相關推薦
評論