カットの下にたくさんの写真。
フィーダー
フィーダーの中心は、OpenWrtファームウェアを備えたTp-Link 3020ルーターであり、D-Link DCS-2310Lおよびarduino usbカメラがイーサネット経由で接続されます。 彼自身は無線LAN経由でインターネットにアクセスします。 cronは毎分、スクリプトを起動し、4秒ごとにフィードホッパーのバルブを開く必要があるかどうかと、その回数を決定します。
スクリプト
#!/bin/sh COUNT=10 if [ -f /tmp/lock.ceed ]; then LOCK=`cat /tmp/lock.ceed` if [ "$LOCK" -lt "1" ]; then echo '1' > /tmp/lock.ceed while [ "$COUNT" -gt "0" ]; do rm /tmp/status.php wget http://labinsk.ru/feeder/status.php -P /tmp/ -t 5 if [ -f /tmp/status.php ]; then CEED=`cat /tmp/status.php` if [ "$CEED" -gt "0" ]; then until [ $CEED -lt 1 ]; do echo 1 > /dev/ttyACM0 let CEED=$CEED-1 let COUNT=$COUNT-1 sleep 4 done fi fi let COUNT=$COUNT-1 sleep 4 done echo '0' > /tmp/lock.ceed fi else echo '0' > /tmp/lock.ceed fi
Arduinoはcomポートをリッスンし、ユニティ(0x31)を受信した場合、120ミリ秒間バルブを開きます。
スケッチArduino
int incomingByte = 0; int relay0 = 8; int relay1 = 12; void setup() { Serial.begin(9600); pinMode(8,OUTPUT); pinMode(12,OUTPUT); digitalWrite(relay0,LOW); digitalWrite(relay1,HIGH); delay (200); digitalWrite(relay0,HIGH); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); if(incomingByte==49){ digitalWrite(relay1,LOW); delay (120); digitalWrite(relay1,HIGH); digitalWrite(relay0,LOW); delay (200); digitalWrite(relay0,HIGH); } } }
このメカニズムは、下水用および自動車用ソレノイド用の50mmティーで作られています。 5リットルのペットボトルのコルクをティーに接着します(ボトルは飼料ホッパーとして機能します)。 バルブも下水道管で作られています。
即興の2リレーシールドがArduinoに接続され、標準の極性反転スキームに従ってソレノイドが接続されます。 死亡したUSB-SATAアダプタの電源からすべてが供給されます。
電子機器の取り付けボックス、ホッパーの下のスイベルマウント、リクライニングボトムを備えた家が建てられました。
そのため、フィードを追加する方がはるかに便利です。
当初は、都市公園にフィーダーを設置したかったのですが、電気と無線LANの問題のため、自宅に設置することが決定されました。 インストール自体:
サイト
フィーダーは、 http://www.labinsk.ru/index.php?p = feeder&stream = mjpegで入手できます。
サイトのサーバー側での実装に関するいくつかの言葉。
SMS-kamiでフィードを注ぐという最初のアイデアを拒否することにしました。 このプロジェクトはもともと商業目的ではありませんでした。 実際、利点は何ですか? そして、もちろん、食べ物がどのように注がれているのかを見るためにSMSメッセージを送信したい人はそれほど多くなく、鳥はそのような「懸念」に感謝しません。 したがって、ビデオブロードキャストのページ上のボタンをクリックするだけで、フィードを埋めることができます。 ユーザーが数時間でバンカー全体を空にするのを防ぐために、タイムアウトが導入されました。 現時点では、「フィード」ボタンは、前回のフィード充填の15分後にのみ使用できます。
まあ、それはすべて簡単に動作します。 ユーザーがボタンを押すと、phpスクリプトはステータス「未処理」のレコードをSQLテーブルに追加し、フィーダーは定期的にサーバーをポーリングし、別のphpスクリプトに切り替えます。 SQLテーブルでは、対応するレコードのステータス。 このように、フィーダーにコマンドを送信するのはサイトではありませんが、フィーダーは定期的にサイトに尋ねます。 最適な実装ではありませんが、シンプルです。 さらに、この場合、フィーダーのインターネット接続に静的IPアドレス(またはある種のDynDNS)は必要ありません。
鳥
PS
飼育者は2か月間働いており、その間、鳥は約10リットルの餌(2箱)を食べました。 食品-ひまわりの種。
UPDビデオテストメカニズム。