動機
サービスエリアとかのトイレで、立ち上がるとセンサーで感知して自動で流してくれるやつが割と便利なので自宅にも欲しいと思ったのが動機。駆動部品にはサーボモータが使えそう。人の動き検知には超音波距離センサが使えそう。
あと安かったから3つも買ってしまったArduino nanoが使い道がなくて持て余してたからです。
基本構想
最初はサーボモータでレバー捻ればいいんでしょと思ったけれど、レバーに直接モータをつなぐだけではトルク不足で動きませんでしたorz
家族も使うものなので、ここは元の動きをそのまま残しつつ機能を追加することを目標に設計が必要そうです。
取り敢えず貯水タンクを開けてみる↓
ゴチャゴチャしている…(・_・;)
ちょっと考えて機構はこんな感じと判明しました。
機構の簡単な図解
↓
貯水タンクを横から見た図です。レバーを手前or奥にひねるとチェーンで繋がった小のふたor大のふたが開くようになっています。
他に水位が一定に戻るまで水を貯めるためのウキが付いていますが、今回は関係ないので省きます。
というわけで流すにはフタをモータで引っ張れば良さそうです。元の動きを阻害しない点、取り付けやすい点を考えて、こんな感じにしました。
モータ取り付け後の図↓
使用する部品
Arduinoは最安のnanoで大丈夫です。モータはSG90が有名ですがちょっとパワーが足りないかも…。ギリギリ行けますが高トルク版のSG92Rだと安心です。距離センサはシャープ製の赤外線センサを使いました。(ちょっと高いので距離が測れる他のセンサで代用するのもあり)
- Arduino nano 互換ボード ×1個
- サーボモータ SG90またはSG92R ×1個
- Micro USB から5V電源をとるモジュール ×1個
- シャープ製 測距モジュール ×1個
モータの取付け
モータはタンクに固定しなければならないのですが、横側に何故かいい感じの穴が空いていたので(サイズもぴったり!?)そこにはめました。穴がない方はガムテープで固定するなり接着剤とかで固定するなりすればいいと思います。要は紐が引っ張れればどこに付けてもいいです。僕が使ったサーボモータSG90では引っ張るトルクが結構ギリギリで、回転半径を決めるのに苦労しました(といっても糸を通す穴を変えるだけですが)。あまり小さくしてしまうと引っ張る長さが足りなくて流れなかったり、トルクが足りないとモータが動かなかったりします。あとArduino nanoだと出力電流が足りなくて、別で電源を取る形になっています。Arduino UNOで試したら力が倍くらいになりました。
0[deg]→180[deg]まで目一杯回してフタの開閉を行うことが出来ました!
センサの取付け
座ったり立ったりするのを検知するセンサはこの赤外線距離センサを使います。
シャープ測距モジュール GP2Y0A21YK
http://akizukidenshi.com/catalog/g/gI-02551/
このセンサは数cm〜80cmの距離に応じて電圧を出力してくれるもので、5V動作なのでArduinoやラズパイにそのまま繋ぐだけの有能センサ(ただし、精度はお察し)です。こいつを便器の下辺りに取り付けておきます。
センサの横に赤色LEDをつけてます。↓
回路づくり
モータとセンサとArduinoNanoを繋げるために基盤を作りました。
モータとセンサの電源は、Arduinoの5V出力から取っている記事が多いですが、それだとモータを回すのに十分な電力が取れませんでしたorz。
代わりにUSBから5V電源を取ることにしました。(ArduinoはUSBを電源にする代わりに安定した5V電源をVin端子とGND端子に繋ぐことで動かすことが出来るみたいです。)
USB type-Bが刺せるアダプタ。amazonで10個で150円くらい!↓
回路図を書くとこんな感じです。(まだ回路図を書くのに慣れていないので、見づらいですがご容赦を)
回路図↓
実際の基盤。10円玉4個くらいのサイズ↓
ハードウェア構成は取り敢えずこんな感じです。次回は制御プログラムの方を作っていきます。