温湿度計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に書いてある例を用いて、動かしてみます。
>>> 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にはプルアップもソフト的に使えますので、そちらで対応です。
>>> 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
これで、温度と湿度が測定できます。(温度は少数点以下ありませんが・・・)
後日、精度高い温度計での測定をします。

