公開2022-08-19更新2022-08-20

[日経コンテスト受賞] 熱帯魚を自動で育成管理するシステムを開発した話

はじめに

私は趣味でアクアリウム(熱帯魚飼育)を楽しんでいます。アクアリウム専用の Instagram アカウントもやってます 😁

https://www.instagram.com/asakusa_ramen2/

熱帯魚を飼育する上での問題点として、平日は夜遅くの帰宅でお世話の手が回らなかったり、急な出張で 1 ~ 2 週間自宅を空けざるを得ないことが時々ありました。私は一人暮らしなので、お世話の手が回らないのは生き物を飼育する上で大きな問題です。
これら問題を解消すべく、熱帯魚飼育に必要な作業をスマホ1つで完結させ、外出先からも見守れるシステムを構築するに至りました。

本記事では、そのシステムの使用方法や技術的な実装方法について紹介したいと思います。

機能概要

本システムの主な機能です。

  • コンセント(AC100V)の ON/OFF を 6 口個別に制御
    (照明、エアレーション、ヒーター、冷却ファン等の AC 電気機器を制御する)
  • 水温、気温、湿度センサを搭載し、ヒータ/冷却ファンを自動制御し水温を一定化
  • カメラで水槽の写真・動画撮影、リアルタイムのライブ配信
  • 餌タンクに充填した餌を一定量水槽に落とす
  • 上記の操作をユーザが設定した時刻に自動実行
  • PC やスマートフォンから全ての操作設定が可能

動作デモ

youtube に本システムの紹介動画をアップロードしています。先にこちらを見ていただけると、以降の記事内容が理解しやすくなるかと思います。

https://www.youtube.com/watch?v=Eb013PdNMYA&t=154s

ものづくり系コンテスト受賞

日経 BP が毎年開催している、ものづくり系のコンテストみんなのラズパイコンテスト 2021に本システムを応募しました。結果として、技術レベルの高い作品に対して送られる技術賞を頂くことができました。

日経 BP の WEB 版記事にて本システムが取り上げられました。

https://project.nikkeibp.co.jp/pc/atcl/19/06/21/00003/110400290/?P=2

雑誌ではラズパイマガジン 2022 年春号に掲載されました。(48 ページ目)

https://info.nikkeibp.co.jp/media/RAS/atcl/mag/011400038/

システム構成

本システムの構成図を以下に示します。

水槽に対して各装置を以下の写真のように取り付けて使用します。

システムを構成する各装置について以降で説明します。

制御監視装置

装置の外観を以下に示します。

装置内部には小型 Linux コンピュータのRaspberrypiと、電子回路のインタフェース変換基盤が内蔵されています。

筐体は 3DCAD で設計し、3D プリンターにて PLA 樹脂で印刷しました。3D モデルの作成はFusion360という 3DCAD のソフトウェアを使用しています。

https://www.autodesk.co.jp/products/fusion-360/overview?term=1-YEAR&tab=subscription

3D プリンターは FlashForge 製の DreamerNX を使用しています。パーツごとに印刷し、ネジを使用して筐体を組み立てるのですが、PLA 樹脂によるねじ切りでは強度が不足するため、インサートナットを熱圧入してネジ穴の強度を高めています。

https://burariweb.info/gadget/3d-printer/3dprinted-parts-heat-insert.html

装置内部の写真を以下に示します。左側がRaspberrypi、中央がインタフェース変換基盤です。内部に DC 系と AC100V 系が混在しているので、ケーブリングや絶縁処理は丁寧に行っています。

Raspberrypi

Raspberrypi(以下ラズパイと呼称します) は、3000 円程度で購入できる手のひらサイズの Linux コンピュータです。

https://ja.wikipedia.org/wiki/Raspberry_Pi

