ラズベリーパイ2でアクアポニックスに自動餌やり器をつけてみた
どーも、くがとしおです!
自宅のアクアポニックス環境にオートフィーダー(自動給餌機)を作成しました。
ブラウザのボタンを押すと、自動でエサが投入されるようにしました。
ラズベリーパイとWordpressとの通信は、MQTTプロトコルを使用します。
参考にさせていただいたサイト
プログラムは、ほぼ流用させていただいています。(><)
Raspberry Pi2で外部から水槽のLEDを点灯する
Raspberry Pi2で外部から水槽のLEDを点灯する その3
その前に・・・
知っておきたい知識を紹介しておきます。
MQTT
Messege Queueing Telemetry Transportの略で、TCP/IPネットワークで利用できる
軽量の通信プロトコルの1つです。
双方向、1対多の通信が可能でシンプル、軽量、省電力という特徴から
IoTやM2Mでの利用が期待されています。
使用するもの
今回の実験で使用したものはこちらです。
ハードウェア
準備
とりあえず、材料費は安く抑える方針で作りました。
プラ箱にモーターを直接接着したくなかったので、100均で固定するものを買いました。
・大きい洗濯バサミ 3個100円(ダイソー)
・サーボモータ SG90 1個400円くらい
・LG21 120円くらい(スーパー)
・固定するやつ 2個100円(ダイソー)
工作
LG21のフタにキリで穴を開けます。
サーボモーター本体、サーボモータの可動部と洗濯バサミをグルーガンで接着します。
Sangoの準備
ブラウザから制御できるようにSangoというMQTTブローカーを使用します。
Sangoへの登録
こちらからMQTTブローカーのSangoに登録します。
メッセージ数が制限されますが、無料プランが用意されています。
ラズベリーパイ側の準備
MQTTのSubscribe(受信)プログラムと、モーター制御プログラムを準備します。
Servoblasterの導入
サーボモータを制御するためのServoblasterの導入は、以下の記事を参考にしてください。
[nlink url=”http://g-action.gack2u.com/servoblaster/”]
Ruby MQTT gemのインストール
ラズベリーパイ2にgemをインストールします。
1 |
sudo gem install mqtt |
モーター制御プログラムの作成(auto_feeder.sh)
サーボモータを使ったエサやりをおこなうプログラムをシェルで作成します。
Servoblasterのサーボ番号5 (ピン番号16)を使用します。
ラズベリーパイとモーターの配線はこちらを参考にしてください。
1 2 3 4 5 6 |
#!/bin/sh echo 5=0% > /dev/servoblaster sleep 0.5 echo 5=50% > /dev/servoblaster sleep 0.5 echo 5=0% > /dev/servoblaster |
外部から実行時にパスワードを聞かれないようにしておきます。
1 2 |
sudo visudo ユーザー名 ALL=(ALL) NOPASSWD: /XXXXXXXX/auto_feeder.sh |
Subscribe(受信)プログラムの作成(auto_feed_subscribe.rb)
MQTTのSubScribe(受信)側のプログラムを作成します。
パスワードは、ダッシュボードの鍵アイコンをクリックすると表示されるものを記載します。
作成したモーター制御スクリプトを絶対パスで指定します。
rubyからシェルを実行するためには、バッククォートでスクリプトを括ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'rubygems' require 'mqtt' MQTTHOST = "lite.mqtt.shiguredo.jp" USERNAME = "KugaToshio@github" PASSWORD = "XXXXXXXX" # MQTTに接続するためのクライアントを作成します client = MQTT::Client.new( MQTTHOST, :username => USERNAME, :password => PASSWORD ) # 接続します client.connect do |c| # Subscribeします TOPIC = "KugaToshio@github/feed" c.get(TOPIC) do |topic, message| `sudo sh /XXXXXXXX/auto_feeder.sh` end end |
Subscribe(受信)プログラムの実行
作成したプログラムは、実行権限を付与して実行しておきます。
1 2 |
sudo chmod +x auto_feeder.rb sudo ruby ./auto_feeder.rb |
サーバー側の準備
MQTTのPublish(送信)プログラムをサーバーに準備します。
サーバーは、Xserverを使用しています。
phpMQTTライブラリの準備
phpからMQTTを使用可能なライブラリが用意されています。
https://github.com/bluerhinos/phpMQTT
Xserverにファイルマネージャにログインして、ダウンロードしたzipファイルをサーバーにアップロードしてください。
public_html以下のブラウザからアクセスできる位置に格納してください。
gitをインストール済みであれば、下記コマンドでインストールできます。
1 2 3 |
git clone https://github.com/bluerhinos/phpMQTT cd phpMQTT/ vi auto_feed_publish.php |
MQTT Subscribe(送信)プログラムの作成(auto_feed_publish.php)
MQTTのPublish(送信)側のプログラムをphpMQTTディレクトリ以下に作成します。
パスワードは、ダッシュボードの鍵アイコンをクリックすると表示されるものを記載します。
1 2 3 4 5 6 7 8 9 |
<?php require("./phpMQTT.php"); $mqtt = new phpMQTT("tcp://lite.mqtt.shiguredo.jp", 1883, "テキトーなクライアントID"); //Change client name to something unique if ($mqtt->connect(null,null,'ユーザー名', 'パスワード')) { $mqtt->publish("XXXXXX@github/led","Hello World! at ".date("r"),0); $mqtt->close(); } ?> |
実行権限を追加しておきます。
1 |
chmod +x auto_feed_publish.php |
ブラウザ側の準備
WordPress側に作成したpublish側のスクリプトを実行するボタンを配置します。
「エサやり」ボタンの作成
WordPressの記事内にボタンを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<button type="button" class="btn btn-primary" id="feed"><span class="fa fa-bell-o" aria-hidden="true"></span> エサやり</button> <div> <script type="text/javascript"> $(function(){ $('#feed').click( function(){ $.ajax({ type: 'post', data: { 'from': 'blog' }, url: '点灯用phpの場所', }); } ); }); </script> |
作成したボタンは、こんな感じになります。
押すと作成したPHPが実行されます。
デモ
iPadのブラウザ上のボタンを押すと、アクアポニックス水槽に設置した自動給餌器のモーターが動作します。
エサは見やすいようにマーブルチョコを入れています。
ラズベリーパイ2でアクアポニックスに自動餌やり器をつけてみた
Sangoのダッシュボードで確認すると、通信ができていることが分かります。
「くがとしお」的 まとめ
IoT化したアクアポニックス構築の第一歩として、自動エサやり器を作成しました。
今回はふりかけスタイルでエサを投入するマシーンにしてみました。
大きなペットボトルを使用すれば、犬や猫のエサやりも自動化できそうですね。(^^)
今回の実験で、MQTTを使用してヒトからモノへ制御する方法が分かりました。
今後は、カメラの首振りやLED点灯、音声出力等も作成していきたいと思います。
もうすぐ、アクアポニックスの作成に必要なパイプが到着するので
到着次第、作成していきたいと思います。
では!(^^)/