ネコ飼いMakerが愛猫のためにできること
自動給餌器をM5Stackで改造して自宅ネコ用に完全カスタマイズ

ネコ飼いあるあるのひとつに「ネコを家に残して旅行には行きにくい」というのがある。そんなとき自動給餌器は便利だが、「万が一、作動しなかったら」と考えると、旅行を控えたくなる。
ネコ飼いの山崎雅夫さんは某自動給餌器を購入。しかし使いづらいといころが多かった。そこで改造してカスタマイズすることを決意。見事、課題を解決した。どんな手段を使ったのか、聞いてみた。
セッテッィングにイライラ
——山崎さんが手に入れた自動給餌器はどんな製品だったんでしょうか?
山崎:最大6食分を、設定した時間に自動で給餌するものです。給餌の際にはあらかじめ録音しておいた「○○ちゃん、ごはんですよ」といった飼い主の声を流すことができます。餌を入れるトレイは水平に6つ配置され、時間がくると回転して開口部に移動する仕組みになっています。

決して悪い商品ではないのですが、設定が複雑です。現在時刻からタイマーの設定まで15項目以上の手順を踏む必要があります。しかもメモリー機能がないので電源スイッチを入れるたびに現在時刻の設定からやらなければなりません。自分で操作マニュアルを作ったのですが、それでも覚えきれません。また、実際にトレイが動作したかどうかは、帰宅してから確かめるしかないので、そこも不安でした。
——課題解決のためにどんな方法で改造したのでしょうか?
山崎:ひとつは、毎回手動で時刻設定しなくていいように自宅のWi-Fiネットワーク経由で自動的に時刻を取得したいということです。これを前提に、定刻に自動給餌でき、給餌が終わればスマホに通知するシステムを作ろうと思いました。
制御にはマイコンが必要ですが、家にあったM5StackシリーズのATOM Matrixを使うことにしました。使い慣れていますし、今回の目的であれば性能は十分という判断です。

まずは分解してメカニズムを解明
山崎さんにとって、機械を分解してメカや部品を特定していくのはお手のものだ。100円ショップのガジェットを分解してその中身を解説した「『100円ショップ』のガジェットを分解してみる!」(工学舎刊行)という本まで出している。
まずは、筐体を開けて中身がどんなメカになっているかを調べた。
——自動給餌器の内部はどうなっていましたか?
山崎:底面のビスを外して、中身を見てみました。

まずは駆動系をチェックしたところ、モーターはDCモーターで一般的なものです。ギアで減速して真ん中のトレイの台を回転させるメカでした。台座にはピン1本と、トレイの数と同じ6個のスリットが開いています。

台座の周りにはトレイスイッチ(部品としてはリーフスイッチ)とフォトインタラプターがついています。いずれもトレイ位置検出のためのものです。


メカとしては
(1)台座が回転してピンがリミットスイッチを押す
→スイッチに当たると中の接点が接触して、スタートのトレイ位置が分かる。
(2)フォトインタラプターがスリットを検知
→回転が最初のトレイの位置で止まる。
となります。
ピンに連動するトレイスイッチ、スリットに連動するフォトインタラプターの2つのセンサーの組み合わせで、所定の位置にトレイが停止するようになっていました。
トレイの移動時にモーターの両端の電圧を測定してみました。電源は単二乾電池4本の6Vですが、測定の数値もほぼそのままです。回転スピードなどの制御は特になく、物理的なメカだけであることが確認できました。

——制御系はどうなっていましたか?
山崎:制御基板は1枚でした。コネクターなどは使用せず、リード線を直接はんだ付けするスタイルになっていました。この辺りはコストを抑えるためのようです。

制御基板のほかに液晶表示基板があり、フレキシブルケーブルで制御基板と接続されています。液晶パネルと液晶表示基板は異方性導電ゴムで接続されていました。

制御基板と液晶表示基板にはそれぞれ制御に使うベアチップ(パッケージ化されていない裸の半導体チップ)が樹脂モールドされています。

