很快速地嘗試使用溫濕度感測器DHT11,可量測相對濕度20~90%,誤差±5%;溫度0~50℃,誤差±2℃。
電路圖如下:
先安裝所需套件:
$ sudo apt-get update
$ sudo apt-get install build-essential python-dev
然後下載,進入該目錄:
$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
安裝:
$ sudo python setup.py install
接著就能讀取DHT11了,執行寫好的範例Python程式:
$ cd examples
$ sudo ./AdafruitDHT.py 11 4
Temp=27.0*C Humidity=81.0%
其中參數11代表DHT11,4代表我把它接到Raspberry Pi的GPIO 4。
參考資料:
- Overview | DHT Humidity Sensing on Raspberry Pi or Beaglebone Black with GDocs Logging | Adafruit Learning System。
- DHT11 | Raspberry Pi台灣樹莓派。
- Temperature monitoring with Raspberry Pi and DHT11/22 temperature and humidity sensor - Documentation - Documentation。
- DHT11 Humidity & Temperature Sensor Module | UUGear。
請問一下大師.... 電路圖是不是有點問題...dht11 的ground 接到 VDD了
ReplyDelete謝謝。
Delete不好意思,
ReplyDelete請問一下葉難大大,
我的溫濕度感測器DHT11
在測試濕度時,
原本範圍是在33~34間,
但偶而會突然跳出22這個值,
是感測器本身的問題嗎?
另外,我發現,
當他接上藍芽模組時,
值會因藍芽電壓而導致非常不穩的情況,
(我沒插RX/TX,值就已有改變,所以猜測是電壓導致)
但藍芽拔掉後,值就會回復正常,
請問這是正常的嗎?
不好意思麻煩了...
另附上程式碼:
Delete#include "DHT.h"
int DHTPIN = 2;
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin(); //初始化並啟動
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humidity:");
Serial.print(h);
Serial.print("%\n");
Serial.print("Temperature:");
Serial.print(t);
Serial.print("*C\n");
}
> 但偶而會突然跳出22這個值,是感測器本身的問題嗎?
Delete不知道。原因很多吧,我覺得是線路不穩。
> 值會因藍芽電壓而導致非常不穩的情況,
你怎麼接藍牙模組?
藍牙模組耗電雖小,但rpi的5V或3.3V針腳,能供給的電流非常小,所以通常需要從外部供電。
This comment has been removed by the author.
Delete對不起,
Delete我一開始忘記說我是用Arduino了...
我想我的溫濕度感測器可能壞了,
他的值漸漸越來越不穩定,
現在的值已經超過±5在亂跳。
DHT11的反應時間,隨各種條件不同而不同,甚至可能長達15秒。
Delete詳情請看datasheet。
修改delay(2000);試試看
謝謝大大協助。
Delete解決了?
Delete大大 請問若結合lcd顯示的話該怎麼做?
ReplyDelete參考他人的分享文章
Deletehttp://ruten-proteus.blogspot.tw/2012/11/raspberry-pi-lcd-dht-11.html
大大 我有參考了這篇 但是當我最後執行指令sudo python DHT_CharLCD.py 時 ,回傳的值總是data(0) 0x0 0x0 0x0....
Delete請問大大 大概是錯在哪個部分?
Delete根據該文章,你應該先試試
Delete$ sudo ./DHT 11 15
那部分的步驟,先搞定DHT11。
嗯,就是DHT.c的部份,無法成功讀取DHT11。
Delete檢查線路,檢查GPIO腳位對不對。
我依照大大你的程式可以讀到值,但是利用那篇文章$ sudo ./DHT 11 15卻只能讀到data(0) 0x0 0x0 0x0
Delete他的DHT.c需要什麼程式庫bcm2835之類的,
Delete或許版本有差吧,maybe,不確定。
請向該文章作者詢問。
lcd有驅動 背景光有亮 所以開關應該沒問題 不知道是否內部出問題
Delete恩 抱歉 因為連絡不到作者 所以想請教大大 不好意思><
Delete嗯,不要擠牙膏好嗎。
Delete既然用我的程式可行,那硬體方面應無問題。
但$ sudo ./DHT 11 15卻只能讀到data(0) 0x0 0x0 0x0,
呃,bcm2835程式庫對我來說太低階,沒用過,無法回答。
或許你可修改他的LCD部分的程式,加上我的程式。
> lcd有驅動 背景光有亮 所以開關應該沒問題 不知道是否內部出問題
有電的話,lcd背光就會亮,不代表什麼。
請問一下這是
DeleteArduino:1.8.1 (Windows 10), 開發板:"Arduino/Genuino Uno"
In file included from C:\Users\Use\Desktop\arduino-1.8.1\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:
C:\Users\Use\Desktop\arduino-1.8.1\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
#include
^
compilation terminated.
exit status 1
開發板 Arduino/Genuino Uno 編譯錯誤。
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Adafruit_Sensor.h: No such file or directory
Delete你沒裝這套程式庫。
請問大大 如果想要用terminal讀取資料的話 可以用sudo modprobe w1-gpio 這系列的指令嗎? 亦或者需要有哪些指令以及先備知識呢??
ReplyDeletew1-gpio是給1-Wire用的吧,如DS18B20。
DeleteDHT11是自己的特殊格式訊號。
請問如果是用xd-28的感測器要怎麼寫?
ReplyDelete請問如果是用xd-28的感測器要怎麼寫?
ReplyDelete網路上很多分享文。
Delete請問可以用一塊arduino接收兩個dht11溫度與溼度嗎
ReplyDelete可以,接到不同腳位。
Delete程式碼是這樣打嗎
Delete#include "DHT.h"
#define DHTPIN 2
#define DHTPIN 3
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor
不是。
Delete#define DHTPIN1 2
#define DHTPIN2 3
#define DHTTYPE DHT11
DHT dht1(DHTPIN1, DHTTYPE); // Initialize DHT sensor
DHT dht2(DHTPIN2, DHTTYPE); // Initialize DHT sensor
大概是這樣,其他的自行修改。
Okok謝謝葉大
Delete請問如何將DHT11測量的值 傳到MySQL資料庫中?
ReplyDelete請問同樣的sensor為何在PID控制器可以顯示小數點後的數值(小數點後的數值不是以00顯示),而在arduino上小數點卻都是顯示00
ReplyDelete