注目キーワード

【Arduino】M5Stamp で メダカの住む環境を快適に!第2弾 確実に食事を提供するぞ!

すけろく
メダカもだいぶ増えたの~。
げんろく
そうだな。
毎日の餌やりと、水替え、結構がんばっとるからな。
すけろく
水温は、第一弾で水温センサーを仕込んだから、
管理は楽になった。
げんろく
そうだな。
よし、今回は、餌やりを自動化してみるか!
皆さん、お家で何か動植物を飼っていますか?
我が家のメダカもよく育っています。
前回の第一弾で、水槽内の水温を計測・記録するものを作りました。
おかげで無事夏を越すことができました。
飼育が安定してくると、心配になってくることがあります。
それは、「餌やり」です。
特に1泊2日の旅行程度であれば、何とかなりますが、長期の旅行は難しいかもしれません。
メダカの餌は毎日2回(朝と夜)に少量を与えています。
この「餌やりを自動化」できないかというのが、今回の目的です。
今回作る「自動餌やり機」は、水槽の上に置くため、ケーブルがつながっていると使い勝手がよくありません。
そこで電源は、電池(単四電池4本)で、ロングライフ稼働させるように作ります。
極力設置面積も少なくしたいため、制御用のマイコンは、省電力の「M5Stamp Pico」を使います。
プログラミングはArduinoを使いますよ!
M5Stamp Pico」は。M5Stack社が販売している切手サイズの、組み込みプログラミングができる開発ボードです。
とても小さく、DeepSleep時の電力消費も少ないため、小さな製品への組み込みもしやすい商品です。
この記事ではArduino IDEを使ったプログラミング例を紹介します。
この記事の製作工程を動画にしましたので、ご覧ください!

この記事の前提となる「M5Stamp Pico」のはじめかたについては、次の記事で紹介しています。

関連記事

すけろく 切手サイズのコンピューター。 なかなかいい響きだの~。 げんろく 何だそれは? すけろく 「M5Stamp Pico」だ。 ESP32系のマイコンを搭載した切手サイ[…]

記事内でご紹介する「M5Stack」はこちら!

M5Stamp Pico

これからはじめる方にお勧めの参考図書はこちら!

created by Rinker
¥3,089 (2024/12/03 12:52:28時点 Amazon調べ-詳細)
created by Rinker
¥2,310 (2024/12/03 12:04:31時点 Amazon調べ-詳細)
created by Rinker
技術評論社
¥3,278 (2024/12/03 12:52:29時点 Amazon調べ-詳細)
created by Rinker
¥2,420 (2024/12/03 12:52:30時点 Amazon調べ-詳細)

餌やりを自動化するために必要なことは?

餌やりを自動化するために必要なことは何かと考えてみました。

主に以下の3点にまとめました。

  • 毎回同じ量の餌を与える
  • 朝と夜の同じ時間帯に与える
  • 利便性を考え、電池でロングライフ稼働させる
  • 軸を45度ずつ正確に回す

毎回同じ量の餌を与える

メダカの餌は、固形の粉末タイプを使います。
粉末を同じ量に分けて、散布するには、機械的な仕組みを考える必要があります。
すでに、有名な熱帯魚用品のメーカーからは、ふりかけのように容器を回転させて散布するものがありました。
しかし、この方法だと同じ量になるかは不明瞭です。
そこで、ポンプの動きを応用した構造で同じ分量に分けるものを考えました。
軸を回すと歯車(インペラ)が回るようにします。
この歯車(インペラ)の上に蓋を取りつけると・・・
蓋の穴から餌が適量入り、軸が回り歯車(インペラ)が回り、餌が分離される。
分離した餌は、反対側にある床の穴から落ちる。
という動きを使います。
周りを囲むパイプ型のパーツを組み合わせて、下から見るとこのようになります。
外部ケースのそこに穴をつけて、そこから餌を散布します。
このような仕組みで、定量を散布できます。
これで、機械的な仕組みは完成しました!
ちなみに今回の餌やり機を設置する水槽は、次のものを使っています。
上蓋つきの水槽で、上蓋の四隅に切り欠きや穴が開いているので、今回のように後で何かと追加設置する際も便利です。
キッチンカウンターにしっくりくるサイズの水槽ですよ!ポンプ付きでおススメです。

