あるプロジェクトで温度センサーを扱う機会があり中国のサイトから購入していた予備のセンサーがもったいないので、室温をデータ化する為のロガーを作成してみた。
いま流行(?)のIoTだ。(笑)
■制作
ESP8266 は、電池駆動の実験をしていた マイクロテクニカのESP-WROOM-02 搭載mikroBUS(R)対応ブレークアウトボード Ver.2 を使用しました。
安いし必要なプルアップ抵抗も実装済みなので最小構成で使用したい場合は便利です。
スケッチの書き込みは 秋月電子の超小型USBシリアル変換モジュール でおこないました。
温度センサーDS18B20(防水仕様)
室温測定には向かないかも…
とりあえず、余っていたので ^_^;
使用する部品は少ない。
基板上に必要なパーツはESP8266とLEDくらい
ピン端子は、電源・センサー・テスト用シリアル。
タクトスイッチは、スケッチ書き込み時に使用。
ガラクタ箱に転がっていた壊れた玄関チャイム(?)のケース
汚れていたのでアイボリーのスプレーで塗装しました。
ケースに組み込んだ様子
※スピーカーは未使用
電源は単三電池(エネループ)を2本。
(多分、1ヶ月くらいもつのではないかと・・・)
■モジュール等の購入
今回、ESP8266 はAmazonさんで、その他こまかい部品は秋月電子さんで購入しました。
温度センサー(DS18B20)は中国のサイトから購入しましたが、Amazonさんでも購入できます。
(中国から送ってきますが・・・)
だいたい2千円弱で作成できました。
■プログラム
使用したライブラリー
TimeLibライブラリー
OneWire
Arduino-Temperature-Control-Library
Ambientライブラリー
データの蓄積・グフラ化にはAmbientというWebサービスを使わせていただきました。
※チャンネルの公開はおこなっていません。
Ambient - IoTクラウドサービス
電圧と温度を表示
電池の消耗を抑える為
・10分毎に起動
・温度を測定
・データを送信
という感じでプログラムしてみました。
・・・が、
何故か20分毎(2回に1度?)にしかデータが記録されません。
10分毎に起動して送信しているみたいなのですが・・・
現在、調査中です。
※追記2017.11.02 原因が判明しました。
起動時、WiFiの接続に成功していたのにデータ送信する前に切れていました。
送信前に未接続の場合は再接続をおこなうようにすると正常に動作しました。
別のチップ(ESP8266)で試すと切れていないので個体差があるのかもしれません。
ネットの情報によると電池駆動時に注意が必要みたいです。
(最低電圧以下で使用しているとESP8266が壊れる可能性があるらしい)
とりあえず、起動時に電圧を取得して基準電圧以下の場合は deep sleep(無期限)に移行するようにしました。
今回使用した電池(エネループ)の過放電防止にもなります。
ESP8266の deep-sleep 機能は消費電力も少なくて良いのですが、スリープ時間は正確ではありません。
deep-sleep モードはマイクロ秒単位でスリープ時間を指定するのですが、10分で設定してみたところ3~8秒くらいのズレてします。
正確にとは言わないけど、せめてバラつきがなければいいのですが。
スケッチの公開は考え中です・・・
■まとめ
※中国の通販サイトからの購入について
気を付けないとトラブルが多いみたいです。
高額なものはやめたほうがいいかもしれません。
実際に送られてこないし返金処理にも応じてくれない(現在も問い合わせ中)場合もありました。
総額1000円くらいでしたので諦めモードになっていますが・・・。
それでも安いから買ってしまうのはしょうがないかものしれません。
だって送料込みでも安いから!!
日本で探すと値段が3~5倍のするしバリエーションも少ない。
品質はそれなりだし送られ来るのに10~15日くらいかかるけど、やっぱりやめられない。(笑)
… 以上です。