0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EspressifのESP32-DevKitC-32Dを使って温湿度と不快指数を図ってみた

Last updated at Posted at 2021-06-20

IMG_2898_heic.png

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の回路図は下記にあった

esp32_devkitc_v4-sch_pdf.png

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 ...」のエラーが出た。解決策は今の所、下記の方法を参照した。本質的な解消法ではなさそう。

ということで、数値を取り、計算することができたぞ。
001_test___Arduino_1_8_15.png

計測値
_dev_cu_usbserial-14140.png

今、快適なんだが、不快指数が高いのが気になる。
詳細な分析は後ほど。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?