概要

湿温度計DHT22をESP-WROOM-32に接続して、温度と湿度を取得できた。


背景と目的

とある事情で、家の中の温度と湿度を測ってデータを蓄積する必要が出た。そのため、手持ちのESP-WROOM-32に湿温度センサを接続し、動作させる。


詳細

1.使用するデバイス

  • ESP-WROOM-32 DevKitC基板
  • DHT22

DHT22を選択したのは、Amazonで検索したら最初のほうに出てきたのと、ネット上に参考情報がたくさんあったため。(ちなみに、以前DHT11を持っていたのだが、電源逆接続という初歩的なミスで壊してしまったので、どうせならそれより精度の良いものを買ってしまえということで、買ったという経緯もある。)


2.接続方法

DHT22は、動作電圧範囲が最低3.3Vで、ESP-WROOM-32のGPIOレベル(だいたい3.3Vより低くなる)で確実に動作するのかよくわからないので、3.3V/5Vのレベルシフタをかませることにした。ただ、DHT22は独自の単線インターフェースなので、双方向レベルシフタが必要で、いろいろ考えた挙句、以下のような回路になった。(実は、最低動作電圧を多少下回っても動くのかな?やってないのでわからないが)

20180711184326

3.ソフトウェア

3.1 ライブラリのインストール

基本的に、arduino-esp32を使うが、DHT22は、Arduinoライブラリが存在しており、Arduino IDE>スケッチ>ライブラリをインクルード>ライブラリを管理から、インストールできた。

20180710210408

3.2 コーディング

都合もあり詳細は割愛するが、基本的には、以下の簡単なコードで取得できた。

// インクルード
#include "DHTesp.h"

// DHTespクラスインスタンスを作成
DHTesp dht;

// 初期化
dht.setup(GPIOピン番号, DHTesp::DHT22);

// 計測
TempAndHumidity newValues = dht.getTempAndHumidity();

// 結果表示
Serial.println(" T:" + String(newValues.temperature) + " H:" + String(newValues.humidity));

4.動作確認

以下が、動作確認した様子。暑くて30度を越えているが、手持ちの別の温度計もほぼ同じような値であり、湿度も自分の住んでいるエリアのリアルタイム湿度と比較してほぼ同じだったので、正しく動作しているようだ。

 T:30.90 H:54.90


まとめ

DHT22をESP-WROOM-32に接続して、動作させることができた。次は、Web上に蓄積する。