NASを設置しているスペースの温度管理のため IoT センサーが欲しくなったので調査した。
IoT超初心者なのでゼロから調査した。
調査
-
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】デジタル温度センサ(1wire)DS18B20+ | ¥320 |
【K-12236】ESP-WROOM-02開発ボード | ¥1,280 |
【C-05159】ブレッドボード・ジャンパーワイヤ(オス-オス)セット | ¥220 |
【P-05294】ブレッドボード BB-801 | ¥200 |
【R-25472】カーボン抵抗(炭素皮膜抵抗) 1/4W4.7kΩ (100本入) | ¥100 |
動作確認
-
ひとまずブレッドボード上に配置する
-
ESP-WROOM-02開発ボード に同梱のピンヘッダーをはんだ付け
-
Arduino(ESP-WROOM-02)で温度センサーDS18B20を制御する – 故きを温ねて新しきを知る人ぞ知る を参考に配線
- USB接続してもすぐにLEDが消えておかしいと思ってよく見るとDS18B20のGNDとVDDを逆に接続していた。危ない。
-
ソフトウェア準備
-
動作確認用のスケッチ作成
-
温度センサーの動作確認
- ライブラリを追加
-
https://github.com/PaulStoffregen/OneWire と https://github.com/milesburton/Arduino-Temperature-Control-Library を ZIP でダウンロードして、IDEのスケッチ|ライブラリをインクルード|.ZIP形式のライブラリをインストール から。
- IDE再起動
-
https://github.com/PaulStoffregen/OneWire と https://github.com/milesburton/Arduino-Temperature-Control-Library を ZIP でダウンロードして、IDEのスケッチ|ライブラリをインクルード|.ZIP形式のライブラリをインストール から。
- 動作確認用のスケッチ作成&書き込み
- ライブラリを追加
# 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);
}
ESP-WROOM-02 と DHT11 で温湿度センサーを作る - Qiita に続く。
参考URL
-
ESPr Developer ( ESP-WROOM-02 開発ボード )の使い方をザッと紹介 | mgo-tec電子工作
-
超特急Web接続!ESPマイコン・プログラム全集[CD-ROM付き] (ボード・コンピュータ・シリーズ) | 国野 亘 |本 | 通販 | Amazon
-
シリアル変換を自分で用意する場合
-
ESP8266WiFi.h
のドキュメント -
DHT11
-
電池駆動