番外編「ESP8266を使っておかんがエアコンをつけるようにするシステムをつくる」の巻

ゾーンコントローラがやっと3台になったので、今度こそサーバー側のソフトを書こうと思っていたのですが、またもや脱線です、毎回すみません。

今度はなに?

おじさんの実家では母親が一人暮らししているのですが、昔の人なのでなかなかエアコンをつけなくて心配です。電話で話しても「暑くないんだもん」などと言うので困ります。年寄りは感覚が鈍っていて知らないうちに熱中症になるっていうのに... そこで、「暑いを見える化」し「だからエアコンつけてね」と説得力をもって言えるような仕組みを導入することにしました。

しくみ

ゾーンコントローラで使っているESP-WROOM-02をIoT的に使います(こっちがESP-WROOM-02の普通の使い方かもしれません)。温度湿度センサーで得た情報をインターネット上のサービスに投げて可視化し、おかんが使っているiPadとおじさんのパソコンの両方で表示します。でもって「ほら、こんなに暑いでしょ」と言えば、納得してエアコンをつけるんじゃないかという目論見です。

f:id:cacao1:20160710132224j:plain:w400

機械のしくみ

ESP-WROOM-02と温度湿度センサHDC1000を使います。IoTぽくするならプロトコルにMQTTなどを使ってセンサー側とサーバー側を作りこむのでしょうが、センサーからデータを投げるだけならともかく、投げた結果をグラフ化するのにはサーバー側に表示の仕組みを用意する必要があり、おじさんのペースで作っていると、きっと出来上がる前に夏が終わってしまいます。困ったなと思いつつネットを探していると、なんと、IoT用のサーバー機能のほかに可視化までしてくれるすてきなサービス"Ambient"がありました。Ambientには、ESP8266用にはAPIのライブラリもあり、わずか2,3行書くだけでデータを投げることができます。さらにすごいことに、サーバー側では設定画面をポチポチするだけでグラフ化できます。すごすぎですね。詳細はリンク先(作者の方のページです)をご覧ください。

f:id:cacao1:20160710133825j:plain

こんなグラフが簡単に作れてパスワードさえ覚えていればどこからでも参照できます。

作ったもの

HDC1000を使った回路とソースはAmbientのドキュメントページにあるので(おじさんは知らずにHDC1000にしたのですが、どこまでいたれりつくせりなんでしょう)、サービスを利用するならそのままでいいのですが、そこまで人様に依存してしまうと脳が退化しておかんより先に自分がぼけてしまいますので、I2C接続のLCDと、アラーム用にLEDを追加ました(といっても相変わらず人様からのコピペです)。また、ビルドしなおさなくてもWiFiルータの設定や情報を投げる先のキーなどを変更できるよう、設定モードを設けましたので、そのモードに入るための押ボタンスイッチもつけました(この機能はゾーンコントローラからの流用です)。I2C液晶のドライバはオレ工房さんのソースを利用させていただきました。 小さいケースに収めるため、ESP-WROOM-02に直接リード線をはんだ付けして両面スルーホールの基板取り付けたり、チップ抵抗を使ったりしてみました。 ソースはGitに置きました。

f:id:cacao1:20160710133324j:plain

一応、回路図です(これだけですが)。

f:id:cacao1:20160710134024j:plain:w400

チップ抵抗使いました(写真の黒い小さいの)。このくらいのサイズなら手はんだでも何とかなります。

f:id:cacao1:20160710134243j:plain:w400

おもて面 変換基板なしだと小さく収まります。

動作

約5秒ごとに温度・湿度と不快指数を切り替えて液晶表示するようにしました。不快指数が設定した値を超えると赤色LEDが点灯するようにしました。Ambientへは設定した時間ごとに温度・湿度・不快指数を送信するようにしました。

f:id:cacao1:20160710134444j:plain:w400

できました。箱に入れるなんて久しぶり

メモ

  1. HDC1000モジュールのセンサー部はケースの外へつき出すように配置しましたが、ケースにほかに開口部がないと排熱がここを通り測定値が不正確になりそうです。私が作ったものはLEDや電源コネクタ部に大きな穴が開いているので大丈夫なようです。
  2. MicroUSBのACアダプタがたくさん余っているのでこれを降圧して使ったのですが、550mAのものでは起動せず750mAのものにしたら動きました。550mAのACアダプタがヘタっていただけかもしれませんが(無負荷だと電圧が出ているのですが)、動かないときは電源も疑ってみてください。。
  3. 当初は半日ちょっとでハングアップしていたのですが、HDC1000から読み込む処理と液晶に出力する処理の間にDelayを入れたら連続運転できるようになりました。
  4. I2Cのプルアップ抵抗はHDC1000に内蔵されていますが、試験のときなどにHDC1000を外すこともある(った)ので、別にプルアップ抵抗を入れておきました。
  5. いつも使っているラッピングワイヤのほかにポリウレタン銅線を使ってみたのですが、20Wのハンダごてでは被覆がなかなか溶けないようです。被覆に少し傷をつけてからハンダに浸けるとポリウレタンの溶ける臭い?がしてくっつきます。

設置してみた結果

来週お盆に帰ったときに設置してみます。ちゃんと動いたら利用結果を報告します。

2016/08/22追記

だいぶ遅くなってしまいましたが、結果報告です。 自宅で試験しているときは平気だったのですが、実家に持ち帰って動かしたら、ESP8266が暖かくなってしまいました。試験環境よりWiFiの電波が弱いせいでしょうか?そのため、実際の温度より1.5℃~2.0℃くらい高めの測定値がでてしまいます。おかんには「あてにならないわね」などと言われてしまいましたが、気にしているということは伝わったようで、昨年よりはエアコンを使っているようです。ですので、とりえあず目的は果たせました(^^;;。また、上記設計ミスで測定値がずれるほかは、ESP8266+Ambientの組み合わせで1か月以上快調に動作し続けています。

f:id:cacao1:20160821223822j:plain:w600

実験線進捗状況 用地取得が完了しました。