樹莓派/Raspberry Pi 3 Model B+使用DHT22取得溫度濕度

DHT22-Raspberry Pi-溫濕度感測器
溫濕度感測器DHT22 Temperature Sensor Modul
最近買了一個Raspberry Pi 3 Model B+ /樹莓派,打算跑一些小服務。不過,想說主機開在那兒、乾脆也順便來紀錄一下環境周遭狀況。考慮是第一次玩Raspberry Pi,所以只先買以下兩個sensor練習~
  1. DHT22/AM2302溫濕度感測器
  2. BMP180大氣壓力感測器
先來講DHT22溫濕度感測器的使用。我買的是DHT22驅動程式學習套件(含 DHT22x1 + 10K電阻x1 + 迷你麵包板x1 + 公對母排線x4)。裡面給的DHT22只有三隻腳,但是賣家給我的參考資料-DHT Humidity Sensing on Raspberry Pi or Beaglebone Black with GDocs Logging中卻是四隻腳,這點我一直很好奇兩個版本的差異…最後終於找到原因,文末在說明…


查了很多人的實做方式,最後我也依舊採用上面參考資料的作法,DHT22的三支腳如下接到GPIO。關於GPIO接腳的定義,可參考官方文件
  • + ,接3.3V
  • out,接GPIO4 (電阻放在+和out間)
  • - ,接GND
以下,則是實際的接線的照片…
DHT22-Raspberry Pi-溫濕度感測器
照片中由右至左分別是 + (紅線,3.3V)、 out(咖啡色線,GPIO4)、- (黑線,GND)

DHT22-Raspberry Pi-溫濕度感測器
DHT22溫濕度感測器接到麵包版上,電阻放在+和out間。
事實上,照片中的DHT22模組版本不需要外接電阻。

DHT22-Raspberry Pi-溫濕度感測器-GPIO
DHT22接到Raspberry Pi GPIO
紅線接3.3V、咖啡色線接GPIO4、黑線接GND

線路接好後,接者安裝讀取DHT22的Python library
#因為我的Raspberry Pi尚無git,先安裝
sudo apt-get update
sudo apt-get install git

#取得於Raspberry Pi、Beaglebone Black上讀取DHT系列的Python library
git clone https://github.com/adafruit/Adafruit_Python_DHT.git

#安裝該library
cd Adafruit_Python_DHT
sudo apt-get install build-essential python-dev python-openssl
sudo python setup.py install
安裝完畢,可以直接執行該Python library中的範例程式,執行就可以得到溫度、濕度
#測試程式
cd examples
#/home/pi/Adafruit_Python_DHT/examples

sudo ./AdafruitDHT.py 22 4
#以下為結果
Temp=29.7*  Humidity=75.7%
上面程式中,執行AdafruitDHT.py後面接兩個參數,是何意思呢?說明如下…
  1. 參數一:22,表示使用Adafruit_DHT.DHT22
  2. 參數二:4 ,表示data的接腳是接在GPIO #4
關於參數一,看了範例程式的原始碼,發現這程式支援三種型號
  1. '11': Adafruit_DHT.DHT11
  2. '22': Adafruit_DHT.DHT22
  3. '2302': Adafruit_DHT.AM2302
註:執行測試程式時,曾嘗試第一個參數分別使用22及2302,得到的溫度、濕度數據都相同。目前尚不清楚是否有差異~

一開始提到我買的DHT22是三隻腳。查了查才知道三隻腳的為 DHT22 Temperature Sensor Module。四隻腳的則是 DHT22 Sensor Pinout。兩者除了腳數差異、實體外觀也有點不同。對於我的使用,最主要的差異在於DHT22 Sensor Module內已經有內建電阻,因此不需要再外接了。

原來,範例程式中的AM2302,是DHT22另一個有外接電線的型號。

因此,我先拿掉了電阻。打算之後再去買母對母杜邦線,這樣就可以將DHT22直接接到GPIO上了~

補充一點,當初在執行測試程式時,總覺得程式要執行一會才出現溫度、濕度的數據。原來這是受限於硬體。在官方AM2302 (wired DHT22) temperature-humidity sensor ID: 393 - $15.00 : Adafruit Industries, Unique & fun DIY electronics and kits中提到,讀取數據時間約2秒…

如需要長期紀錄、監測溫度、濕度,可以參考Raspberry Pi 搭配Cacti監控溫濕度內的作法~


參考資料

沒有留言: