Очумелые ручки: «Кормовой диспенсер»

от автора


Предисловие

Многие сталкивались с ситуацией, когда, уезжая на лето в заслуженный отпуск, приходилось оставлять домашнего питомца не весть с кем на злосчастные 14 дней, тем самым ограничивая себя и других обязательствами и заботами, срывая и так редкое время наслаждения морем и солнцем звонком в 2 часа ночи от друга детства: «Серега, извини, корм, который ты давал, закончился, а твой Мартин не ест „Китикет“, который я своему Мурзу даю», «Чрезвычайная ситуация: нужно уехать на 3 дня из города, придется оставить твоего Мартина с Бабой Галей» и так далее и тому подобное.

Будучи студентом университета информатики и радиоэлектроники, решил решить данную ситуацию самым логичным для себя способом — создать прибор, с помощью которого больше не придется перекладывать заботы об уходе за домашними питомцами на своих друзей и близких в свое отсутствие. Благо, работа над курсовым проектом со одноименной («Совпадение? Не думаю…») темой придавала стимула и мотивации творчеству. Как известно, в бытовой жизни среднестатистического студента редко найдется место лишним деньгам, особенно если дело касается особо дорогих гаджетов и предметов быта. Поэтому было решено обойтись лишь тем, что было в наличии дома, а также пожертвованиями друзей и родственников.

С чего начать

Так как работу решил проделать абсолютно с нуля, не прибегая к использованию готовых корпусов, решил продумать как вообще организовать управление и работу устройства, выбор (к сожалению, небольшой) пал на Arduino Uno R3, купленный как раз для выполнения того самого курсового проекта.

С устройством управления определились, дело за корпусом. Для корпуса было выбрано два довольно вместительных ведра — от мороженного и капусты, корпус микроконтроллера идеально поместился в корпус от шариковой мыши Genius Easy Mouse Pro PS2 2003 года выпуска.

Система дозировки будет состоять из привода и регулятора. Привод для подачи выполнен при помощи электродвигателя из автоматического освежителя воздуха AirWick. Как вариант можно использовать любой 3,5 вольтовый двигатель.

Регулятор в итоге было решено сделать из фоторезистора и светодиода синего цвета, позаимствованных из набора юного электрика одногруппника.

Организацию своеобразного «расписания» решено было сделать при помощи датчика движения, подобные устанавливаются в системах автоматического включения освещения в помещениях.

Изначально было решено сделать расписание выдачи с периодом в 8 часов, не используя никаких датчиков. Однако от идеи пришлось отказаться, из-за ненадежности системы.

Сборка прибора

Для начала проделаем нужные отверстия в ведре от капусты, читай нижняя часть корпуса.

Отверстия нам понадобятся для установки регулятора и резервуара под корм.

На дне ведра от мороженного (верхняя часть) нам понадобится отверстие для подачи сигнала светодиода на фоторезистор (смотреть выше), а также отверстие побольше для подачи корма. Сбоку ведра разместим отверстие для крепления регулятора. По центру дна разместим отверстия для вала и его крепления к кругу самого дозатора, про круг будет ниже. На крышке сверху закрепляем корпус от мыши с микроконтроллером, попутно проделывая отверстия для соединительных проводов.

Привод для подачи выполнен из электродвигателя на вал которого дозатор. Дозатор в свою очередь выполнен в виде пластикового круга с вырезанным отверстием. Собственно, через отверстие и подается корм в резервуар посредством вращения круга электродвигателем. Сам электродвигатель с подключенными проводами размещаем на дне верхней части.

Перейдем к регулятору. Для этого понадобится П-образный кронштейн для крепления фоторезистора точно над светодиодом. В данном случае использовался алюминиевая скоба для крепления гипсокартона, выбрана была из-за своей гибкости, а также удобных отверстий для крепления самих светодиода и резистора.

Перед сборкой отдельных элементов, подключением самих элементов убедимся подключить все провода и более мелкие элементы, принципиальная схема подключения:

На схеме:

PIR — пироэлектрический датчик движения:

M1 — электродвигатель, R2 — понижающий 10 кОм резистор, для чего он нужен смотреть здесь, R1 — резистор 220 Ом, VD1 — светодиод, PR1 — фоторезистор. A1 — аналоговый вход Arduino, D7, D4 и D13 — цифровые входы Arduino.

После подключения и сборки помещаем защитный экран на периферию, в нашем случае им выступила верхняя часть бутылки от газировки, для того чтобы корм не попадал на движимые части, рекомендуется использовать сухой корм чтобы предотвратить засорение отверстия дозатора.

Простейший скетч:

int pirMSPin = 7; int pirEMPin = 4; int pirDaPPin = 13; int portion; int delayflag; int sensorValue; void setup() {   pinMode(pirMSPin, INPUT);//motion sensor   pinMode(pirEMPin, OUTPUT);//electrical motor   pinMode(pirDaPPin, OUTPUT);//diode and photoresistor   digitalWrite(pirDaPPin, HIGH);//turn on diode and photoresistor   Serial.begin(9600);//set baud rate }  void checkPhoto() {    if(sensorValue>600)     potion++; } void turnOffEM() {   digitalWrite(pirEMPin, LOW); } void makeDelay() {   delay(600);   delayflag=1; } void turnOnEM() {   digitalWrite(pirEMPin, HIGH); }  void loop() {   portion=0;   delayflag=0;   //digitalWrite(pirEMPin, LOW);   int pirValMS = digitalRead(pirMSPin);   if (pirValMS == HIGH)   {     Serial.println("MOVEMENT");     do{       sensorValue = analogRead(A0);       Serial.println(sensorValue);       checkPhoto();       Serial.println(flag);       if(portion==1){         turnOnEM();         if(delayflag==0)           makeDelay();       }       if(portion==2)       turnOffEM();     }while(portion<2);     //delay for a portion extraction, AKA timetable for 3 portions a day     delay(28800000);   }   else   {     Serial.println("no movement");   }  } 

Комментарии к скетчу, а также работе устройства

Получив данные о зарегистрированном движении, поступает сигнал для начала процесса дозировки. Процесс дозировки начинается со считывания значения фоторезистора, если значение сигнала фоторезистора достаточно высоко, то это означает, что фоторезистор регистрирует сигнал со светодиода и механизм выдачи корма находится в закрытом положении. Затем запускается электродвигатель и начинается процесс дозировки. Процесс дозировки заканчивается при повторной регистрации высоко сигнала с фоторезистора, что является индикатором полного цикла дозировки.После окончания выдачи порции система переходит в режим ожидания, длительность которого можно выставить путем перепрограммирования микроконтроллера, для этого используется строка delay(28800000). Количество циклов дозировки (порций) можно также установить изменением переменной с говорящим названием portion, delayflag используется для корректировки положения дозатора.

Цена вопроса

Учитывая что контроллер Arduino доступен был априори, из комплектующих в конечном варианте пришлось заплатить лишь за сенсор, который стоит около трех условных единиц.

В итоге

За два вечера работы получаем доступную систему, при которой и любимый питомец не останется голодным, и кошелек не опустеет.

ссылка на оригинал статьи http://geektimes.ru/post/268232/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *