Raspberry Pi 4とDHT11を使って温湿度測定
ここに質問の内容を詳しく書いてください。
今回、Pythonなどを初めて触る練習として表記のことを作成中です。
プログラムを書いてもうまく動作せずに試行錯誤中です。
発生している問題・エラーメッセージ
git clone https://github.com/szazo/DHT11_Python.git
上記でクローンを作成。
作成されたDHT11_Pythonの中身のexample.pyを以下の通り修正しました。
今回はGPIO4(物理:7)に接続したのでinstance = dht11.DHT11(pin=4)に変更。
それでプログラムを実行すると、気温・湿度ともに「0」と表示されてしまいます。
該当のソースコード
Python
1import RPi.GPIO as GPIO 2import dht11 3import time 4import datetime 5 6GPIO.setwarnings(False) 7GPIO.setmode(GPIO.BCM) 8 9instance = dht11.DHT11(pin=4) 10 11try: 12 while True: 13 result = instance.read() 14 if result.is_valid(): 15 print("Last valid input: " + str(datetime.datetime.now())) 16 print("Temperature: %-3.1f C" % result.temperature) 17 print("Humidity: %-3.1f %%" % result.humidity) 18 time.sleep(6) 19 20except KeyboardInterrupt: 21 print("Cleanup") 22 GPIO.cleanup()
試したこと
・GPIOの配線、番号指定を変更
・他のプログラムの記述をコピペ(GPIOの指定などは回路に合わせて変更)
ここに問題に対して試したことを記載してください。
print("A")などで、どこまでプログラムが動いているか確認したところ、「result = instance.read()」の下ではprint("A")が動作していることを確認できました。
ただ、「if result.is_valid():」の中だと動きませんでしたので、ここがおかしいのかと思い、
resultの中身をprintで確認してみたところ「<dht11.DHT11Result object at 0xb5fbe090>」と表示されます。
instanceの中身をprintで確認したところ「dht11.DHT11 object at 0xb5f6e0f0」と表示されます。
回路の配線がうまくできていないのかと思い、確認しました。この配線でDHT11のLEDランプはついています。
配線は以下の通りです。
ーーーーー
GND(DHT11) ー 6番(ラズパイ)
DATA(DHT11) ー 7番 GPIO4(ラズパイ)
VCC(DHT11) ー 2番 5V Power(ラズパイ)
ーーーーー
補足情報(FW/ツールのバージョンなど)
DHT11はモジュール版を使用しています。
非常に初歩的な質問でお恥ずかしい限りですが、ご教授いただければ非常に助かります。
どうぞよろしくお願いいたします。