アマゾンで販売している「DSD TECH DHT22 温湿度センサーモジュール AM2302チップ付き Arduino Raspberry Pi用 DHT11の進化版」というモジュールをラズベリーパイに接続して温度計測を行ってみました。
モジュールのインストール
MyPyDHTを下のWebに従ってインストールする。
Pythonのコード
下の例外が発生していましたが、「use_cache=True」を「MyPyDHT.sensor_read」へ設定することで回避できるようです。
MyPyDHT.DHTException: A timeout occurred while attempting to read the sensor!
Pythonのバージョン:
$ python3 -V
Python 3.7.3
下の例ではGPIO4番にDAT端子を接続して、VCCには5Vを与えています。
また、センサーの監視を1秒毎に行いターミナルへ出力しています。
import time
import RPi.GPIO as GPIO
import MyPyDHT
DHT_PIN = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(DHT_PIN, GPIO.OUT)
try:
while True:
try:
humidity, temperature = MyPyDHT.sensor_read(MyPyDHT.Sensor.DHT22, DHT_PIN, use_cache=True)
if humidity is not None and temperature is not None:
print(f"temperature={temperature} / humidity={humidity}")
except MyPyDHT.DHTException as e:
print(f"err: {str(e)}")
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
print("finish")
結果
エアコンを16度設定にした室内で測定したので、結果は合っているはずです。
temperature=16.7 / humidity=44.1
temperature=16.8 / humidity=44.8
temperature=16.8 / humidity=44.8