猫の自動給餌機の製作

先日 ネコにエサを自動であげる機械をオープンソースで自作できる「robokitty」 という記事を見て、割と安価に給餌機を作成できるのではないかと考えた。
駆動はサーボモーターを使用していてWeb経由とスケジュールで餌やりが行えるようだ。
ベースとなっているドライフードのディスペンサーはすぐに見つかった。本来は人間用らしい。2310円。あとはサーボモーターさえ入手すれば、それを制御するマシンはずっと死蔵状態だった Raspberry Pi がある。Raspberry Pi は名刺サイズのコンピューターで5000円程度で売られている。Linux が動き、GPIO と呼ばれるデバイスの入出力を行うためのインターフェースを備えている。何もない状態から始めるなら Raspberry Pi よりも Arduino が良いかもしれない。Arduino は OSを持たないため全ての動作をプログラミングする必要があるが、Raspberry Pi は膨大な Linux の資産を利用することで楽ができる。

Raspberry Pi 2 Model B

Raspberry Pi 2 Model B

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

サーボモーターは単体で400円くらいから購入することが出来るが、この機会にいろいろ試してみようと思い、Raspberry Pi 電子工作用のキットを購入してみた。 
注文しているものが来る前に制御プログラムの下調べ。GPIO の制御には WiringPi というライブラリを使って C や PYTHON でプログラムするのが定番らしい。だがもっと簡単そうなのがあった。ServoBlaster というソフトウェアだ。これをインストールすると、/dev/servoblaster というデバイスファイルが作られ、これにパラメータを送り込んでやることでコマンドラインからサーボモーターが動作させることができる。
こんな感じ。

$ echo 4=0% > /dev/servoblaster

4 は GPIO に関連づけられたピンの指定。0% はモーターの位置を初期値へ戻す。100% とするとおおよそ180°回転する。%以外の指定の仕方もある。コマンドラインで動くのならこれをシェルスクリプトにして、cron に登録すれば指定した時間に動作するはずだ。
参考:Raspberry-PiにおけるGPIO関係ツールのインストール方法
 
フードディスペンサーが届いた。全長は40cmほど。

駆動部はこの羽根車。これをサーボモーターで動かす必要がある。

羽根車にはハンドルと一体化したシャフトを刺して固定している。貫通はしていない。

 
本当は、モーターは裏側の柱の中に仕込みたいと思ったが、穴開け加工などが面倒そうなのでフロント側の制御にした。肝心の羽根車とサーボモーターの連結だが、パーツ屋さんなどに行ってみたが適当なパーツを見つけることができず、加工の容易な木で作ることにした。まずは丸棒を削ってシャフトにし、金槌の形状に角材を取り付ける。

 
モーター側は角材を並べて接着し、シャフトの角材の受けとする。こうするとシャフトとモーターが直接繋がらないので、容器を外して洗ったりすることができるようになる。接着強度が足りなかったり、見た目があまり美しくないので改善したい部分ではある。

 
組み上がった姿。サーボモーターは1mm厚のプラ板にマウントして貼り付けた。

 
いよいろ Raspberry Pi と接続して動作確認。シェルスクリプトは以下のようになった。40% で 70〜80度動く。続けて命令を出しても受け付けないようなので、5秒休んでモーターを元の位置に戻す。

#!/bin/sh
echo 4=40% > /dev/servoblaster
sleep 5s
echo 4=0% > /dev/servoblaster

 
こんな感じに動く。実際にフードを入れてみると、往復の動作で 14g が出てきた。このスクリプトを cron に登録し、朝昼晩と日に3回動作するようにする。

 
これが一応の完成形。ペットボトルを加工して、お皿にフードが正しく落ちるようにした。ちなみにサーボモーターの電源は Raspberry Pi から取ってしまっている。この先デバイスを増やすことになったらまた考える。

 
フードが出てくる様子はこんな感じだ。

 
これまで2〜3日までの外出ならフードを多めに盛ってそのまま出かけていたが、これが安定的に動くようなら規則正しい食事がさせられるようになる。平日でも朝晩2回の給餌だったが、少量を規則正しい時間に与えることができるのは意味のあることだと思う。それに事故やトラブルなど不測の事態で家に帰れない事態になってもしばらく生き延びることができる。(一度本当にそういうことがあった)
Raspberry Pi と GPIO を使用すると色々なことができる。方向が変更可能なWebカメラ、温度センサーと赤外線を使ったエアコン制御なども取り組んでみたい。
 
P.S. 朝起床前に給餌機が動作してしまうと、「早く起きてごはんくれー」という行動がなくてさびしいと感じてしまったので、動作時間を変更しようと考えている。