IoT気温センサーが欲しい(調査メモ)

NASを設置しているスペースの温度管理のため IoT センサーが欲しくなったので調査した。

IoT超初心者なのでゼロから調査した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/153e3363-385c-c814-8c13-d214af523e67.png)

# 調査

- Amazon で既製品の温度センサーを探したがけっこう高い
- 気温センサーを自作しようとすると最初に `Raspberry Pi`＋気温センサーの組み合わせが見つかったがオーバースペック＆高い
- `Arduino` 互換の WiFi 付きデバイスがあるらしい(そもそも`Arduino`が何か知らなかったが)。下記の2種類が使いやすそう
    - `ESP-WROOM-02` (`ESP8266`) : WiFi
    - `ESP-WROOM-32` (`ESP32`) : WiFi+Bluetooth
- `ESP32` のほうもほとんど値段が変わらない
- `ESP-WROOM-02` と `ESP-WROOM-02D` があるが、技適が通ってるのは `ESP-WROOM-02D` のほう。

- ググっていたら `ESP32` + `BME280` の組み合わせを見つけた
    - 温度+湿度+気圧が測れるが高価になりそう&配線が面倒かも？
    - いずれは湿度センサーも欲しくなるかもしれないので候補の1つに覚えておく
- 今回は温度センサーが欲しいので `DS18B20` が良さそう

- `ESP8266` 単体だとシリアル通信しかできず、PCとの接続はUSB<->シリアル変換が必要。
    - 「開発キット」という製品だとUSBですぐに接続できるらしい。その分ちょっと高い。

- 運用時の電源は？
    - 3.3V 500mA(起動時) が必要らしい
    - 「ACアダプタ(～5V)+リニアレギュレータ」(発熱的に5Vが限界)
    - 「ACアダプタ(～12V)+スイッチングレギュレータ」(発熱は抑えられるがちょっとノイズあり＆高い)
    - 「乾電池2本」(3.0Vだがギリギリ動く？ => ESP32 だと低電圧でも動く)
    - 「乾電池3本+レギュレータ」
    - 「乾電池1本+昇圧回路」

# 購入、実験

## 購入したもの
秋月電子さんで下記を購入。

|部品|価格(税込)|
|---|---|
|【I-05276】デジタル温度センサ（１ｗｉｒｅ）ＤＳ１８Ｂ２０＋ | ￥320 |
|【K-12236】ＥＳＰ－ＷＲＯＯＭ－０２開発ボード|￥1,280|
|【C-05159】ブレッドボード・ジャンパーワイヤ（オス－オス）セット|￥220|
|【P-05294】ブレッドボード　ＢＢ－８０１|￥200|
|【R-25472】カーボン抵抗（炭素皮膜抵抗）　１／４Ｗ４．７ｋΩ　（１００本入）|￥100|

## 動作確認
- ひとまずブレッドボード上に配置する
- ＥＳＰ－ＷＲＯＯＭ－０２開発ボード に同梱のピンヘッダーをはんだ付け
- [Arduino\(ESP\-WROOM\-02\)で温度センサーDS18B20を制御する – 故きを温ねて新しきを知る人ぞ知る](https://agriboy.sakuraweb.com/blog/archives/478) を参考に配線

  - USB接続してもすぐにLEDが消えておかしいと思ってよく見るとDS18B20のGNDとVDDを逆に接続していた。危ない。


- ソフトウェア準備
  - Arduino IDE 1.8.13 ZIP 版ダウンロード
  - arduino.exe 起動<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/029ab0a8-8634-43f2-1f45-b29e45f3c622.png)
  - ファイル|環境設定<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/ed48b88d-6ad1-2b31-8f44-7db2957e926b.png)
  - 追加のボードマネージャのURLに`https://arduino.esp8266.com/stable/package_esp8266com_index.json`を入力<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/3e985552-2f4b-abda-6f9a-c836b5224a1f.png)
  - ツール|ボード|ボードマネージャ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/8ad166b8-15b0-dc22-9b04-0385ba614615.png)
  - ESP8266 をインストール<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/3fe63553-5746-1458-8c07-63ba8027ebf1.png)
  - ツール|ボード に ESP8266 が表れた<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/70744055-4cb4-792b-c565-e2a4ece35873.png)

- 動作確認用のスケッチ作成
  - 最小限のスケッチを作成<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/05b135d2-c2f8-a511-0a6e-dd2a623575b9.png)
  - 開発ボード付属の紙を参考に転送レートなどを設定<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/41fde5c4-f6cc-3caf-e5d7-7127eb10cade.png)
  - スケッチ|マイコンボードに書き込む
    - Connecting... になったら(またはその前に) PGM と RST ボタンを同時に押し、RST 離す PGM 離す の順に押す
  - ツール|シリアルモニタで動作確認
    - RST ボタンを押すと動作開始<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/1e49e6a0-70c6-6d54-993f-2bb61e438a0d.png)