システムの主な処理は、Python で作成したプログラムをラズパイ上で動作させています。プログラムでは主に次の処理をしています。

  • AC100V 電源の ON/OFF を制御する汎用 IO 操作
  • 水温、気温、湿度センサーを制御し、計測値の取得
  • 餌やりの機構を駆動するソレノイドを制御する汎用 IO 操作
  • USB カメラで写真および動画を撮影し WEB サーバのフォルダに保存
  • ユーザーが設定した時刻設定により上記操作の自動実行
  • WEB アプリケーションからの操作受付、応答送信
  • データベース制御 (ユーザーの設定パラメータやセンサ計測値を格納)

また、WEB アプリケーションを配信する WEB サーバーApacheをラズパイ上に構築しています。第三者にシステムを勝手に操作されては困るので、Digest 認証方式によるユーザー認証を機能を設定しています。

Digest 認証方式には脆弱性が発見されており、現在ではセキュリティレベルの高くない認証方式とされています(RFC 2617)。今回は個人開発ということで、ラズパイへのアクセスログを監視する運用回避としています。

インターフェース変換基盤

ラズパイの汎用 IO から直接、AC100V 電源、ソレノイド、各種センサーを駆動させることはできないため、電気的なインタフェースを変換する電子回路が必要となります。回路図および基板パターン設計はKiCADというソフトウェアを利用しました。

https://www.kicad.org/

設計した回路図及び基盤パターンを以下に示します。


基盤の製造は中国のseeed studioという業者さんに設計データを渡して依頼しました。価格は1枚あたり 0.5 ドルと破格の安さです。送料は 16 ドル程度です。日本の業者に発注すると最低でも 2~3 万くらいかかります。

https://www.fusionpcb.jp/

発注から約1ヶ月で中国から届きました。ピッチ幅が 25mill 程度 までの集積度であれば、この業者さんでも十分な品質が得られそうです。

遠隔インタフェース装置

装置の外観を以下に示します。
各種センサーや自動餌やりの機構を搭載しており、ラズパイから制御されます。


WEB アプリケーション

WEB アプリケーションは、Javascript のフレームワークにjqueryを、CCS フレームワークにBootstrapを利用して開発しました。グラフ表示にはPlotlyというライブラリを利用しています。また、レスポンシブデザインとして PC・モバイル表示の両方に対応しています。

WEB アプリケーションはラズパイで構築した Web サーバ(Apache)からダウンロードします。インターネット(WAN)から自宅の LAN 内のラズパイへのアクセスを可能とするため、MyDNSという無料の DDNS サービスからドメインを取得しています。取得したドメインの URL によって、世界中どこからでもインターネット環境さえあればアクセスできます。

ラズパイのサーバープログラムとの通信はwebsocketによるリアルタイムな双方向通信を実装しています。

最後に

現代の IT 技術を支えている、半導体や電子回路から、サーバー構築、バックエンド開発、WEB アプリケーション開発、ネットワーク、セキュリティなど、広い技術領域に渡って学習するきっかけとなり、個人的には良い経験になったと感じています。

最近のモダンな技術を用いれば、バックエンド処理の一部は AWS や GCP などのクラウドサービス、WEB アプリケーションは React や Next.js などに置き換えられそうです。
そのうち置き換えてリニューアルしたいと思っています。

現在モダンな技術を勉強実践しているところですが、置き換え前のちょっと古くて泥臭いようなやり方を経験しているからこそ、モダン技術の便利さを身にしみて感じています。

本システムの稼働を開始してから1年ほど立ちますが、今でも現役で活躍しています。
毎日決まった時間に照明の ON/OFF や餌やりをすることによって、魚や水草の体内時計が安定し、とても健康に育ってくれています。ちょっとした空き時間があれば、システムで毎日取り貯めされている動画をスマホから見て、成長具合や体調の悪そうな子がいないか確認しています。

たまにはシステムに頼らず、私自ら熱帯魚に餌をあげています。

コメント


※ このサイトはreCAPTCHAによって保護されています。Google社のプライバシーポリシー利用規約が適用されます。

※ 管理者が社会通念上不適切と判断した投稿は、事前通知なしに削除させていただきます。