Pull to refresh

Автоматическая кормушка для птиц

Reading time3 min
Views141K
Ещё в 2010 году Леонид Каганов (как известно — большой затейник) поделился с читателями своего блога идеей кормушки для птиц с веб-камерой и досыпанием зерна путем отправки платных SMS. Идея мне понравилась. И вот, прошло 4 года, наступили новогодние праздники 2014, я достал из стола завалявшиеся arduino uno, роутер tp-link 3020 и вместе с bitl (ака админом городского сайта) приступил к реализации проекта.


Под катом много фото.

Кормушка

Сердцем кормушки выступает роутер Tp-Link 3020 с прошивкой OpenWrt, к которому по ethernet подключена камера D-Link DCS-2310L и arduino по usb. Сам он выходит в интернет через wifi. Каждую минуту 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);

}
}
}


Механизм сделан из 50мм тройника для канализации и автомобильного соленоида. В тройник вклеена пробка от 5 литровой пэт бутылки (бутылка выступает в качестве бункера для корма). Задвижка также сделана из куска канализационной трубы.







К Arduino подключен самодельный двухрелейный шилд, к которому и подключен соленоид по стандартной схеме изменения полярности. Питается все от блока питания для почившего USB-SATA адаптера.



Сделан домик, с монтажной коробкой под электронику, поворотным креплением под бункер и откидывающимся дном:


Так добавлять корм гораздо удобней:


Изначально мы хотели установить кормушку в городском парке, но из-за проблем с электричеством и wifi было решено установить её дома. Собственно установка:










Сайт

Кормушка доступна по адресу http://www.labinsk.ru/index.php?p=feeder&stream=mjpeg

Пару слов о реализации на стороне сервера сайта.
От изначальной идеи насыпать корм SMS-ками решено было отказаться. Проект изначально не подразумевался как коммерческий. В самом деле, о какой выгоде может идти речь? Ну и, конечно, желающих отправлять SMS-сообщения ради того, чтобы посмотреть как насыпается корм — было бы не так много, и птички бы не оценили такой «заботы». Поэтому насыпать корм можно просто нажав кнопочку на страничке с видео-трансляцией. Чтобы пользователи не опустошили весь бункер за считанные часы — введён таймаут. На данный момент кнопка «Покормить» доступна только спустя 15 минут после предыдущей отсыпки корма.
Ну, а работает это всё тривиально. Пользователь жмёт кнопочку, php-скрипт добавляет в SQL-таблицу запись со статусом «не обработано», кормушка периодически опрашивает сервер, обращаясь к ещё одному php-скриптику, который и сообщает кормушке, о том, что появился запрос на отсыпку, после чего меняет в SQL-таблице статус соответствующей записи. Таким образом, не сайт посылает команду кормушке, а кормушка периодически спрашивает у сайта — не надо ли насыпать? Не самая оптимальная реализация, но зато простая. К тому же в данном случае нам не нужен статичный ip-адрес (или какой-то там DynDNS) для интернет-соединения кормушки.

Птички









P.S.
Кормушка работает уже 2 месяца, за это время птички съели около 10 литров корма (2 бункера). Корм — Семечки подсолнуха.

UPD Видео испытания механизма.

Tags:
Hubs:
+111
Comments77

Articles

Change theme settings