朝と夜の同じ時間帯に与える

次に、毎日同じ時間帯に餌をあげるようにすることです。

ここで、時間帯指定を、「時間+分」単位で指定することも考えましたが、分まで指定するとなると、時刻をタイムリーに分単位で監視する必要があります。

これでは、後で説明するDeep Sleep機能が数分単位で解除しなければならず、定刻に近づくと定刻まで待機する必要があります。

電力消費を抑えることができません。

そのため、今回は、指定した時刻(時のみ)であれば、餌をまくようにします。

メダカさんの餌は、正確な時刻に上げる必要はありませんので。。。

利便性を考え、ロングライフ稼働させる

餌は毎日、確実に上げる必要があります。

そのため、できる限り長い期間、稼働させる必要があります。

そこで、餌をまく時間までできる限り電力消費を抑えるため、Deep Sleepモードを使用します。

M5Stamp PicoのDeep Sleepモードの使い方は、次の記事で紹介しています。

関連記事

すけろく うーむ。 何とかならんか~ げんろく どうした? 電池を見つめて。 すけろく 電池を電源にしてM5Stampを使っているのだが、 一定間隔で動かしているのだが、電[…]

軸を45度ずつ正確に回す

機械的な仕組みとプログラムの方針は固まりました。

次は、実際に軸を回すために必要な動力を考えます。

今回、使うのは、ステッピングモーターです。

ステッピングモーターは、決まった角度まで正確に回すことができるモーターです。

次のステッピングモーターを使います。

M5Stamp Picoでのステッピングモーターの使い方は、次の記事で紹介しています。

関連記事

すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく[…]

このステッピングモーターを、餌をまく時間帯になったら、45度だけ動かします。

前述の歯車(インペラ)は、45度ずつ歯がありいますので、その歯に囲まれた部屋一つ分を回します。

こうすることで、一回分を正確に散布することができます。

また、初期起動時(電源がONした場合)には、餌が入っていないことを想定し、餌を歯車(インペラ)内に送り込むため、45度回転を4回行います。

これで、4回目には、1回分の餌が出てくる計算です。

水槽の上におけるデザインのケース作り

今回は、自動的に餌をやるために、水槽の上においても、ゴテゴテしない、ケースをデザインしました。

後述する、M5Stamp Pico やステッピングモータ、電池ボックスを収納しても、すっきりと見えるように曲線を意識したものにしています。

ケースのデザインをFusion360で作る!

ケースのデザインは、AutoDeskのFusion360を使用して作成しました。

M5Stamp Pico」とステッピングモーター、電池ボックスをつなぐ基板を含め、収納できるケースとして設計しています。

今回は、外観をシンプルにするため、ディスプレイや加飾は極力加えず、上面に電池ボックスのON/OFFスイッチが出る程度にしています。

今回は電池で動くため、非常にシンプルになりました。。

※ケースのデザインは次のようになりました。

回転軸上にステッピングモーターの回転軸がくるように、モーターマウントは、ケース本体の球面に合わせた作りにしています。

また、ケース本体の中心部を少しシェイプすることで、モーターマウントなどのブレを極力小さくしています。

これで、「M5Stamp Pico」をつかった自動給餌装置のデザインが決まりました。

3Dプリンター向けの印刷データを作る!

さて、作成したデザインをもとに、各パーツを作っていくのですが、こういうときに役立つのが、3Dプリンター「ORIGINAL PRUSA i3 MK3S+」です。

積層型の3Dプリンターで、造形精度が良く、当ブログでもいろいろなものを作っています。

