作ったもの
スマホと連携して、温度と水位検知をしておしらせしてくれるIoTデバイスを作りました。ケースのタッパーがプロトタイプ感がたっぷりですが、一応機能してくれています。
お風呂を便利に快適に貯めれるようにしようとした、お風呂ハックです。
去年の夏頃に、欲しくて少しずつ部品を集めて作ってました。
IoTLTで登壇してきました
このデバイスを引っさげて、IoTLTへ登壇した時の様子はこちらです。
こちらでは作ったときの具体的な様子を背景含めてまとめていきます。
太陽熱温水器について
もともと家にはガス給湯器がありますが、太陽熱温水器という設備も入れています。もう10年以上利用して二代目です。価格は安価なタイプで導入で約20万円ぐらいです。
安くて良いことは結構ありますが、安さなりに面倒なところもあります。お湯張りが自動で出来ない点です。あと単水栓なのでお水を入れて温度調整も必要です。
お風呂掃除してお風呂を貯めるまでが30分ぐらいかかるので、割りと時間の節約出来ないかなと思ってました。色々解決方法はあるのですが
解決方法はあるものの
古典的な方法としては、お湯を溜めながら時間を見計らって止める方法。方法というか、ただお風呂を早く入りたくて待っているだけの人になります。
もちろんそれでも良いのですが、自分は後風呂派なのでこれは論外です。
次に、時間を測りつつタイミングを見て見に行く方法。これは上と大して変わらないのですが、最低限お湯がたまる前までは無視できるので悪くはないです。が時間を見て止める方法と対して変わらない。
最後に、水位センサーや自動水栓が付いた製品を買う方法。こういった製品が昔からあります。
水位センサーはこういったものです。実は同じ製品がありますが、温度センサー部分が壊れてただの水位センサーです。便利ではありますが。
オリエント 湯温計付 バスアラーム 1003 | |
ASIN : B003DZI9SY こちらはAmazonアソシエイトプログラム参加リンクです |
次に、定量の水を出した後に自動的に止水してくれる製品。これも良いのですが単水栓の温水器なので水と温度の面倒を見る必要があるので、何も考えずにほっておくことが難しいです。
カクダイ バスぴたり2 2111 | |
ASIN : B001ULBQBU こちらはAmazonアソシエイトプログラム参加リンクです |
IoT的に監視できる装置を作ってみた
理想
ということで、理想を考えてみると
- お湯と水を最適な温度に保ちつつ
- お湯が一定の水位に溜まった水栓(蛇口)を締めてくれる
- お風呂がたまったことをスマホなどにお知らせしてくれる(ブザー音うるさいのでそれが良い)
なのですが、水栓を開け閉めする手段で良さそうな方法がなかなか見つからなかったです。
最初に思いついた方法は「電磁バルブで水栓を操作」する方法で、こういった製品を見つけたものの
【ノーブランド品】AC110V 電磁弁 直動式 圧縮空気 水 水空気 1/2インチ | |
ASIN : B00R483AYE こちらはAmazonアソシエイトプログラム参加リンクです |
電磁弁 水空気のため 圧縮空気用 (DC12V 4D(パイロット式)) | |
ASIN : B00JFUAFME こちらはAmazonアソシエイトプログラム参加リンクです |
大抵どれも 100Vを扱う製品ばかりで、素人+お風呂場で100Vだと電気風呂というレベルではないです。12Vだとどの程度の水圧に耐えれるかわからなかったです。そもそも防水化が課題だったので諦めてます。
怖いので現実的になる
ということで少々怖い部分を諦めて、温度と水位を監視できて、かつスマホで見れるようにしてみました。
温度センサーはこういったものを利用しました。Arduino界隈では定番らしいです。防水処理されているのも良かったです。
WINGONEER防水デジタルサーマルプローブまたはセンサーDS18B20 | |
ASIN : B01DCY9G0K こちらはAmazonアソシエイトプログラム参加リンクです |
水位センサーは、電極タイプを最初考えていましたが、扱いが面倒な気がしてパスしました。(お風呂近くにこんなものをおいておくと家族に不審がられるので)
WINGONEER 5pcs土壌湿度計湿度検出水センサーモジュールYL-69 Arduino用センサーとHC-38モジュール | |
ASIN : B01H6WK51I こちらはAmazonアソシエイトプログラム参加リンクです |
他にも、静電容量タイプ?や超音波センサーも考えてみましたが、Amazonで探索してると「フロートスイッチ」なるスイッチを発見しました。水位に達すると浮きが上がって磁気を使ってスイッチ(多分リードスイッチ?)するものらしいです。
水位センサー,SODIAL(R) 5xZP4510液体水位センサー垂直フロートスイッチ | |
ASIN : B01EZGSVZK こちらはAmazonアソシエイトプログラム参加リンクです |
こちらなら、水まわりでも安心して使えるはずです。(ケーブルがそのまま出ているように見えますが、見たところシリコンらしいものでシーリングされていました。)こちらを採用してみました。
最後に、必要なボードやスマホ連携ですが、スライドに載せたので箇条書きにしておきます
- 利用ボード:Adafruit Feather 32u4 Bluefruit LE - スイッチサイエンス
- BLEが搭載されているArduino互換ボード
- (BLEでちょっとした実験がしたかったので買ってみたものの間違えてしまったので寝かされてたもの)
- 比較的低消費電力。標準でリチウムポリマーバッテリー向けの端子がついてるので合うものを使えば、電力については心配なさそう
- 後述するBlynkとBLEベースでデータのやり取りが可能
- スマホ連携:Blynk ブリンクと呼ぶそうです
- スマホアプリ。iOS, Android両対応
- Arduino, Arduino互換, Rasperry Piシリーズなどのボードと連携可能
- スマホとはWifi, Bluetooth, BLEなどの通信規格を使って接続します
- アプリ内で、表示や操作するウィジェットと呼ばれるパーツを並べて、ボードと連携させる
- ボード側では専用のライブラリを読み込むことで連携可能
- 参考にさせてもらったブログ:Adafruit Feather 32u4 Bluefruit LE 動かしてみた | Home Made Garbage
- バッテリー:リチウムイオンポリマー電池400mAh - スイッチサイエンス
- バッテリーの電源供給のオンオフスイッチ:ON/OFFスイッチ付き JST PH型2ピン延長ケーブル - スイッチサイエンス
- バッテリーをそのまま繋いでおくと、電池を完全に使い切ってしまうので、手動スイッチも入れた
- その他
- ブレットボード
- ブレットボードで使うジャンパーワイヤー
- センサーやスイッチ用に使う抵抗(プルアップ抵抗と呼ばれている、確実にスイッチのオンオフをさせるための手法で使います。必要性はちょっとわからず)
以上の部品を使って装置の配線を書くとこうなります。温度センサーのつなぎ方が間違ってるかも知れなくてちょっと自信がない。
出来上がった試作の様子とBlynk連携はこう出来ました。
Blynkは、センサーの値を元にイベントを発火させる機能もあります。通知機能と連携させることも出来ます。例えば写真のようにフロートスイッチのオンオフで通知を出すことも出来ますし、温度が指定値以上に上がった場合に警告を出す事もできます。
https://docs.blynk.cc/#widgets-other-eventor
ボードに書き込んだコードも上げておきます。Blynkで使うときに、API連携として認証用の認証トークンが必要になります。Blynkアプリ上で生成することが出来ます。
防水対策を考える
というわけで、ブレットボードで仮組みをしてスマホ連携も出来ましたので、お風呂場に持っていきたいところですが、そのままだと 電気風呂(byちゃんとく先生) の二の舞いになってしまいます。
低消費電力だけど事故は怖い(´・ω・`)
なので、むき出しにしないようなケースを考えてみましたが、ここまでで割りとお金をかけてしまったのでケースはチープな方法を考えていましたが、100円ショップの食品を入れるタッパーがちょうどよかったのでそれを採用しました。
タッパーから黒いものが2つ出ていますが、これはケーブルグランドと呼ばれる、ケーブルをケースから出す口です。防水タイプのもので、ケーブルの幅の間で口をねじって調整することで防水化させることが出来ます。これ一つ150円でした。ケース以上に金かかってる。。
また、ケースとケーブルグランドの固定は、最初はシリコンタイプの接着剤をベタベタ付けていましたが、すぐに外れてしまったので、標準で対応しているナットを別途購入して、更にシリコンパテ(ちょっと前から気に入って使ってる Sugru )を使ってシーリングしました。これで防水テストをした様子がこれです。
1分ほどタッパーケースを水中に埋めてみましたが、特に水漏れらしいものもありませんでした。これなら多少水がかかっても心配ないかな?
完成
こうして、紆余曲折しつつ割りと使えるものが完成しました。
中にブレッドボードがそのまま入ってるのがなかなか乙なものだと思います(よくよく考えたら恐怖画像ですね)
利用している様子がこれです。お風呂の蓋に本体を置いて、吸盤を結束バンドで無理やり付けたフロートスイッチをほしい水位の位置に固定。温度センサーも防水なので水の中に突っ込んでもさして問題ないです。
写真では撮り損ねてますが、お湯と水での温度調整は、風呂桶に一時的に両方を入れて温度センサーを入れてから、スマホのBlynkアプリで表示している温度情報を見ながら調整しています。
すぐに温度が見えるわけではなくて20秒ぐらい落ち着くのを待つ必要がありますが、きれいに温度を出してくれるので便利に使えてます。
その後に浴槽に温度センサーを入れて、お湯をためながら温度もリアルタイムで見れるようになってます。温度高すぎたら水を調整し直せます。
まとめと今後
というわけで、IoTLT vol.38 のネタの裏側でした。本来は全自動が目的だったので、まだこれからやれることがある状態を残したままながら、それなりに便利に扱えるようになったので、楽しみつつチャレンジできるかなと思ってます。
IoTLTの懇親会では、蛇口をどうにかする蛇口IoTについてのアイディアをいただきました。箇条書すると
- 重しを付けて蛇口を占める
- 実は製品であるようです:タカギ(takagi) バスピッターL B023LG お風呂 水の入れ過ぎを防ぐ 【安心の2年間保証】
- あれ、これで解決じゃね。。。?
- 歯車を使って低めのトルクのモーターでも回せるようにする
- Twitterでちょうどこういった例を見かけたので、うまく使えば電気的な操作もできるかも?
- お湯と水を混ぜる蛇口のアイデア💡
- 自動車ドア向けのアクチュエーターを使う(防水し易いかも)
- 河野さん@秘密結社オープンフォース より教えて頂きました
- 水栓をレバー式にして、アクチュエーターで動かす作戦。レバー式水栓はこういうものかな?:カクダイ シングルレバー上部 793-202, カクダイ パドルレバー ブルー 793-610
- こういったものかな?:参考:ドアロックが不良になったので修理できるか分解してみた! – A2-blog
- 汎用タイプもあるらしいので、こちらを使ってみても良いかも?:汎用ドアロックアクチュエータ(ドアロックモーター) 12V用
- 12Vなものが多いので、100Vよりはまだましだろうとのこと。死ぬことは無いかな(汗)
でした。蛇口を開け閉めする方法としては、レバー式が一番やりやすそうです。ただ水栓ハンドルは他にも色々あるようなので、もう少し見回って考えてみます。(こういうときにモノタロウ見るのが便利そうですね)
後、水とお湯をちょうどよく入れる手段も、温度センサーがあるので値を見ながら水栓を動かして調整するなどできると良いかもしれません。
監視用のボード類周りはもっと小型軽量のケースに入れ込みたいのと、現在は長めのケーブルにしているフロートスイッチを、ケースに直付けして吸盤固定できるようにすると扱いが楽な気がします。 監視用の装置を中継にして、蛇口IoTを単独で動かす+無線通信などで連携できると面白いかもしれません。
色々とまとめてみました。蛇口IoTは具体的な形がまだ思いつかないのでかなりチャレンジ感があるのですが、達成してみたい目標でもあるので、頂いた応援を糧にして取り組んでみようと思います。