10日間の旅行に行くときにベランダで育てている野菜(小松菜とか野菜もろもろ)の水やりをどうしようか考え、
既製品も含めいろいろ検討した末、自作することにしました。

いろいろ調べたところ、よく使われるのが、水道の蛇口に取り付けて弁を制御するタイプの製品。
私の住処では植木鉢をベランダで育てているので、これは無理。
次にいいなと思ったのが、ペットボトルに制御部を取り付ける簡易タイプ。
これで目的が果たせるかも!と思ったのですが、10日だとペットボトルじゃ足りません。

というわけで、私の目的を果たせるものがありそうでないことがわかったので作ってしまうことにしました。





★材料








・USB延長ケーブル * 2(フラットタイプ)


★その他
半田ごて * 1(正直安モノでいい)
・半田 * 適当量
・ホットボンド(百均に売っているもので問題ない) * 必要に応じて
・LANケーブル(Raspberry Piにsshで入って設定する用)
・HDMIケーブル、キーボード、マウス(Raspberry PiのIPアドレス確認用)
・電動ポンプの動作確認用の乾電池

<組み立て>
シンプルなリレー回路です。
リレーはNC(ノーマルクローズ)につながないようにしましょう。
電動給油ポンプが単1乾電池2本で動くものなので3V駆動ですが、実際は
下の絵は素材がなかったために適当なバッテリーを繋いでいますが、実際には市販のUSBケーブルを剥いてPin1とPin4を繋いでいます。(電源はUSB ACアダプタを使用)
3Vのモーターに5Vを繋ぐのでモーターが心配ですがなんとかなるでしょう(適当)
心配な場合はきちんと降圧するか、3Vの電源を用意しましょう。
(ちなみにRaspberry Pi自体の電源と灯油ポンプの電源を両方ともボード本体から取れないかと、派生製品(Orange Piシリーズ)も全部試しましたがダメでした。残念ながら起動直後にResetがかかります。)
自動水やりき


基盤なしで、そのまま電動給油ポンプの電池入れる部分をくり抜いてリレーを押し込んでおります^^
Raspberry Pi Zeroだったらまるごと給油ポンプの中に押し込めたのに・・・。
なお、ベランダで使う場合は防水対策はしておいたほうがいいと思います。

USB延長ケーブルはフラットタイプにしておくと窓を閉めることができて、かつ電源を屋内から取ることができます。
13920840_1117691534947036_4922592358260476820_n


<ソフトウェア>
OSのセットアップ方法はどこにでもあるので割愛します。
pythonで楽がしたいので、WiringPi-Pythonをビルド&インストールしておきます。
大したプログラム書くわけでもないのでUbuntuでもRaspbianでも問題ありません。

=====================
orangepi@OrangePI:~$ sudo vi /etc/init.d/optest.py
gpio.setcfg(PUMP, gpio.OUTPUT)
while COUNT >= 0:
    gpio.output(PUMP, 1)
    if COUNT == 0:
        print "IT'S WORKS!"
        gpio.output(PUMP, 0)
        break;
    else:
        print COUNT
        gpio.output(PUMP, 1)
        COUNT -= 1
        time.sleep(1)
while True:
    time.sleep(86400)    //1日1回
  //どうしてCronでやらなかったんだろ・・・と作った後で気づくという
    timing_limit = 20; //20秒間
    while timing_limit >= 0:
        gpio.output(PUMP, 1)
        if timing_limit == 0:
            print "Time's Over. Pump Stop."
            gpio.output(PUMP, 0)
        else:
            print timing_limit
        timing_limit -= 1
        time.sleep(1)
=====================

<動作パターン>
Raspberry Piはgpioのピンによって初期状態でプルアップされているピンとプルダウンされているピンがあります。
わざとプルアップされているgpioピンに接続すれば、通電からプログラム動作時までの数秒間、ポンプが動きますのでポンプが動作するかの最終確認をすることができます。
上記プログラム実行時から24時間後に20秒間ポンプが動作、以後24時間毎同じ動作の繰り返しとなります。

で、あとは
推奨されていませんが/etc/rc.localで作成したスクリプト指定すれば起動と同時に動きます。
ちゃんとやるならsystemdとかですかね。
今回のはネット接続もいりません。

<まとめ>
こんなかんたんな制御ならもちろんマイコンでもできますが、ラズパイで作っておいて、今後色々応用できたらなあと思っております。
Parrot Flower Powerとか、可視化ソフトと連携して色々できそうですね。