В данном цикле статей я буду рассказывать о моем опыте сборки «умной» автоматической системы для кормления домашнего питомца, в моем случае – кота.
Хочу сразу отметить, что на первом шаге речь пойдет только об "автоматической" кормушке, а "умной" она станет на следующих этапах (если повезет, и все пойдет по плану).
Итак, начнем с концепции и целей:
- Сделать систему, которая освободит меня от обязанности кормить кота сухим кормом (шаг 1)
- Оснастить систему датчиком веса под миской и осуществлять кормежку в соответствии с показаниями весов: если миска пустая – подсыпать, иначе – ждать пока миска не станет пустой (шаг 2)
- Добавить в систему вай-фай модуль и видеокамеру для передачи фотографий с любимым котом, а также обеспечить контроль кормежки удаленно. Кроме того, собирать данные о том сколько кот съел и строить аналитику (шаг 3)
На первом шаге не требуется большое количество датчиков и манипуляторов, достаточно одного серводвигателя (например, Micro Servo Towerpro SG90 9 г), поэтому все управление происходит с платы ArdruinoUno, которая идеально подходит для задач такого рода.
Системы кормления так или иначе содержат некоторый контейнер, в котором лежит сухой корм, и вращающийся механизм, дозирующий его количество. Изучив опыт других "изобретателей", я бы выделила три основных механизма:
- Используется контейнер и сама система из под диспенсера мюслей (наверняка видели в отелях). Внизу в горлышке контейнера установлен стержень с лопостями. Ось стержня лежит вдоль плоскости горлышка. К нему прикреплен мотор, который прокручивает лопасть на одно деление один раз в заданный промежуток времени
Такой механизм выглядит довольно аккуратно, его легко собрать (собственно и собирать почти ничего не надо), но, увы, очень уж дорогой. Но тут на вкус и цвет.
- Другой вариант — наоборот, конструкция делается своими руками из акрила, а вращающийся дозатор из CD дисков. Довольно понятно о том, как сделать такую кормушку рассказано в этом видео https://www.youtube.com/watch?v=C_ezRywtVg4&t=20s. Если есть под рукой акрил, резак для него, ну и в принципе есть какой-то опыт в сборке такого рода вещей, то это дов
ольно бюджетный вариант. Но не для таких как я — самостоятельно все спроектировать, вырезать и ровненько соединить требует другого уровня аккуратности.
- Для третьего варианта потребуется: обычная банка, которая будет играть роль контейнера, что-то, из чего можно вырезать небольшой сектор (подойдет, например, крышка какой-нибудь пластмассовой икеевской коробки), ну и пара магнитов для крепежа конструкции. Этот вариант мы и разберем подробней, он не требует инженерного образования и большого количества вложений, в общем, как раз то, что нужно.
Все материалы, которые мне были нужны для сборки кормушки на первом этапе:
- Стеклянная банка
- ArduinoUno
- MicroServo (у меня разрешенный угол поворота 180, но это не принципиально)
- кусок пластика
- магниты
- пины для соединении платы с серводигателем
- Usb зарядка на 5V
Логика работы механизма проста: в крышке банки делается дырка типа сектор (центр крышки не вырезается), такой же сектор вырезается из пластмассы. Внутрь крышки прикрепляется серводвигатель, например, скотчем. На ось двигателя насаживается сначала крышка, а с внешней стороны вырезанный сектор. Так, при повороте оси серводвигателя вырезанный сектор смещается относительно дырки в крышке банки.
Также надо не забыть сделать дырочку под вывод провода серводвигателя наружу для подключения к плате. На шаге 1 кормежка происходит по таймеру, кот у меня не обжора, поэтому открытие сектора происходит раз в день на короткое время, ниже код для Arduino:
#include <Servo.h>
#define servoPin 9
Servo myservo;
void setup() //процедура setup
{
myservo.attach(servoPin); //привязываем привод к порту 9
}
void loop()
{
myservo.write(0); //ставим вал под 0 градусов
delay(300); //ждем 0.3 секунды
myservo.write(160); //ставим вал под 160 градусов
delay(86400000); //ждем 24 часа
}
Для крепежа банки к стене я использовала вот такие магниты, каждый на 4кг (мне кажется лучше использовать более мощные). К банке магниты крепятся просто клеем, к стене — винтами.
Плата прикреплена к банке при помощи такой липучки, ее удобно снимать и крепить обратно. Липучка такая продается в любом хозяйственном, используется для крепежа картин.
Поскольку у меня единственным внешним модулем является серводвигатель, то дополнительного питания не надо, достаточно запитать плату, ее можно подключить напрямую к сети через usb зарядку на 5V.
Вот как все выглядит в собранном состоянии:
Ниже я набросала несколько идей дальнейшего развития кормушки, их много и пока непонятно, что именно будет делаться дальше, эта часть для обсуждения.
- установка датчиков движения, фотографирование кота в тот момент, когда он появляется в зоне видимости. Интеграция датчика веса и датчика движения позволяет определять, когда кот просто прогуливается мимо кормушки, а когда пришел покушать. Соответственно, можно прикрутить аналитику, когда котэ предпочитает кушать и как много.
- можно добавить датчик веса в сам контейнер с кормом, чтобы кормушка определяла момент, когда становится пустой и присылала предупреждение хозяину, что, мол, пусто, надо пополнить. Потом, как вариант, прикрутить возможность автозаказа корма с любимого сайта с доставкой.
- Можно добавить возможность кормушки работать на двух котов:
- Либо это будут две разные кормушки, каждая из которых умеет отпугивать “чужого” кота
- Либо это одна, но как-то модифицированная
- Надо подумать как реализовать поилку и синтегрировать ее с кормушкой, добавить систему фильтрации.
Надеюсь кому-то это будет полезно.
Комментарии (37)
doctorweb
08.08.2017 12:27Картинка из гугла не грузится — требует разрешение.
Вообще, дело хорошее, но я надеюсь, вы не будете пускать систему в автономное плавание. На мой взгляд, процессы автоматизации кормления и поения котов лучше создавать в виде уведомительной, а не полностью автоматической системы. Сам планирую сделать как минимум напоминатор обновления воды, ибо котам её нужно часто обновлять, но руки не доходили, так что с нетерпением подожду шага 2.MaryKul Автор
08.08.2017 12:58Спасибо про картинки — поправила, должно быть видно.
Система, в моем понимании, должна быть подключена к сети, так чтобы у хозяина всегда была возможность проверить состояние миски (через модуль видеокамеры) и пополнить, в случае необходимости.
i_am_mry
08.08.2017 14:18Я предлагаю скрестить электронику с дрессировкой.
Почему бы не сделать кнопку, нажимая на которую кот будет получать порцию корма? Думаю что во всем что касается еды, кот разберется быстро.
Плюс у вас будет реальная статистика когда, и сколько кот ел.doctorweb
08.08.2017 14:40+1Кот же лопнет!
i_am_mry
08.08.2017 14:42Ниже пишут что коты мало склонны к перееданию. Но ничто не мешает ограничить кол-во порций за определенный промежуток времени.
Singrana
08.08.2017 14:54Не согласен. По моим наблюдением коты весьма склонны к перееданию. Пока есть еда -> надо есть
SchrodingersCat
08.08.2017 16:37Наверно это все индивидуально. Мой кот не склонен к перееданию, насыпаю ему утром или вечером миску и можно быть уверенным, что на день хватит. Днем, пока никого нет дома, кот судя по всему, больше спит и мало ест, вечером и ночью же у него наступает период активности и тогда уже поедаются запасы и выпивается огромное количество воды ))
У коллеги же, наоборот, кот придерживается правила «Пока есть еда -> надо есть»
little-brother
09.08.2017 09:27Сугубо персонально. Давеча оставляли у меня кошку: просто поставил открытый пакет с кормом с безлимитным
интернетомдоступом, и она когда хотела подходила и ела. За две недели не особо много и убавилось.
А вот в детстве была кошка, которая скорее бы лопнула, чем оставила еду.
MaryKul Автор
08.08.2017 15:03+1Можно, конечно, но я боюсь, что коты сразу разберутся что к чему и надо будет ограничивать количество нажатий в день. А если ограничивать количество нажатий, то осознание «нажал кнопку — получи корм», может и не прийти.
В общем, в любом случае, в этом цикле статей дрессировка котов не подразумевается.
kvazimoda24
08.08.2017 14:13Эм… А что не так с котом? Я понимаю, подсыпать корм, чтобы он в миске не заветривался, но это решается перевёрнутой бутылкой/банкой с довольно широким горлом опущенной в миску. Ещё как-то согласен с сигналом об истощении запаса корма. Но зачем необходимо определять гуляет ли кот вокруг кормушки или пришёл поесть? Да для чего необходима информация о том, когда кот ел. Сколько же он съел можно определить по количеству оставшегося корма.
А вообще, на сколько я понял, коты мало склонны к перееданию. Исключением, вроде как, являются кастраты, да и то не все.
i_am_mry
08.08.2017 14:14Для воды — попробовать датчик из двух электродов опущенных в воду. Как только уровень снижается, и ток перестает проходить — доливаем воду.
Обновление воды — добавить два насосика небольших. Один — для наполнения (опционально — через фильтр), второй для слива старой воды. Насосы запускать по таймеру, за наполнением следить по датчику уровня.MaryKul Автор
08.08.2017 14:18да, надо будет попробовать, с датчиком все понятно, с насосами надо поискать, не смотрела, что уже есть для подобного рода проектов.
a-tk
08.08.2017 15:09delay(86400000); //ждем 24 часа
на самом деле около 24 секунд.
Надо бы написать 86400000L
peacemakerv
08.08.2017 15:09А кот-хакер не обожрется, если вдруг что-то из внешних проводов посрывает?
safari2012
08.08.2017 18:35+1delay(86400000)…
вы бы поискали, есть масса библиотек, которые запускают код красивее, по таймеру.
TimeAlarm или Simpletimer.
safari2012
08.08.2017 18:57+2Ещё рекомендую прикрутить модуль часов реального времени (DS3231). Иначе, после сброса питания (оключили свет и т.п.), у вас цикл рестартанет и котэ получит еду не в положенное время. При серии сбоев, возможно, не получит несколько дней подряд.
Цена вопроса 100р.MaryKul Автор
09.08.2017 09:29да, это можно, но в принципе после подключения вай-фай модуля эта проблема должна уйти
Makika
09.08.2017 09:29А можно еще весы прикрутить, что бы массу кота отслеживать?
MaryKul Автор
09.08.2017 09:34так то все можно) но надо решать задачи по порядку.
Про весы, которые в гуглодок отправляют свои значения тут https://geektimes.ru/post/258592/ хорошо рассказано
Andronas
09.08.2017 09:35+1У меня давным-давно была другая идея — автоматическая брызгалка водой чтобы кот не присаживался куда не надо (в углы, ну вы понимаете). Тут явно пригодится датчик кота и ардуинка, и в каждый угол по девайсу!
elmm
10.08.2017 11:30А я подумываю про радиоуправляемую брызгалку, чтоб он дверь не царапал и не гремел. У него такой способ шантажа — когда ему что-то надо, он идёт к входной двери и лупит по ней лапами что есть силы.
MaryKul Автор
10.08.2017 11:41как одна из идей на будущее — сделать простейший управляемый манипулятор на колесах с лазерной указкой, и прикрутить туда возможность удаленно им управлять, чтобы можно было иногда с работы поиграть с котом)
IronHead
11.08.2017 12:37Это все хорошо, но самая большая проблема — это не еда, а кошачий лоток.
Я свою кошку на сухом корме оставлял на 2 дня, но вот туалет засирается менее чем за сутки (а в грязный — она ходить не будет)SchrodingersCat
11.08.2017 13:02На этот случай есть автоматические туалеты, стоимость, правда, совсем не радует. Ну, а вообще, лично мое мнение — кошек лучше не оставлять одних больше чем на сутки. Лучше уж тогда отдать на время отъезда родственникам, друзьям, которые присмотрят, т.к. они хоть и самобытные животные, но все-таки им тоже нужен социум :)
Я проверял на своем коте — уезжал часов на 20, так он меня встретил с подозрением вроде «где это ты был столько времени» и потом еще ходил обиженным (играл с небольшим желанием и не мурлыкал, сколько его не гладь) ))doctorweb
11.08.2017 14:59Мой после каждого рабочего дня устраивает истерику, какие уж там 20 часов.
SchrodingersCat
11.08.2017 17:48Мой тоже. Просто мое отсутствие в течение рабочего дня или чуть дольше он считает нормой и будет, как и всегда, требовать почесать, побегать или просто пойти за ним ))
Если же его оставлять на бОльшее время, в моем случае, на 20 часов (максимум на сколько его оставлял одного), тогда, видимо, он уже начинает сильно скучать и в результате обижаться.
Опять же, не знаю, может это зависит и от степени разбалованности вниманием, но кто-то оставляет своих животных и на несколько дней одних… Но я так не могу, по мне так лучше отдать в надежные руки, зная, что с котом все будет в порядке, всегда будет сыт, лоток будет чист и кот не обделен вниманием :)
Dmitry_5
Во всех этих кормушках важна именно механическая часть. Иначе кот просто залезет сверху и все рассыпет, обожрется и сдохнет. С водой еще сложнее — затухнет.
MaryKul Автор
Да, она безусловно важна. Нужно, чтобы у кота не было доступа к корму — да, здесь его нет. С точки зрения воды из тех решений, что мне приходилось видеть, везде постоянная циркуляция воды, предполагаю через фильтр.
Dmitry_5
Есть специальные журчащие фонтанчики
ilyaplot
Неужели тут нужен микроконтроллер?

doctorweb
Не решает задачи обновления воды.
daspisch
Более того, не решает проблему с тем что вода за день там уже становится «не свежей» и появляется налёт, хотя курам да, и не такое спаивают
ilyaplot
А как же кулеры в офисах? Там тоже за день вода становится «не свежей»?
daspisch
Как только оттуда начнут лакать воду коты — да
reinvent
Вас кто-то обманул: кот сухого корма не переест. Наоборот, сухой корм всегда должен быть доступен.
Мои коты не дохнут (даже не жиреют), у знакомых тоже.
Но сама идея дозатора интересная.