宅外からスマホで操作できる金魚の自動餌やり機の製作

うちでは2017年から飼ってる金魚(名前は”関羽”)がいまして、毎日癒やされています。留守中もエサをやれるようにテトラのオートフィーダー(テトラ (Tetra) オートフィーダー AF-3)を愛用しているのですが、餌が出る量が少ない時があったり、餌が出る時間が電池をセットした時間に依存するなど、ちょっと不便なところがあります。今回、M5StickCを接続できるようにオートフィーダーを拡張し、宅外からでも操作できる高性能な餌やり機を作りましたので、設計方法や制作方法をまとめます。

f:id:mnishikawa:20200216092725j:plain

うちの金魚

 

目次

 

 

こんなふうに動きます

まずは完成したオートフィーダーの動画です。

外部ネットワーク(LTE)に接続された私のiPhoneのブラウザから、餌やりメニューを選択したら、その操作にあわせて餌やり機が動作しているのがわかります。(うちの関羽さんも喜んでます。) 


宅外からスマホで操作できる金魚の自動餌やり機の製作

 

 

システム概要

システム構成図です。

f:id:mnishikawa:20200510064849j:plain

自動餌やり機システム構成図

主な仕様・ポイントは次の通りです。

  • クラウド上にある餌やり管理サーバー
    餌やり機操作画面を持ち、餌やり実行を指示されたらサーバー内の操作要求ファイルに「RUN」状態を書き込み。M5StickCが状態を見に来て実行できたら、「STOP」状態にする機能を持つ。
  • M5StickC
    サーバーに1秒に1回、餌やり操作要求情報を取得しにいきます。操作要求情報が「RUN」になれば、オートフィーダーに対して餌やり処理を実行します。
    オートフィーダーとは、GPIO26で接続されていて、GPIO26をHIGHにすれば電気的にオートフィーダーの餌やりボタンが押された処理を実行できます。
  • オートフィーダー(AF-3)
    もともと備えている餌やりボタンの端子と、M5StickCのGPIO26で接続されています。これにより、M5Stickからボタンを押されたときと同じ動作をしていることになります。

この仕様に従って、オートフィーダーの拡張、M5StickC・サーバーの実装を行います。

 

 

ベースとなるオートフィーダーの動作と拡張の方法

f:id:mnishikawa:20200509120203j:plain

オートフィーダー(AF-3)

今回用いたオートフィーダー(AF-3)は、次の機能を備えています。

  • 上部スライドスイッチで自動餌やり周期を設定できる。ただし、12時間に一回か24時間に1回かの選択式。
  • 上部にある「FOOD」ボタンを押したら、上記自動餌やり周期に関係なく餌やり機のモーターが1回だけ回る。

これらの基本動作は非常にシンプルで、安定動作するのでこれはそのまま残した状態にしました。拡張のポイントは、「FOOD」ボタンの電気動作を行う端子を外に出して、M5StickCのGPIOと接続することです。人がボタンを押すのと同じ動作をM5StickCに握らせることで、自由に動かせるようにします。

 

というわけで、オートフィーダー(AF-3)を分解してみました。

f:id:mnishikawa:20200509120624j:plain

オートフィーダー(AF-3)の分解

シンプルに3セットのネジで組み立てられています。

ハウジングにも余裕があり、とても簡単に、綺麗に分解が可能です。

分解をすると、「FOOD」スイッチの裏側にはタクトスイッチがあり、これを押すと手動餌やりが動いていることがわかります。さらに、このタクトスイッチは、基板に4つの電極が半田付けされていることがわかります。

f:id:mnishikawa:20200510071913j:plain

手動えさやりスイッチの端子

この端子から、基板に結線されているのは、左上と右下になります。左下と右下は固定用と思われますが、タクトスイッチの内部的には接続されているので、ここに外部引き出し用の線を半田付けすれば自由に操作ができます。

というわけで、この2端子にリード線を半田付けします。

f:id:mnishikawa:20200509162225j:plain

FOODスイッチ部への拡張配線

半田付けした線は、本体前面に穴を空けて引き出し、M5Stickとの接続を行います。

 

 

 

リレーを使った既存機器スイッチの拡張制御

自動餌やり機から制御できる線を引き出したら、次はM5StickC側の実装です。

こちらも非常にシンプルで、M5StickCのGPIO26でスイッチのON/OFFができるようにすればOKです。ただし、自動餌やり機の内部仕様が不明なので、スイッチ間に流れる電圧や、モーター動作時の最大電流などが読めないので、安全のためリレーを使うことにしました。GPIO26がHIGHになったらスイッチがショートされるように、次のような回路を組みます。

f:id:mnishikawa:20200509153540j:plain

M5StickCのGPIO26にリレーを接続

実験用に、自動餌やり機のスイッチに接続する場所にLEDを接続します。

意図通りに動いたら、小さなユニバーサル基板に、M5StickCのHAT端子に接続できるようなL型ピンヘッダとあわせて結線します。

接続したら、自動餌やり機の本体とネジで接続します。

f:id:mnishikawa:20200509173109j:plain

M5StickCと自動餌やり機の接続

自動餌やり機の本体には、基板接続用のネジ穴2つと、スイッチ配線引き出し用の穴、合計3つを予め空けておくと良いでしょう。

 

 

M5StickC、操作制御用クラウドサーバー側のソースコード

クラウドサーバーからの状態取得とここまで組み立てたリレー回路の制御のためのM5StickC用Arduinoスケッチと、クラウドサーバー側のサンプルプログラムをgithubに公開しました。

github.com

サーバー情報やWiFiのアクセスポイント設定は、みなさんの環境に合わせて書き換えた上でご使用管愛。とりあえず動かしたレベルのものなので、これからちょくちょく改良していきたいと思います。

 

 

まとめ

既存機器のもともとあるスイッチを拡張しただけなので、もとの装置の動作を損なわずに簡単に実装することができました。他の機器でも同じような手法でクラウド対応など機能拡張ができそうです。

初期実装では餌をやるシンプルな機能だけ実装しましたが、将来的には実行時間管理や認証処理なども入れたいなあと思います。

 

 

主なパーツ一覧

最後に、今回のシステム構築に使った主要なパーツを記載します。

 

・テトラ (Tetra) オートフィーダー AF-3

テトラ (Tetra) オートフィーダー AF-3

テトラ (Tetra) オートフィーダー AF-3

  • 発売日: 2010/11/29
  • メディア: その他
 

 

・M5StickC 

 

・3Vリレー(3V小型リレー 接点容量:2A 946H-1C-3D)

akizukidenshi.com

 

 ・ユニバーサル基板

 

 ・M5StickCとの接続用L型ピンヘッダ