- 温度センサーの動作確認
  - ライブラリを追加
      - https://github.com/PaulStoffregen/OneWire と https://github.com/milesburton/Arduino-Temperature-Control-Library を ZIP でダウンロードして、IDEのスケッチ|ライブラリをインクルード|.ZIP形式のライブラリをインストール から。<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/e3db7755-2b75-e67d-bcba-926caaff9ebb.png)
      - IDE再起動
  - 動作確認用のスケッチ作成＆書き込み

```c
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 14  //温度センサーをESP-WROOM-02の14番ピンに接続

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  Serial.println("");
  Serial.println("setup done");
}

void loop() {
  sensors.requestTemperatures(); // 温度取得
 
  float temp = sensors.getTempCByIndex(0); // 温度センサーから摂氏気温を取得
  Serial.println(temp);

  delay(1000);
}
```

  - シリアルモニタで確認すると流れてくる。温度センサーに軽く触ると数値が上がったので取れてるっぽい <br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39221/ea48caf3-9bc7-fed0-5e9f-d7fe08742c7c.png)



[ESP\-WROOM\-02 と DHT11 で温湿度センサーを作る \- Qiita](https://qiita.com/takke/items/307cf6183ec144da4e29) に続く。

# 参考URL

- [電子工作初心者におすすめのESP32開発ボードはどれ](https://spiceman.jp/esp32-recommendation/)
- [ESP32 用 BME280 \( 温度 湿度 気圧センサー \) ライブラリを作ってみた \| mgo\-tec電子工作](https://www.mgo-tec.com/blog-entry-esp32-bme280-sensor-library.html)
- [Arduino\(ESP\-WROOM\-02\)で温度センサーDS18B20を制御する – 故きを温ねて新しきを知る人ぞ知る](https://agriboy.sakuraweb.com/blog/archives/478)
- [Arduino\+DS18B20で温度測定してみた \- Qiita](https://qiita.com/hnw/items/315fad0d4b60ada10d00)
- [温度センサー DS18B20をESP32で動かすメモ \- Qiita](https://qiita.com/minwinmin/items/f6386a45860004aa37e7)
- [ESPr Developer \( ESP\-WROOM\-02 開発ボード \)の使い方をザッと紹介 \| mgo\-tec電子工作](https://www.mgo-tec.com/blog-entry-ss-wroom-howto01.html)

- [超特急Web接続\!ESPマイコン・プログラム全集\[CD\-ROM付き\] \(ボード・コンピュータ・シリーズ\) \| 国野 亘 \|本 \| 通販 \| Amazon](https://www.amazon.co.jp/%E8%B6%85%E7%89%B9%E6%80%A5Web%E6%8E%A5%E7%B6%9A-ESP%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E3%83%BB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E5%85%A8%E9%9B%86-CD-ROM%E4%BB%98%E3%81%8D-%E3%83%9C%E3%83%BC%E3%83%89%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%9B%BD%E9%87%8E/dp/4789847047/ref=pd_aw_sbs_14_2/358-4686685-0091520?_encoding=UTF8&pd_rd_i=4789847047&pd_rd_r=27381155-fa3d-496f-a057-c6872b30294e&pd_rd_w=9eDGn&pd_rd_wg=XZbnb&pf_rd_p=9341e244-f71d-4c8a-8950-9456431ce234&pf_rd_r=V4PQEGW6NQD6XJEA014R&psc=1&refRID=V4PQEGW6NQD6XJEA014R)

- シリアル変換を自分で用意する場合
    - [Check\! IoT ができるようになるまで ～ まずはシリアル通信を使えるようになる \- Qiita](https://qiita.com/dz_/items/277eba8cb760b81a2688)
    - [Check\! IoT ができるようになるまで ～ ESP\-WROOM\-02 にプログラムを焼く \- Qiita](https://qiita.com/dz_/items/eb7c80d3caf4a5c84274)

- `ESP8266WiFi.h` のドキュメント
    - [ESP8266WiFi library — ESP8266 Arduino Core 2\.7\.2\-111\-g96243d7c documentation](https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html)


- DHT11
    - [Arduino 入門 Lesson 11 【温湿度センサ編】 \| おもろ家](https://omoroya.com/arduino-lesson11/)

- 電池駆動
    - [IoT開発\(4\)\-ESP\-WROOM\-02を電池で駆動](http://country-programmer.dfkp.info/2020/07/iot_develop_004_esp_wroom_02/)
    - [備忘録：ESP32を乾電池２本で動かしたいのに動かない時は、まず電源線を見直しましょう！ \- DreamerDreamのブログ](https://dreamerdream.hateblo.jp/entry/2019/12/04/120000)
    - [ESP\-WROOM\-02Dを乾電池1本or2本で動かす\(DS18B20温度センサー\) \| 島貫農園](http://shimanuki-farm.net/archives/1614/)