熱帯魚育成管理システム Sakanaview
はじめに
熱帯魚飼育に必要な作業をスマホ1つで完結させ、外出先からも見守り・操作ができるシステムを個人開発しました。
本システムの使用イメージや実装方法について紹介します。
機能概要
本システムの主な機能です。
- コンセント(AC100V)の ON/OFF を 6 口個別に制御する
(照明、エアレーション、ヒーター、冷却ファン等の AC 電気機器を制御する) - 水温、気温、湿度センサを搭載し、ヒータ/冷却ファンを自動制御し水温を一定化
- カメラで水槽の写真・動画撮影、リアルタイムのライブ配信
- 餌タンクに充填した餌を一定量水槽に落とす
- 上記の操作をユーザが設定した時刻に自動実行
- PC やスマートフォンから全ての操作設定が可能
動作デモ
youtube に本システムの紹介動画をアップロードしています。先にこちらを見ていただけると、以降の記事内容が理解しやすくなるかと思います。
ものづくり系コンテスト受賞
日経 BP が毎年開催している、ものづくり系のコンテストみんなのラズパイコンテスト 2021
に本システムを応募しました。結果として、技術レベルの高い作品に対して送られる技術賞を頂くことができました。
日経 BP の WEB 版記事にて本システムが取り上げられました。
雑誌ではラズパイマガジン 2022 年春号に掲載されました。(48 ページ目)
システム構成
本システムの構成図を以下に示します。
水槽に対して各装置を以下の写真のように取り付けて使用します。
システムを構成する各装置について以降で説明します。
制御監視装置
装置の外観を以下に示します。
装置内部には小型 Linux コンピュータのRaspberrypi
と、電子回路のインタフェース変換基盤
が内蔵されています。
筐体は 3DCAD で設計し、3D プリンターにて PLA 樹脂で印刷しました。3D モデルの作成はFusion360
という 3DCAD のソフトウェアを使用しています。
3D プリンターは FlashForge 製の DreamerNX を使用しています。パーツごとに印刷し、ネジを使用して筐体を組み立てるのですが、PLA 樹脂によるねじ切りでは強度が不足するため、インサートナットを熱圧入してネジ穴の強度を高めています。
装置内部の写真を以下に示します。左側がRaspberrypi
、中央がインタフェース変換基盤
です。内部に DC 系と AC100V 系が混在しているので、ケーブリングや絶縁処理は丁寧に行っています。
Raspberrypi
Raspberrypi(以下ラズパイと呼称します) は、3000 円程度で購入できる手のひらサイズの Linux コンピュータです。
システムの主な処理は、Python で作成したプログラムをラズパイ上で動作させています。プログラムでは主に次の処理をしています。
- AC100V 電源の ON/OFF を制御する汎用 IO 操作
- 水温、気温、湿度センサーを制御し、計測値の取得
- 餌やりの機構を駆動するソレノイドを制御する汎用 IO 操作
- USB カメラで写真および動画を撮影し WEB サーバのフォルダに保存
- ユーザーが設定した時刻設定により上記操作の自動実行
- WEB アプリケーションからの操作受付、応答送信
- データベース制御 (ユーザーの設定パラメータやセンサ計測値を格納)
また、WEB アプリケーションを配信する WEB サーバーApache
をラズパイ上に構築しています。第三者にシステムを勝手に操作されては困るので、Digest 認証方式
によるユーザー認証を機能を設定しています。
Digest 認証方式には脆弱性が発見されており、現在ではセキュリティレベルの高くない認証方式とされています(RFC 2617)。今回は個人開発ということで、ラズパイへのアクセスログを監視する運用回避としています。
インターフェース変換基盤
ラズパイの汎用 IO から直接、AC100V 電源、ソレノイド、各種センサーを駆動させることはできないため、電気的なインタフェースを変換する電子回路が必要となります。回路図および基板パターン設計はKiCAD
というソフトウェアを利用しました。
設計した回路図及び基盤パターンを以下に示します。
基盤の製造は中国のseeed studio
という業者さんに設計データを渡して依頼しました。価格は1枚あたり 0.5 ドルと破格の安さです。送料は 16 ドル程度です。日本の業者に発注すると最低でも 2~3 万くらいかかります。
発注から約1ヶ月で中国から届きました。この業者さんはピッチ幅が 25mill 程度 までなら十分な品質が得られそうです。
遠隔インタフェース装置
装置の外観を以下に示します。
各種センサーや自動餌やりの機構を搭載しており、ラズパイから制御されます。
WEB アプリケーション
WEB アプリケーションは、Javascript のフレームワークにjquery
を、CCS フレームワークにBootstrap
を利用して開発しました。グラフ表示にはPlotly
というライブラリを利用しています。また、レスポンシブデザインとして PC・モバイル表示の両方に対応しています。
WEB アプリケーションはラズパイで構築した Web サーバ(Apache)からダウンロードします。インターネット(WAN)から自宅の LAN 内のラズパイへのアクセスを可能とするため、MyDNS
という無料の DDNS サービスからドメインを取得しています。取得したドメインの URL によって、世界中どこからでもインターネット環境さえあればアクセスできます。
ラズパイのサーバープログラムとの通信はwebsocket
によるリアルタイムな双方向通信を実装しています。
運用状況
本システムの稼働を開始してから1年ほど立ちますが、今でも現役で活躍しています。
毎日決まった時間に照明の ON/OFF や餌やりをすることによって、魚や水草の体内時計が安定し、とても健康に育ってくれています。ちょっとした空き時間があれば、システムで毎日取り貯めされている動画をスマホから見て、成長具合や体調の悪そうな子がいないか確認しています。
たまにはシステムに頼らず、自ら餌を与えて熱帯魚とコミュニケーションとっています。