EspressifのESP32-DevKitC-32Dを使って温湿度と不快指数を図ってみた
ESP32-DevKitC-32Dとは
Espressif社の開発ボード
ESP-WROOM-32Dを搭載
詳細はこちらに掲載
Espressif社
社名:Espressif Systems Pte. Ltd
本社:中国 上海市
ESP-WROOM-32D
Wi-Fi通信およびBluetooth通信に必要な機能を搭載
マイコンとしても利用可能
開発環境
Arduino IDE v1.8.15 (ESP-IDFも利用可能だそう)
macOS Big Sur v11.4
触ってみた
まず、何やるかを決める
ちょうど、OSOYOOのセンサーが手元にあったので、その中から温湿度センサーDHT11を選択。家で使っている温湿度計をの整合性を確かめれば、ある程度の精度評価はできるだろう。
回路図が必要なんだね
ESP32-DevKitC-32Dの回路図は下記にあった
DHT11はすでに基盤に組み込まれていた。端子はGND、DATA、VCCの3つ。これをESP32-DevKitC-32Dに接続した。
DHT11 | ESP32-DevKitC-32D |
---|---|
GND | GND |
DATA | IO4(実際の表記は4) |
VCC | 3V3 |
まずはサンプルプログラムを書き込んでみた
次に、ESP32-DevKitC-32Dの動作を確かめるためのプログラムを実行する。
1つ目
まずは、サンプルプログラムの検証をArduino IDEで実施した。
int counter = 0; // counterという名前の変数を用意して、0をセットする
void setup() {
// 起動後、この中の内容が上から順に1回実行される
Serial.begin(115200); // シリアル通信の準備をする
while (!Serial); // 準備が終わるのを待つ
Serial.println("プログラム開始"); // シリアル通信でメッセージをPCに送信
// 最後まで実行された後はloop関数に移行する
}
void loop() {
// setup関数が終了すると、この中の内容が上から順に何度も実行されつづける
Serial.print("カウンターの値 "); // シリアル通信でメッセージをPCに送信
Serial.println(counter); // シリアル通信でカウンターの値をPCに送信
counter = counter + 1; // カウンターの値を1増やす
delay(1000); // 1000ミリ秒(1秒)待機
// 最後まで実行された後はloop関数の先頭に戻る
}
参照したのは下記:
上ではコアライブラリなるものを追加したが、今度は普通のライブラリとしてDHT.hを追加した。
2つ目
1つ目のサンプルプログラムをESP-WROOM-32Dに転送して、実行する方法を参照した。
温度・湿度センサー(DHT11)を使ってみる
//温湿度センサモジュールを使って温度、湿度を測定するスケッチ
#include "DHT.h" //ライブラリインクルード
#define DHT_Pin 4 //DHT11のDATAピンを定義
#define DHT_Type DHT11 //センサの型番定義 DHT11,DHT22など
DHT dht(DHT_Pin, DHT_Type); //センサ初期化
/* 計測値設定 */
float humidity = 0.0f; //湿度
float tempC = 0.0f; //摂氏温度
float tempF = 0.0f; //華氏温度
float discomfortIndex = 0.0f; //不快指数
bool isFahrenheit = true; //華氏読み出し引数にtrueを設定
void setup() {
Serial.begin(115200); //シリアル通信のデータ転送レートを115200bpsで指定。bpsはビット/秒。
Serial.println("DHT11 Lesson11"); //画面に表示
dht.begin(); //温湿度センサー開始
}
void loop() {
delay(2000); //2秒待つ データの読み出し周期1秒以上必要。
humidity = dht.readHumidity(); //湿度の読み出し
tempC = dht.readTemperature(); //温度の読み出し 摂氏
tempF = dht.readTemperature( isFahrenheit ); //温度の読み出し 華氏
/* 読み取れたかどうかのチェック */
if (isnan(humidity) || isnan(tempC) || isnan(tempF)) {
Serial.println("Read failure!");
return;
}
/* おまけ 不快指数計算 */
discomfortIndex = 0.81f * tempC + 0.01f * humidity * (0.99f * tempC - 14.3f) + 46.3f;
/* 以下読み取り値の表示 */
Serial.print("湿度: ");
Serial.print(humidity);
Serial.print("[%]");
Serial.print(" ");
Serial.print("温度: ");
Serial.print(tempC);
Serial.print("[℃]");
//Serial.print("華氏: ");
//Serial.print(tempF);
//Serial.println("[F]");
Serial.print(" ");
Serial.print("不快指数: ");
Serial.println(discomfortIndex);
}
上記コードは下記を参照した。
ボードへの書き込みをしていると、「arduino fail to connect to esp32 ...」のエラーが出た。解決策は今の所、下記の方法を参照した。本質的な解消法ではなさそう。
今、快適なんだが、不快指数が高いのが気になる。
詳細な分析は後ほど。
Author And Source
この問題について(EspressifのESP32-DevKitC-32Dを使って温湿度と不快指数を図ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/mathayuki/items/cec4d99774c8120d8b25著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .