温湿度計DHT11を用いた温湿度測定
今回はESP32を用い、一番簡単なセンサーによる温湿度の測定について紹介します。
ESP32はMicropythonにて簡単にプログラムを書くことができ、IoTには最適なデバイスです。今回はこれにDHT11という温湿度センサを接続し、温度と湿度を測定するプログラムを紹介します。
まずはブレッドボードを用いてESP32とDHT11を接続します(写真の青色のセンサです。左型のセンサは別途紹介します)。
写真のとおり左からVCC(3.3Vもしくは5Vに接続)、信号線(今回はピン4に接続)、一個飛ばして一番右のピンはアース(GND)に接続します。信号線は2ピンとワンワイヤーのセンサーとなります。参考資料はこちらです。https://akizukidenshi.com/download/ds/aosong/DHT11_20180119.pdf
ESP32ではDHT ドライバはソフトウェアで実装され、すべてのピンで動作するとのことで、Micropythonの公式ホームページhttps://micropython-docs-ja.readthedocs.io/ja/latest/esp32/quickref.html#dht-driverに書いてある例を用いて、動かしてみます。
1 2 3 4 5 6 7 8 9 |
>>> import dht >>> import machine >>> >>> d = dht.DHT11(machine.Pin(4)) >>> d.measure() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "dht.py", line 17, in measure OSError: [Errno 110] ETIMEDOUT |
いきなりエラーです。DHT11の上記リンクにのせたプロダクトサービスをよく読むとI/Oは電源とプルアップした回路にしなさいと書いてあります。
プルアップ用の抵抗は持っていますが、ESP32のGPIOにはプルアップもソフト的に使えますので、そちらで対応です。
1 2 3 4 5 6 7 8 9 10 11 |
>>> import dht >>> import machine >>> from machine import Pin #class Pinをインポート >>> >>> p4 = Pin(4, Pin.IN, Pin.PULL_UP) #4番ピンをプルアップ >>> d = dht.DHT11(machine.Pin(4)) >>> d.measure() >>> print(d.temperature(),'C') 20 C >>> print(d.humidity(),'%rh') 44 %rh |
これで、温度と湿度が測定できます。(温度は少数点以下ありませんが・・・)
後日、精度高い温度計での測定をします。