ESP32-WROOM02+DHT20で温湿度をはかる


# 概要

ESP32-WROOM-02の[評価ボード](https://www.switch-science.com/products/2652?pr_prod_strat=e5_desc&pr_rec_id=7ce7f8ea4&pr_rec_pid=7675675082950&pr_ref_pid=7675670167750&pr_seq=uniform)と[DHT20](https://www.switch-science.com/products/7946?srsltid=AfmBOopaxDexBkEiFCE_kxCx1hsJoZ2EBbnt24msGuY1HXI7rBmIVo7X)があったのでお試しで温湿度を計ってみた

# 配線

ESP32のほうにGrove端子をつなぐところがないので、コネクターをぶった切って連結ピンにはんだ付け。
↓こんなかんじ（GNDが外れてる。。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/a9c99488-c534-4c9d-b4f2-b6025ea2c718.png)

配線は↓
シンプル

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/08015942-3b7c-4f0c-bfb0-cbb8d37d074a.png)



# 開発環境

とりまarduino IDEでやる
[公式サイト](https://www.arduino.cc/en/software/)からDLして適当にインスコ
久しぶりにIDEを開いてみるとおしゃれなUIになってダークモードに対応しておるな...僥倖僥倖

コードを書いてビルドからのボードに書き込みをしたいところなんだけど、
ESP32-WROOM-02へ書き込めるようにするためボードマネージャからパッケージをインスコしないといけない。

基本設定を開いて追加のボードマネージャのURLの部分に着目。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/4d398d1f-69bd-46dc-806a-04b7e7efbfcd.png)

その行の一番右にあるウィンドウボタンを押すと

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/6249adc8-c770-4caa-9d9f-00dc9b3030b9.png)

ボードマネージャのURLを張り付ける欄がでてくるので

```text
http://arduino.esp8266.com/stable/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json
```

を張り付けた。
OKを押して変更した基本設定を保存。そうすると何か読み込み処理が走るので完了するまでまつ。
その後、画面左のペインからボードマネージャを選択して、検索窓に「ESP」と入力する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/d5938928-cc54-4d40-9aab-089d5d07a8f1.png)

そうすると、ESP8266というパッケージが検索されるので、それをインストールする。
（上の画像ではすでにインストール済）

インストールが終わったら適当なスケッチに

```c
int count=0;
void setup() {
  Serial.begin(115200);
}
void loop() {
  Serial.println("hello world! count=" + String(count++));
  delay(1000);
}
```

と入力する。（hello world用のコード）
ESP32のボードがつながってるシリアルポート（COM1とか2とか）を調べて、
ボードとポートを選択する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/619f3e7b-33bc-40de-a1b3-34a26d39c7fc.png)

ボードには```Generic ESP8266 Module```を選択して、
ポートにはさっき調べたESP32のポートを選択する。からのOK

あとは書き込みボタンを押せば、ソースをビルドして書き込んでくれる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/729a3406-7755-4c3c-a766-a642b141f5b2.png)

書き込みが完了したらツール＞シリアルモニタ
でシリアル接続する。ボーレートを115200に変更することを忘れずに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/6a9ccd33-97ce-400f-a57a-1f9e2c48007b.png)
（変更しなかったら文字化けする）

これができたら

```
hello world! count=3
hello world! count=4
hello world! count=5
...
```

という感じで何度もhello worldがでてくるはず。
それで環境構築は完了

# DHT20のライブラリ導入

温湿度センサー用のライブラリを導入する
左側のペインからライブラリを選択し、「DHT20」と入力。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2262024/b09009ce-3107-4552-a94d-89d371e4b992.png)

すると、「DHT20」のライブラリがあるのでインストールする。
インストール処理が終わればOK.

# 温湿度取得サンプルの実行

ようやく温湿度をとるコードを実行できる。
実行するコードはこれを使う。

https://github.com/RobTillaart/DHT20/blob/master/examples/DHT20/DHT20.ino

ほぼこれを使うんだけど、DHTはデフォルトでGPIO21,22を使うようだ。
今回は12と13なのでコードをちょっと修正する。

```C
Wire.begin();
```
↓
```C
Wire.begin(12,13);
```
これでOK。

あとはビルドして書き込めばOK
シリアルモニタを見ると、

```
Type	Humidity (%)	Temp (°C)	Time (µs)	Status	Offset
DHT20 	59.7		25.1		6527		OK	-2.30	1.70
DHT20 	59.7		25.1		6060		OK	-2.30	1.70
DHT20 	59.7		25.1		5043		OK	-2.30	1.70
DHT20 	59.7		25.1		6059		OK	-2.30	1.70
DHT20 	59.7		25.1		6069		OK	-2.30	1.70
DHT20 	59.7		25.1		6062		OK	-2.30	1.70
DHT20 	59.7		25.1		6064		OK	-2.30	1.70
DHT20 	59.7		25.1		6059		OK	-2.30	1.70
DHT20 	59.7		25.1		6064		OK	-2.30	1.70
```

こんな表示があればOK