自分で組み立てるキットもあるので、自作ユーザーや、導入コストを抑えたい人に最適です。

最近、Mk4が発売されましたが、Mk3も併売されており、まだまだ現役で活用できますよ~。

(しかも後からMk4にアップグレードするキットもあります。)

 

今回使用した3Dプリンター「ORIGINAL PRUSA i3 MK3S+」はこちらからどうぞ!

3Dプリンター(キット)

オープンソースの3Dプリンターの仕様を作った技術者が作った会社の3Dプリンターです。この商品は、自分で組み立てることが前提です。マニュアルも日本語化されていて、組み立てで特に手順に困るということはありませんでした。非常によくできた製品で、印刷品質も高いので非常に満足できます。
ちなみに「HARIBO」というお菓子もついている(笑)ので楽しみながら組み立てられます。

3Dプリンター(組み立て済み)

created by Rinker
Original Prusa i3
¥74,800 (2024/12/03 08:06:43時点 Amazon調べ-詳細)

オープンソースの3Dプリンターの仕様を作った技術者が作った会社の3Dプリンターです。この商品は、すでに完成済みで調整もされているものです。私は自作キットのほうを購入しましたが、非常によくできた製品で、印刷品質も高いので非常に満足できます。
買ってすぐに印刷が楽しめるのもいいですね!

今回使う3Dプリンター「ORIGINAL PRUSA i3 MK3S+」で印刷するためのデータに変換します。

データの変換には、「Plusa Slicer」を使いました。

これは、3Dプリンターの販売元が提供している専用のソフトウェアです。

ソフトウェアは無償で利用が可能です。

 

Fusion360で作成したデータを「エクスポート」機能で「3MF」形式のファイルに保存します。

保存した「3MF」データを「Plusa Slicer」で読み込んで印刷データへ変換します。

変換したイメージは次のようになりました。

これで、保護ケースを3Dプリントする準備が整いました。

次は、実際に印刷していきます。

3Dプリンターを使った造形

作成したデータをもとに3Dプリンター「ORIGINAL PRUSA i3 MK3S+」で印刷を行います。

今回は、印刷する素材(フィラメント)としては、「PETG」を使用しています。

理由としては、多少柔軟性があり、ケースとしての強度も十分に出せるためです。「PLA」では、硬すぎて、落とした際に割れてしまいそうなので。

 

今回使用したPETGのフィラメントは、次のものになります。

Plusa が販売しているもので、フィラメントの巻も綺麗に揃っており、印刷時にも問題がほぼない優秀なフィラメントです。

created by Rinker
Prusament
¥25,389 (2024/12/03 08:25:51時点 Amazon調べ-詳細)

3Dプリンターで印刷する

それでは、3Dプリンター「ORIGINAL PRUSA i3 MK3S+」を使って印刷します。

実際の印刷工程や、出来上がりの動作イメージは、動画を公開予定です。

印刷した結果は、次のようになりました。

 

いつもながら、かなりいい精度でプリントすることができました。

合わせ目、ネジでの固定も確実にできます。

さてこれで、保護ケースも完成しました。

自動餌やり機の回路を作る

M5Stamp Picoとステッピングモーター、電池ボックスをつなげる回路を作ります。

全体的な接続構成は、次の通りです。

各部の接続

それでは、M5Stamp Pico、ステッピングモーター、ドライバIC基板、電池ボックスを接続するための準備をしていきます。

ステッピングモーターとドライバIC基板の接続

今回使用するステッピングモーターは、モーターを動作させるためのドライバIC基板が付属しています。

そのため、接続に必要なケーブルやコネクタがついています。

ステッピングモーターのケーブルについているコネクタを、ドライバIC基板のコネクタに接続するだけです。

接続したイメージは次の通りです。

M5Stamp PicoとステッピングモーターのドライバIC基板の接続

