2-1-3.温湿度センサ

2020年5月10日

電気回路と電子工作

今回は温湿度センサを利用して温度と湿度を計測する電子工作を行います。また、シリアル通信を用いてパソコンにセンサ情報を表示します。
利用する温湿度センサは下図のDHT11になります。

温湿度センサを利用する回路図を下図に示します。

DHT11は3.3V〜5.5Vで動作しますのでVDDに3.3Vを接続しGND端子も接続します。また、DATA端子は3.3Vに10KΩ(茶黒黒赤茶)の抵抗を介して接続すると共に、データを入力するGPIO5端子にも接続します。以下に上記回路の配線した図を示します。


【ESP32-DevKitCの入出力端子はこちらを参照下さい】

【注意】
1.回路図にはありませんがESP32開発ボードにソフトを書き込む場合はEN端子を0.1μFのコンデンサでGNDへ配線して下さい。ESP32開発ボード(30pin)固有の利用方法なので回路図は省略させて頂きます。
2.回路図、配線図は2-1から順次配線した図になります。(LEDなど配線した部品は取り外さず追加で配線しています)

DHT11用ライブラリのインストール

DHT11センサから出力されたデータはそのままで利用できませんので、Arduino向けに専用ライブラリが用意されています。まずはDHT11を利用するためのライブラリをインストールします。(ライブラリとは新たに追加する特定機能をまとめたソフトウェアとなります。)
(1)ArduinoIDEを起動しメニューの「スケッチ」から「ライブラリをインクルード」、「ライブラリを管理」を選択

(2)ライブラリマネージャの検索窓に「dht」と入力し下図の「DHT sensor library by Adafruit」を見つけてインストールします。インストールが完了すると下図のように「INSTALLED」と表示されライブラリが利用可能となります。

スケッチ(制御ソフトウェア)

DHTライブラリを利用した温湿度センサを利用したスケッチは以下の通りとなります。

2-2までで既に学習した内容は割愛し今回の新しい内容を中心に説明します。
①はDHTライブラリの読み込み(include)を行い利用できる状態にしています。②は開発ボードで利用する入力端子を設定します。
③は読み込んだDHTライブラリのクラスをインスタンス化して変数dhtに定義しています。詳細に理解するにはオブジェクト指向プログラミングを理解する必要があり本一冊が必要です。
ただ、全て理解しようとせずにこういうように使うと理解して進めてください。電子工作では使い方だけ理解していれば十分な工作が可能です。
そのため簡単に説しますが、クラスと言う設計図のようなものがあり、変数やメソッド(メソッド:関数のような処理で温度を読み込むなどの一連の処理)が記載されています。このクラスを使えるようにすることがインスタンス化といい、具体的には設計図(クラス)の通りに変数dhtを定義しプログラム上で扱えるようにすることです。
(DHTクラスはArduinoスケッチフォルダ内のライブラリフォルダ「libraries」内の「DHT_sensor_library」にある「DHT.h」ファイルに定義されています。ArduinoスケッチフォルダはArduinoIDEの「ファイル」から「環境設定」の「スケッチブックの場所」から確認できます。)
インスタンス化により、dhtは「readTemperature」などの多くの機能(メソッド)を利用することが可能となります。
ここでは変数dhtでいろんな機能が利用できるようになるというように理解して下さい。
⑦で先ほど定義したdhtのbeginによりセンサを利用可能状態にし、⑧のreadTemperatureやreadHumidityで温度と湿度の状態を読み出しfloat型の変数にデータを格納します。⑧でシリアルモニタに出力しますがprint文は文字列型の必要がありますのでfloat型をString()で文字列型に変換を行い表示しています。
正常に処理されるとシリアルモニター上に以下のように表示されます。

【スケッチの検証と書込方法はこちらを参照ください】