ESP-WROOM02(ESP8266)で温度、湿度を取得してみた!
こんばんわ!
今回はESP-WROOM02で温度と湿度を取得してみたいと思います!
※ArduinoやESP-WROOM32をお使いの方でもやり方はほぼ同じなのでご参考になればと思います!
使うセンサーはズバリ、これです↓
DHT22というセンサーでございます!
このセンサーはかなり制度が良くお勧めです!
型 名 | DHT22(別名AM2302) | |
電源電圧 | 3.3V ~ 6V | |
消費電力(電流) | 測定中:最大 1.5mA | |
待機中:最大 50μA | ||
測定範囲 | 温度 | -40 ~ 80℃ |
湿度 | 0 ~ 100%RH | |
精 度 | 温度 | <±0.5℃ |
湿度 | ±2%RH | |
感度と解像度 | 温度 | 0.1℃ 16bit |
(分解能) | 湿度 | 0.1%RH 16bit |
サンプリング周期 | 2秒以上 |
ではさっそく使ってみましょう!
①「部品集め」
・DHT22(温湿度センサー)
Amazonだと700円前後⇩
・低損失三端子レギュレーター 3.3V1A TA48033S
・電解コンデンサ 47μF35V(秋月電子で購入すると、3端子レギュレータに付属されています。)
・セラミックコンデンサ 0.1μF(秋月電子で購入すると、3端子レギュレータに付属されています。)
・LED(起動などを確認するためのメッセージ用に使う。なので任意)
・タクトスイッチ(2個)(任意ですがあると便利です)
(ブレットボードで回路を組むとき、見栄え良く綺麗に繫げられますのであると便利)
※任意(楽したい方向け)
ESP-WROOM-02開発ボードを使うとすぐに開発ができるよう回路が組まれているため、上記の「ESP-WROOM02」「超小型USBシリアル変換モジュール」「3端子レギュレータ」「電解コンデンサ 47μF35V」「セラミックコンデンサ 0.1μF」「タクトスイッチ」は不要になります!
②「回路組み立て」
・ESP-WROOM02の回路は再び下記サイトさんの「6.各部品の接続」を参考にしていただければと思います。
WROOM 単体に Arduino スケッチで Wi-Fi ストリーミング
ESP‐WROOM02本体の接続箇所↓
pinナンバー | 状態 |
---|---|
GPIO 15(IO15) | LOW |
GPIO 2(IO2) | HIGH |
GPIO 0(IO0) | LOW |
EN | HIGH |
※GPIO 0(IO0)をLOWの状態で起動させるときのみ書き込みモード、
LOWじゃなければ実行モードになります。
なのでGPIO 0とGNDにダクトスイッチをかましとくと後が楽です。
※RST(リセット)もLOWにすることでプログラムのリセットが行えますので、
RSTとGNDにダクトスイッチをかましておくと後が楽です。
※画像をクリックすれば拡大できます。
※ESP-WROOM-02開発ボードをご使用の方はここからスタート。
・温湿度センサー(DHT22)の接続箇所↓
DHT22 | 接続箇所(pin) |
+ | 5V |
ー | GND |
out | IO5 |
※ArduinoやESP-WROOM32もこの接続でできるはずです。
(できなかったら報告を頂けると助かります)
完成するとこんな感じになります↓
※画像をクリックすると大きく見れます。
③「開発環境準備」
・Arduino IDEでまだESP-WROOM02を使えるようにしていない方はこちらを参考に⇩
※WSP-WROOM32でチャレンジされるこちらのサイトをご参考にお願いします。
次に、DHTセンサーのライブラリーを入れます‼
Arduino IDEを開き、ツール⇒ライブラリー管理を選択、
「DHT sensor library」を検索しインストールします。
④「プログラミング」
・いよいよプログラミング!
ArduinoやESP-WROOM32もこのプログラムでできるはずです。(できなかったら報告を頂けると助かります)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#include <DHT.h> // 温度湿度センサーライブラリ // 温度湿度センサー const int DHT_PIN = 5; // ESP-WROOM-02 の GPIO12 を温湿度センサー入力とする const int DHT_TYPE = DHT22; //センサーの種類(対応しているセンサーはDHT11/DHT21/DHT22/AM2301です。) #define LED 12 //メッセージLED // センサー初期化 DHT dht(DHT_PIN, DHT_TYPE); // 計測値 float temperature = 0.0f; // 温度 float humidity = 0.0f; // 湿度 float heatIndex = 0.0f; // 体感温度的な暑さ指数 int discomfortIndex = 0; // 不快指数 int computeDiscomfortIndex(float t, float h); void setup() { Serial.begin(115200); //このシリアル通信はモニター用 delay(100);//なんとなく入れとく。 //メッセージLEDセット pinMode(LED, OUTPUT); // 温度湿度センサー開始 dht.begin(); } void loop() { // 温度や湿度の読み出しに約 0.25秒かかります。 //3秒点灯、3秒ごとにループさせる digitalWrite(LED, HIGH); delay(3000); digitalWrite(LED, LOW); // 温度を読み取ります temperature = dht.readTemperature(); // 湿度を読み取ります humidity = dht.readHumidity(); // 温度と湿度から Heat Index(アメリカ海洋大気庁(NOAA)基準) の算出 heatIndex = dht.computeHeatIndex(temperature, humidity, false); // 不快指数 discomfortIndex = computeDiscomfortIndex(temperature, humidity); // 読み取った値をシリアル出力 Serial.print("Temperature: "); Serial.print(temperature); Serial.print("%\t"); Serial.print("Humidity: "); Serial.print(humidity); Serial.print("°C\t"); Serial.print("Heat Index: "); Serial.print(heatIndex); Serial.print("°C\t"); Serial.print("Discomfort Index: "); Serial.println(discomfortIndex); } /* * 不快指数計算 */ int computeDiscomfortIndex(float t, float h) { int index; // 0.81T+0.01H(0.99T-14.3)+46.3 index = 0.81f * t + 0.01f * h * (0.99f * t - 14.3f) + 46.3f; return index; } |
※ビルドをした際に、こんなエラーが出たら書き込みモードになっていないのが原因です。
(GPIO 0(IO0)をLOWの状態で起動させるときのみ書き込みモード、LOWじゃなければ実行モードになります。)
改善されない場合はもう一度②「回路組み立て」を読み直してみてください。
※ビルドをした際に、「ボードGeneric ESP8266 Moduleに対するコンパイル時にエラーが発生しました。」
というエラーが出た場合は、エラー内容を確認してみましょう。
「In file included from C:\Users\…\Documents\arduino-1.8.5-windows\arduino-1.8.5\libraries\DHT-sensor-library-master/****.h:22:0,」
(エラー内容が表示されていない場合、エラーが表示されている所をカーソルで少し上にやると表示されてます。)
こんな感じのエラー内容の場合DHT-sensor-library-masterの中にある****.hファイルが
なにかおかしいみたいなので消すことによって解決しました。
(同じ名前のファイルが2つ並んでいたら容量の小さいほうを消してみましよょう)
2018/7/21追記
※シリアルモニターに変な暗号が表示されたり、何も表示されない場合、シリアルモニターの右下にあるbpsが115200bpsになっているか確認してください。
※シリアルモニターが選択できない場合、まずツールの中にあります「シリアルポート:COM 」
が選択されているか確認してください。
これが選択できない状態だたUSBケーブルが原因の可能性があります。
USBケーブルは必ずデータ通信が可能なものを使用しましょう。
こんな感じで対応していけば解決できるかと思います!
⑤「実行結果」
・左から温度、湿度、体感温度的な暑さ指数、不快指数になります!
※画像が見づらい場合はクリックすると綺麗に見れます。
個人的に使ってた感想ですが、精度はなかなか良く簡単に使えますので便利です!
息を吹きかけると1~5秒ぐらい遅れて数値が変化しました!
以上、ご訪問ありがとうございます^^
ご不明点、や誤字がありましたらお気軽にコメントください^^