熱帯魚の餌やり、俺はSuicaでやってるけどお前は?
これは Raspberry Pi Advent Calendar 2021 13日目の記事です。 adventar.org
あけましておめでとうございます。
あしゅりーです。
今年のGWあたりにIoTアクアリウムを始めました。
それに伴いラズパイを活用したのでその話を書きます。
ラズパイ歴
初心者です。
初めてであること、かつIoTアクアリウム実現に際して特段の制約も無かったため、他の用途でもいろいろ弄れるように現行の最新モデルであるRaspberry Pi 4 ModelBを購入しました。
Raspberry Pi 4 ModelB DoitsuNoTori mod. #あしゅりーアクアリウム pic.twitter.com/ugMAHtZCQm
— あしゅりー (@Asyley_) 2021年5月9日
あらゆるデバイスにドイツのトリシールを貼をらないでください。
IoTアクアリウム
俺のIoTユビキタススマートDXアクアリウム熱帯魚水槽を見てくれ
アクアリウム歴も浅いのでレイアウトも呆れるほど下手ですが気にしないでほしい[50日目] 前景草のグロッソスティグマが伸び始めてきたので一面草不可避 #あしゅりーアクアリウム pic.twitter.com/DpLLeftghx
— あしゅりー (@Asyley_) 2021年6月19日
このアクアリウムでは現時点でこんな感じのことができます。
あしゅりーアクアリウムで現時点でできること
— あしゅりー (@Asyley_) 2021年11月6日
(そろそろ入りきらなくなってきた)
☑ 水温管理の自動化(計測/警告/冷却)
☑ 自動給餌
☑ 照明の自動点灯/消灯
☑ CO2の自動添加(バルブ開閉)
☑ 水槽内の静止画/動画撮影、ライブ配信
#あしゅりーアクアリウム #IoT水槽 pic.twitter.com/vS6rownrNn
熱帯魚の餌やりにセキュリティを
小学校の頃、遊びに来た友達が家の金魚水槽に勝手に大量の餌をやってしまい大変なことになった経験が皆さんにも必ずあると思います。(ここではある事とします)
もうお分かりかと思いますがアルキメディアン・スクリューとSuicaを使ってセキュリティ施策を見直すことで解決できます。
アルキメディアン・スクリュー is 何
こんなん
Silberwolf (size changed by: Jahobr) - File:Archimedes-screw_one-screw-threads_with-ball_3D-view_animated.gif created by Silberwolf, CC-BY-SA-2.5, https://commons.wikimedia.org/w/index.php?curid=2489813
これを使って熱帯魚水槽の自動給餌機を作りました。
アルキメデスも冷めた目で見ているに違いありません。
まずは完成物
最終的にこんな感じのものができました。
信じられないほどサーボモータがやかましい[74日目] 全国1億2000万のアクアリストの永遠の課題
— あしゅりー (@Asyley_) 2021年7月13日
「来客者が勝手に餌をあげてしまう」
問題を解決するのはやはり、セキュリティです。NFCリーダを使い、事前に設定した特定のICカード(タグ)だけが自動給餌システムにアクセスできます #あしゅりーアクアリウム #IoT水槽 pic.twitter.com/WnVgex3Y9b
やったこと
無限回転サーボモータにスクリューを取り付けた給餌機を作成
アルキメディアン・スクリュー構造を100均クオリティで具現化、これをサーボモータにくっつけて回せるようにします。完璧だ… #あしゅりーアクアリウム #IoT水槽 pic.twitter.com/Bn3yvy5Atj
— あしゅりー (@Asyley_) 2021年6月6日
精度が必要になるものなので3Dプリントするべきだと思いますが、反省はしていません。
サーボモータは一般的な180°回転の物ではなく無限回転が可能なSG90-HVを使いました。
サーボモータをラズパイで制御して回転させる
import RPi.GPIO as GPIO import time PIN = 18 #BCM GPIO.setmode(GPIO.BCM) GPIO.setup(PIN, GPIO.OUT) servo = GPIO.PWM(PIN, 50) servo.start(0.0) # 5秒間サーボモータを回し続ける servo.ChangeDutyCycle(12.0) time.sleep(5) GPIO.cleanup(PIN)
通常のサーボとは異なり、無限回転サーボにおいて一方向に任意の時間回転させ続ける方法がとうとう最後まで分かることはありませんでしたが、これでなんとなく動いたのでテストの上、OKとしました。
餌の入った容器に貫通させる
上記の動画の通り、餌の入った容器に穴を開けてスクリューを貫通させます。 スクリューには入り口と出口の穴を開けておき、回転することで餌を押し出して出口に運びます。
最後に、これを台座に固定して水槽に取り付けて完成です。
NFCリーダでSuicaの読み取り
これをcronで定期実行すれば良いだけですが、Suicaで出来るようにします。
特に何のひねりもないですがNFCリーダとしてSONYのRC-S380を使い、こことかを参考にして特定のSuicaをタッチした時だけ上記のプログラムが実行されるようにしました。
もっとセキュアにするにはSuicaに特定の残高がチャージされているときだけ認証を通すとかにするとよりアホっぽくなるので良いと思います。
あしゅりーはやりません。
どうしてこんなことをやったのか
Q:どうしてアルキメディアン・スクリューなの?
A:かっこいいから
見ての通りSuicaタッチは後付けですが、自動給餌機そのものはいろいろな人が自作して試行錯誤しています。
その中でもメンテナンス無しで長期的な稼働が見込める方式としてこのやり方を採用しました。
とはいえ、世の中にはあしゅりーのような悩めるアクアリストのために自動給餌ソリューションがいろいろあります。
アルキメディアン・スクリューを利用した既製品でいえばエーハイムからこういう感じのやつが出ています。
おわりに
これでええやん(BAD END)
蛇足
書きかけですがIoTアクアリウムで作ったものをScrapboxにまとめています。
今後もいろいろ要らない機能を追加していく予定です。
scrapbox.io
Twitterでも #あしゅりーアクアリウム でツイートしています。
最近、フルリモートから週1,2日出社になり転職しようと思うので、アクアリウムにSuicaタッチで自動給餌する案件ありましたらオファーのほどよろしくお願いします。
あしゅりーのBitcoinアドレス
1jYnUXDDu8Ve1aJGhjqg3D65r1C7r58Xm