Arduinoでメダカの自動給餌器を作ってみた
自宅でメダカを数匹飼っています。旅行時に自動で餌を投入するための自動給餌器を作成してみました。
Q. メダカに毎日の餌やりは必要か?
A. 毎日1~2回の餌やりが必要です。ただし成魚であれば1週間くらい餌を食べなくても大丈夫です。
メダカ情報を調べるとこのように記載されている事が多いのですが、死にはしないけどストレス半端ない気が?
また市販の自動給餌器を探してみましたが、餌が大量にドバドバ出るタイプが多かったので、餌の食べ残しによる水質悪化で逆に全滅しそうな気がします。
木材の加工とマイクロサーボの取り付け

FEETECH FS90 マイクロサーボ(850円)
使っていない古いサーボモータが余っていたので、Arduino Unoに接続しサーボモータの回転を利用して少量の餌を入れた容器を水面に落とす形で作成します。

このサーボモータは180°までしか回転しないので、木材に45°毎に穴をあけて4回分給餌できるようにします。

適当な樹脂板をサーボモーターにネジ止めして隙間にスポンジを貼り付けました。

サーボモーターの裏側の処理

Arduino Unoへのサーボモーターの接続、メーカーによってケーブルの色が異なっているので要確認です。

餌入れは、ダイソーの小さい醤油差しの蓋が良いサイズ感でした。
サーボモーターを動かすArduinoスケッチ
「Servo.h」ライブラリだと、モーターの回転するスピードを設定できなかったので「VarSpeedServo.h」ライブラリを利用して速度を遅めに指定しています。
電源ONから27時間後に1個めの容器を落とし、24時間毎に残りの3個を落とすので、餌をあげてから電源ONすれば5日間の餌を給餌できる計算です。
//#include <Servo.h>
#include <VarSpeedServo.h>
VarSpeedServo servo;
int servo_pin = 6; //D6へ接続
unsigned long first_time = 0; //最初の1個目を落とす時間
unsigned long interval_time = 0; //2個目以降の実行間隔
void setup() {
//---Serialポートを開く
Serial.begin(115200);
//---シリアルモニタの準備を待つ
while (!Serial) {
;
}
//first_time = 75600000; //21時間後
//first_time = 86400000; //24時間後
first_time = 97200000; //27時間後
interval_time = 86400000; //24時間毎
Serial.print("first_time: ");
Serial.println(first_time);
Serial.print("interval_time: ");
Serial.println(interval_time);
servo.attach(servo_pin);
//---初期位置へ移動
servo.write(0);
delay(first_time);
//---1回目
servo.write(45 , 60);
delay(interval_time);
//---2回目
servo.write(90 , 60);
delay(interval_time);
//---3回目
servo.write(135 , 60);
delay(interval_time);
//---4回目
servo.write(180 , 60);
}
void loop() {
}
サーボモーターの動作テスト
メダカ餌やり器の動作テスト pic.twitter.com/UyFBFJWVQf
— コジンテキネット (@kojintekinet) June 16, 2025
実行時間(interval_time/first_time)を短めに指定してテストしています。良い感じに落とせています。
水槽にセットすれば完成

60cm水槽にセットするとこのような感じになります。Arduinoに水が掛からないような位置になっています。
まとめ
実際に3泊4日の旅行中に使ってみましたが問題なく動作しメダカも元気に生きておりました。少量の魚を飼っている人は市販の自動給餌器は微妙な設計なので自作をおすすめします!