M5Stamp PicoとドライバIC基板を接続します。

  • 信号入力
    IN1~IN4まで、M5Stamp PicoのGPIOと接続して信号を入力します。

    マイコン(M5Stamp Pico)側 ステッピングモータードライバ基板側
    GPIO26 IN1
    GPIO18 IN2
    GPIO19 IN3
    GPIO21 IN4

M5Stamp PicoとドライバIC基板、電池ボックスの接続

M5Stamp Pico、ステッピングモーター、ドライバIC基板を稼働させるために、電池ボックスを使います。

電池は単4電池(4本)で5Vにします。

  • 電力供給(5V)
    電池ボックスケーブルと、M5Stamp Pico、ドライバIC基板の接続は次のようにします。

    電池ボックス側 M5Stamp Pico側 ドライバIC基板側
    5V 5Vin 5V(+)
    GND GND(-) GND(-)

単純に電池ボックスの5V系とGND系をM5Stamp PicoとドライバIC基板へ入力する形となります。

そのための簡単な基板を次のように作りました。

ユニバーサル基盤を切断し、XHコネクタの受け側(メス)を取り付けます。

裏側は、コネクタの同じ側の端子をそれぞれ接続しただけの簡単なものです。

はんだ付けを行いました。

はんだ付けの手順や、必要となる道具のおススメについては、次の記事で紹介しています。
関連記事

電子工作という言葉を聞くとまず思い浮かぶのは、中学校の技術家庭の授業でやったはんだ付け。 最近の学校は実習とかやっているのかなとふと思います。 子供の頃は何となく作業していたので、今思うと「よく部品壊さなかったな・・・」と思いま[…]

コネクタは、入手が比較的容易なXHコネクタを使いました。

ケーブルとコネクタの種類や作成方法は、次の記事で紹介しています!

関連記事

電子工作ではんだ付けとともに欠かせないのが、「ケーブル作り」。 電子部品やコンピュータ、モーターなどの各部品はいろいろな形状のコネクタを持っています。そこで、ケーブルの端を接続するものの規格に合わせることが必要になります。 また[…]

電池ボックスから出るケーブルには、XHコネクタの差し込み側(オス)を取り付けています。

M5Stamp PicoとドライバIC基板への電力供給用ケーブルとして、M5Stamp Pico、ドライバIC基板側は、「QIコネクタ」、電源基板側は電池ボックスと同じ「XHコネクタ」の差し込み側(オス)のものを作りました。

配線結果

上記のものをすべて配線した結果、次のようになりました。

これで、「M5Stamp Pico」とステッピングモーターを接続することができました。

指定時間帯にステッピングモーターを回転させるプログラムを作る

それでは、Arduino でプログラムを作成していきましょう。

まずは、今回の目標から。

今回の目標

今回は、電池で動かすため、ロングライフ設計が必要です。

具体的には、Deep Sleepモードを使い、ステッピングモーターのドライバICへの信号も必要時以外はOFF(LOW)にします。

「M5Stamp Pico」は、SDカードなどの外部メディアスロットがないので、今回はプログラム中に餌をあげる時間を指定する形をとります。

主な機能は次の通りです。

<機能>

①Deep Sleep復帰時

  • WiFi接続し、NTPサービスと時刻同期する
  • 餌やりの指定時間帯かを調べる
  • 餌やり時間帯であれば、ステッピングモーターを45度回転させる
  • 上記の処理を行った後に、再び1時間のDeep Sleepに入る

②初回起動時(電源ON)

  • 餌を装置内に送り込むため45度回転を4回繰り返す
  • 1時間のDeep Sleepに入る

使用するライブラリ

次のライブラリをインストールします。

ライブラリ名 説明
Stepper
ステッピングモーター制御用ライブラリ

ライブラリのインストールは、次の記事で紹介しています。

関連記事

「Arduino IDE」では、使用する機能やセンサー、ボードを使用するプログラムで使用できる有効なライブラリが公開されています。 ライブラリを使用すると、効率的かつ品質を確保したプログラミングが可能です。 この記事では、Ar[…]

 Arduino IDE スケッチ例

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