制御基板はほぼすべてがいわゆるディスクリート部品(1つの半導体素子で構成するチップなどの部品)で構成されているため、それぞれの接続をチェックして回路図を作成しないと詳細が分からない感じでした。
——回路図も起こしたんですか。
山崎:はい。下の図がそうです。

回路図を起こして分かったことは、制御基板側のコントローラーが制御しているのは音声の録音/再生だけで、モーターやセンサーの制御は液晶表示側のコントローラーが行っている、ということです。つまり、液晶表示側のコントローラーをマイコンに置き換えればよいわけです。
そこでATOM Matrixと結線し、プログラムを書いて基本動作を確認してみました。

——ATOM Matrixへはどう接続したのでしょうか?
山崎:回路図から、モーターとセンサーの動作などに関係する信号を、ATOMのピンコネクターに割り当てジャンパワイヤでつなぎました。モーターの動作に関係する「Motor_On」の信号はATOMのG22ピンに、「Motor_Stop」の信号はG19ピンに入力しています。2つのセンサーのうちトレイスイッチに関する「SW_IN」の信号はATOMのG33ピンに、フォトインタラプターに関する「PR_IN」の信号はG23ピンに入力しています。

プログラミングしてATOMからモーターを動かしてみました。オシロスコープで信号の波形を探りました。
——信号を調べたらどんなことが分かりましたか?
山崎:まずは、モーターを動かしたときのMotor_ONの信号とMotor両端の信号の波形を比べてみました。モーターの動作開始のタイミングでは動作中はほぼ同じ波形で問題ありませんでしたが、モーターが停止するタイミングではズレが生じることが分かりました。プログラム側で制御する必要があります。


次にセンサーの動きをチェックしました。センサー部分は、トレイスイッチとなるリーフスイッチとフォトインタラプターの2つがあります。波形を見ると、どちらもプルダウン抵抗(スイッチがOFFになったときに回路を安定させるための抵抗)を入れないと、スイッチの入出力信号としては不安定です。プログラム側でプルダウン設定する必要があります 。その他、波形に現れたノイズはありますが、それらはなんとかデジタル入力で吸収できることも分かりました。

プログラムを修正して、信号波形のチェックから分かったことを反映させます。動作させてみるとスムーズに元の動きをしてくれました。
——最終的にはどんなプログラムになりましたか?
山崎:ATOMが使えると分かったことで、前述した3つの改良方針にそってプログラミングしました。
1つ目は時刻設定です。自宅のWi-Fiネットワーク経由で自動取得しました。
2つ目は定時に動作するように設定しました。
3つ目は、動作したことをスマホに通知するための設定です。LINE Notifyを使いました。
プログラムはGitHubで公開しています。

——ATOM Matrixは本体にどう組み込みましたか?
山崎:回路図に沿ってATOM Matrixと接続するため、ピンヘッダ基板に各リード線をはんだ付けしました。液晶表示側のコントローラーから出ている各リード線とはピンソケットで中継しています。外装をはずす場合もあり得るからです。本体に穴を開け、内側からピンヘッダ基板をホットボンドで固定します。


ピンヘッドだけが外側に出るので、これにATOM Matrix本体を挿します。
さりげない感じでデザイン的に気になる感じもありません。軽量小型のマイコンボード、ATOM Matrixのいいところです。

動作を確認すると、うまくトレイが回転してくれました。
動作確認OK pic.twitter.com/UpVAifuWZz
— tomorrow56(Masawo Yamazaki)@飼猫師 (@tomorrow56) November 12, 2022
——実際に使ってみていかがですか??
山崎:改造後は安定して動作していて、家を空けていても確実に餌を食べられる状態になっていることが分かり、外出先で安心できています。LINEのグループ機能を使うと家族で情報が共有できるので、それも便利です。
給電はUSBなので、今後、乾電池の残量チェッカー機能付きですべてを乾電池式に変えるつもりです。カメラを付けて写真付きで通知がくるようにもしたいですね。重量測定して実際に食べた餌の量なども分かるとさらにいいかなと思っています。
山崎さんのカスタマイズに愛猫も大満足していることだろう。
