Предисловие
Многие сталкивались с ситуацией, когда, уезжая на лето в заслуженный отпуск, приходилось оставлять домашнего питомца не весть с кем на злосчастные 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/
Добавить комментарий