Автоматична годівниця для птахів

Ще в 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 бункера). Корм — Насіння соняшнику.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.