<プログラム本体>

 

この記事の前提となる「M5Stamp Pico」のはじめかたについては、次の記事で紹介しています。

関連記事

すけろく 切手サイズのコンピューター。 なかなかいい響きだの~。 げんろく 何だそれは? すけろく 「M5Stamp Pico」だ。 ESP32系のマイコンを搭載した切手サイ[…]

Deep Sleep関連のプログラム方法は、次の記事で紹介しています。

関連記事

すけろく うーむ。 何とかならんか~ げんろく どうした? 電池を見つめて。 すけろく 電池を電源にしてM5Stampを使っているのだが、 一定間隔で動かしているのだが、電[…]

ステッピングモーター関連のプログラム方法は、次の記事で紹介しています。

関連記事

すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく[…]

M5Stamp Picoへの書き込み

  1. 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  2. 「ツール」メニューから「ボード」情報を確認し、M5Stamp Picoであるか確認します。
    「Partition Scheme」を「No OTA(Large APP)」に設定します。
    この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  3. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
  4. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

 プログラム実行結果

電池ボックスの電源をONすると、ステッピングモーターが45度×4回回転すればOKです。

 

DeepSleepからの復帰時の動作確認としては、プログラム中のDeepSleep時間を調整して試してくださいね。

最終的な組み立てと設置

これまで見てきた、M5Stamp Picoやステッピングモーター、Arudinoでのプログラミングを組み立てたものを、自作したケースに入れて組み立てました。

次のように、ケースの中に、餌を入れる歯車(インペラ)組み立て部品を入れて瞬間接着剤で固定しました。

このとき、インペラ上部のスリットが、ケース底面の穴とは逆側に対象になるように位置決めします。

接地後に、軸を回して、歯車(インペラ)部分が回転することを確認します。

ステッピングモータの軸と同じ方向に軸の穴が向くように調整し、餌を入れます。

ステッピングモーターをモーターマウントに取り付けたものを軸にセットします。

電池ボックスを上蓋にセットします。

ドライバIC基板、M5Stamp Pico、電源基板とケーブルをケース内に格納して、上蓋を載せます。

せっかくなので、「メダカ」のイメージをデザインした絵をケースにつけてみました。

うん。ありですね。

無塗装ですが、なかなかいい味を出しています。

ここで、餌の出具合を確認しました。

次のように、同量の餌が出てきていることが確認できました。

最後に水槽のに上に設置してみました。

なかなか、いい感じに仕上がったのではないでしょうか!

前回作った水温計とデザインの統一感が出てよいのではないでしょうか。

まだ、メダカの育成環境を快適にしていくアイデアを追加してアップデートしていけたらいいですね~

製作過程を動画にしていますので、ご覧ください。

編集後記

いかがだったでしょうか。

設置してみると、シンプルで感じのいい自動餌やり機が出来上がりました。

設置後、1週間以上見守りましたが、時間通り、きちんと餌が出ています。

これで、長期の旅行にも対応できそうです!

皆さんも、挑戦してみては、いかがでしょうか!

今回の記事は以上となります。

最後までご覧いただきありがとうございました。

今回使用したマイコンと部品はこちら!

created by Rinker
Original Prusa i3
¥74,800 (2024/12/03 08:06:43時点 Amazon調べ-詳細)
created by Rinker
Prusament
¥25,389 (2024/12/03 08:25:51時点 Amazon調べ-詳細)

M5Stamp Pico の他の記事はこちらからどうぞ!

すけろく メダカもだいぶ増えたの~。 げんろく そうだな。 毎日の餌やりと、水替え、結構がんばっとるからな。 すけろく 水温は、第一弾で水温センサーを仕込んだから、 管理は楽になった。 げんろく そうだな。 よし、今回は、餌やりを自動化してみるか! 皆さん、お家で何か動植物を飼っていますか? 我が家のメダカもよく育っています。 前回の第一弾で、水槽内の水温を計測・記録するものを作りました。 おかげ […]

すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく では、何か解決策はあるのかぇ? げんろく ステッピングモーターというものがある。 モーターの回転をステップとして制御できる。 今回はこのあたりを動かしてみるか。 この記事では、「M5Stamp Pico」を使って、「ステッピン […]

すけろく うーむ。 何とかならんか~ げんろく どうした? 電池を見つめて。 すけろく 電池を電源にしてM5Stampを使っているのだが、 一定間隔で動かしているのだが、電池の持ちが悪くてな。 げんろく うーむ。どれどれ。 Sleepさせていないのか?これだとずっとCPUが電力を消費するぞ。 よし、今回はDeepSleepの方法を使う方法を紹介しよう。 この記事では、「M5Stamp Pico」を […]

すけろく そういえば、LCDパネルがあるのだが、 使ってなかったな。 げんろく んー。 どれどれ、このコントローラICなら Arduinoで使えるな。 すけろく それなら、M5Stamp Picoで時計を表示したいな。 時刻同期は以前の記事でやっているし。 げんろく よし、やってみよう! この記事では、「M5Stamp Pico」を使って、「LCDモジュール」に時計を表示させてみます。 「M5St […]

すけろく んーどうしたものか。 げんろく どうした? 深刻な顔をして。 すけろく M5Stackにプログラムを書き込んだら 起動しなくなってな。 電源ON/OFFでも無理なのだ。 げんろく 書き込んだプログラムか、バッテリーの 過放電か。工場出荷時に戻してみてはどうだ? この記事では、M5Stackにプログラムを書き込んだ結果、うまく動作しなくなった場合の対処方法を記載します。 ご紹介するのは「工 […]

すけろく 最近、透明で先の見えるディスプレイが あるらしいな。 げんろく ああ、薄暗いサングラスくらいの透過率で 先が見えるものがある TOLED(Transparent OLED)と言うんだ。 すけろく M5Stampからでも表示制御できるのかな。 げんろく Arduinoでプログラムできるものがあるから、 M5Stamp Pico用に改造してみるか。 この記事では、M5Stamp Picoを使 […]

すけろく ちょっと!! e-Paper(電子ペーパー)ってディスプレイ制御は 独特なの? げんろく まあ、そりゃ違うわな。 ものが違うからの。 すけろく Raspberry Pi Pico向けのe-Paperを入手したが、 Arduino+M5Stamp Picoで使いたいのだ。 げんろく よし。 ではM5Stamp Picoで使ってみるか! この記事では、M5Stamp Picoを使って、e-P […]

すけろく M5Stamp Picoのことはじめに、 LEDを一つだけ光らせたが、やはりもっと派手にやりたいな。 げんろく 左様、わしも考えていたのだ。 LEDストラップを使って派手に光らせようではないか。 この記事では、M5Stamp PicoのGroveコネクタを使って、LEDが複数実装されたLEDストラップをいろいろな色やアニメーションで光らせてみます。 M5Stamp Picoはディスプレイ […]

すけろく WiFi接続は前回行ったが、次は時刻同期だな。 げんろく そうだな。IoTに正確な時刻は大切だ。 NTPサーバと時刻同期してみよう。 この記事では、M5Stamp PicoをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービスを使って時刻を同期する方法について紹介します。 M5Stamp Picoはディスプレイを持っていないため、主に処理時間やセンサーなどからデータを […]

すけろく 切手サイズのコンピュータに書き込むことはできな。 げんろく 次は、WiFi接続まわりを試してみよう。 基本はM5Stick Cと同じはずだ。 この記事では、M5Stamp Picoに実装されているWiFi機能を使って、Wi-Fiルータに接続する方法について紹介します。 この記事の前提となるM5Stamp Picoのはじめかたについては、次の記事で紹介しています。 Wi-Fi接続する際には […]