В данном цикле статей я буду рассказывать о моем опыте сборки «умной» автоматической системы для кормления домашнего питомца, в моем случае – кота.


Хочу сразу отметить, что на первом шаге речь пойдет только об "автоматической" кормушке, а "умной" она станет на следующих этапах (если повезет, и все пойдет по плану).


Итак, начнем с концепции и целей:


  1. Сделать систему, которая освободит меня от обязанности кормить кота сухим кормом (шаг 1)
  2. Оснастить систему датчиком веса под миской и осуществлять кормежку в соответствии с показаниями весов: если миска пустая – подсыпать, иначе – ждать пока миска не станет пустой (шаг 2)
  3. Добавить в систему вай-фай модуль и видеокамеру для передачи фотографий с любимым котом, а также обеспечить контроль кормежки удаленно. Кроме того, собирать данные о том сколько кот съел и строить аналитику (шаг 3)

На первом шаге не требуется большое количество датчиков и манипуляторов, достаточно одного серводвигателя (например, Micro Servo Towerpro SG90 9 г), поэтому все управление происходит с платы ArdruinoUno, которая идеально подходит для задач такого рода.


Системы кормления так или иначе содержат некоторый контейнер, в котором лежит сухой корм, и вращающийся механизм, дозирующий его количество. Изучив опыт других "изобретателей", я бы выделила три основных механизма:


  1. Используется контейнер и сама система из под диспенсера мюслей (наверняка видели в отелях). Внизу в горлышке контейнера установлен стержень с лопостями. Ось стержня лежит вдоль плоскости горлышка. К нему прикреплен мотор, который прокручивает лопасть на одно деление один раз в заданный промежуток времени

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

  2. Другой вариант — наоборот, конструкция делается своими руками из акрила, а вращающийся дозатор из CD дисков. Довольно понятно о том, как сделать такую кормушку рассказано в этом видео https://www.youtube.com/watch?v=C_ezRywtVg4&t=20s. Если есть под рукой акрил, резак для него, ну и в принципе есть какой-то опыт в сборке такого рода вещей, то это дов
    ольно бюджетный вариант. Но не для таких как я — самостоятельно все спроектировать, вырезать и ровненько соединить требует другого уровня аккуратности.

  3. Для третьего варианта потребуется: обычная банка, которая будет играть роль контейнера, что-то, из чего можно вырезать небольшой сектор (подойдет, например, крышка какой-нибудь пластмассовой икеевской коробки), ну и пара магнитов для крепежа конструкции. Этот вариант мы и разберем подробней, он не требует инженерного образования и большого количества вложений, в общем, как раз то, что нужно.

Все материалы, которые мне были нужны для сборки кормушки на первом этапе:


  • Стеклянная банка
  • ArduinoUno
  • MicroServo (у меня разрешенный угол поворота 180, но это не принципиально)
  • кусок пластика
  • магниты
  • пины для соединении платы с серводигателем
  • Usb зарядка на 5V

Логика работы механизма проста: в крышке банки делается дырка типа сектор (центр крышки не вырезается), такой же сектор вырезается из пластмассы. Внутрь крышки прикрепляется серводвигатель, например, скотчем. На ось двигателя насаживается сначала крышка, а с внешней стороны вырезанный сектор. Так, при повороте оси серводвигателя вырезанный сектор смещается относительно дырки в крышке банки.

image


Также надо не забыть сделать дырочку под вывод провода серводвигателя наружу для подключения к плате. На шаге 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кг (мне кажется лучше использовать более мощные). К банке магниты крепятся просто клеем, к стене — винтами.

image


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

image


Поскольку у меня единственным внешним модулем является серводвигатель, то дополнительного питания не надо, достаточно запитать плату, ее можно подключить напрямую к сети через usb зарядку на 5V.


Вот как все выглядит в собранном состоянии:

image


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


  • установка датчиков движения, фотографирование кота в тот момент, когда он появляется в зоне видимости. Интеграция датчика веса и датчика движения позволяет определять, когда кот просто прогуливается мимо кормушки, а когда пришел покушать. Соответственно, можно прикрутить аналитику, когда котэ предпочитает кушать и как много.
  • можно добавить датчик веса в сам контейнер с кормом, чтобы кормушка определяла момент, когда становится пустой и присылала предупреждение хозяину, что, мол, пусто, надо пополнить. Потом, как вариант, прикрутить возможность автозаказа корма с любимого сайта с доставкой.
  • Можно добавить возможность кормушки работать на двух котов:
    • Либо это будут две разные кормушки, каждая из которых умеет отпугивать “чужого” кота
    • Либо это одна, но как-то модифицированная
  • Надо подумать как реализовать поилку и синтегрировать ее с кормушкой, добавить систему фильтрации.

Надеюсь кому-то это будет полезно.

Комментарии (37)


  1. Dmitry_5
    08.08.2017 12:15
    +2

    Во всех этих кормушках важна именно механическая часть. Иначе кот просто залезет сверху и все рассыпет, обожрется и сдохнет. С водой еще сложнее — затухнет.


    1. MaryKul Автор
      08.08.2017 12:56

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


      1. Dmitry_5
        08.08.2017 14:08

        Есть специальные журчащие фонтанчики


      1. ilyaplot
        08.08.2017 14:55
        +2

        Неужели тут нужен микроконтроллер?
        image


        1. doctorweb
          08.08.2017 15:59

          Не решает задачи обновления воды.


        1. daspisch
          09.08.2017 00:08

          Более того, не решает проблему с тем что вода за день там уже становится «не свежей» и появляется налёт, хотя курам да, и не такое спаивают


          1. ilyaplot
            09.08.2017 16:33

            А как же кулеры в офисах? Там тоже за день вода становится «не свежей»?


            1. daspisch
              09.08.2017 16:52

              Как только оттуда начнут лакать воду коты — да


    1. reinvent
      09.08.2017 14:38

      Вас кто-то обманул: кот сухого корма не переест. Наоборот, сухой корм всегда должен быть доступен.
      Мои коты не дохнут (даже не жиреют), у знакомых тоже.
      Но сама идея дозатора интересная.


  1. doctorweb
    08.08.2017 12:27

    Картинка из гугла не грузится — требует разрешение.

    Вообще, дело хорошее, но я надеюсь, вы не будете пускать систему в автономное плавание. На мой взгляд, процессы автоматизации кормления и поения котов лучше создавать в виде уведомительной, а не полностью автоматической системы. Сам планирую сделать как минимум напоминатор обновления воды, ибо котам её нужно часто обновлять, но руки не доходили, так что с нетерпением подожду шага 2.


    1. MaryKul Автор
      08.08.2017 12:58

      Спасибо про картинки — поправила, должно быть видно.

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


      1. i_am_mry
        08.08.2017 14:18

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


        1. doctorweb
          08.08.2017 14:40
          +1

          Кот же лопнет!


          1. i_am_mry
            08.08.2017 14:42

            Ниже пишут что коты мало склонны к перееданию. Но ничто не мешает ограничить кол-во порций за определенный промежуток времени.


            1. Singrana
              08.08.2017 14:54

              Не согласен. По моим наблюдением коты весьма склонны к перееданию. Пока есть еда -> надо есть


              1. SchrodingersCat
                08.08.2017 16:37

                Наверно это все индивидуально. Мой кот не склонен к перееданию, насыпаю ему утром или вечером миску и можно быть уверенным, что на день хватит. Днем, пока никого нет дома, кот судя по всему, больше спит и мало ест, вечером и ночью же у него наступает период активности и тогда уже поедаются запасы и выпивается огромное количество воды ))
                У коллеги же, наоборот, кот придерживается правила «Пока есть еда -> надо есть»


              1. little-brother
                09.08.2017 09:27

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

                А вот в детстве была кошка, которая скорее бы лопнула, чем оставила еду.


        1. MaryKul Автор
          08.08.2017 15:03
          +1

          Можно, конечно, но я боюсь, что коты сразу разберутся что к чему и надо будет ограничивать количество нажатий в день. А если ограничивать количество нажатий, то осознание «нажал кнопку — получи корм», может и не прийти.

          В общем, в любом случае, в этом цикле статей дрессировка котов не подразумевается.

          image


  1. kvazimoda24
    08.08.2017 14:13

    Эм… А что не так с котом? Я понимаю, подсыпать корм, чтобы он в миске не заветривался, но это решается перевёрнутой бутылкой/банкой с довольно широким горлом опущенной в миску. Ещё как-то согласен с сигналом об истощении запаса корма. Но зачем необходимо определять гуляет ли кот вокруг кормушки или пришёл поесть? Да для чего необходима информация о том, когда кот ел. Сколько же он съел можно определить по количеству оставшегося корма.
    А вообще, на сколько я понял, коты мало склонны к перееданию. Исключением, вроде как, являются кастраты, да и то не все.


  1. i_am_mry
    08.08.2017 14:14

    Для воды — попробовать датчик из двух электродов опущенных в воду. Как только уровень снижается, и ток перестает проходить — доливаем воду.
    Обновление воды — добавить два насосика небольших. Один — для наполнения (опционально — через фильтр), второй для слива старой воды. Насосы запускать по таймеру, за наполнением следить по датчику уровня.


    1. MaryKul Автор
      08.08.2017 14:18

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


  1. a-tk
    08.08.2017 15:09

    delay(86400000); //ждем 24 часа
    на самом деле около 24 секунд.
    Надо бы написать 86400000L


  1. peacemakerv
    08.08.2017 15:09

    А кот-хакер не обожрется, если вдруг что-то из внешних проводов посрывает?


  1. safari2012
    08.08.2017 18:35
    +1

    delay(86400000)…
    вы бы поискали, есть масса библиотек, которые запускают код красивее, по таймеру.
    TimeAlarm или Simpletimer.


  1. safari2012
    08.08.2017 18:57
    +2

    Ещё рекомендую прикрутить модуль часов реального времени (DS3231). Иначе, после сброса питания (оключили свет и т.п.), у вас цикл рестартанет и котэ получит еду не в положенное время. При серии сбоев, возможно, не получит несколько дней подряд.
    Цена вопроса 100р.


    1. MaryKul Автор
      09.08.2017 09:29

      да, это можно, но в принципе после подключения вай-фай модуля эта проблема должна уйти


  1. Makika
    09.08.2017 09:29

    А можно еще весы прикрутить, что бы массу кота отслеживать?


    1. MaryKul Автор
      09.08.2017 09:34

      так то все можно) но надо решать задачи по порядку.
      Про весы, которые в гуглодок отправляют свои значения тут https://geektimes.ru/post/258592/ хорошо рассказано


  1. Andronas
    09.08.2017 09:35
    +1

    У меня давным-давно была другая идея — автоматическая брызгалка водой чтобы кот не присаживался куда не надо (в углы, ну вы понимаете). Тут явно пригодится датчик кота и ардуинка, и в каждый угол по девайсу!


    1. elmm
      10.08.2017 11:30

      А я подумываю про радиоуправляемую брызгалку, чтоб он дверь не царапал и не гремел. У него такой способ шантажа — когда ему что-то надо, он идёт к входной двери и лупит по ней лапами что есть силы.


      1. MaryKul Автор
        10.08.2017 11:41

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


        1. doctorweb
          10.08.2017 12:54

          Повесьте его на потолок — и не нужно будет никаких колёс.


          1. MaryKul Автор
            10.08.2017 18:35

            потолок жалко


  1. IronHead
    11.08.2017 12:37

    Это все хорошо, но самая большая проблема — это не еда, а кошачий лоток.
    Я свою кошку на сухом корме оставлял на 2 дня, но вот туалет засирается менее чем за сутки (а в грязный — она ходить не будет)


    1. SchrodingersCat
      11.08.2017 13:02

      На этот случай есть автоматические туалеты, стоимость, правда, совсем не радует. Ну, а вообще, лично мое мнение — кошек лучше не оставлять одних больше чем на сутки. Лучше уж тогда отдать на время отъезда родственникам, друзьям, которые присмотрят, т.к. они хоть и самобытные животные, но все-таки им тоже нужен социум :)
      Я проверял на своем коте — уезжал часов на 20, так он меня встретил с подозрением вроде «где это ты был столько времени» и потом еще ходил обиженным (играл с небольшим желанием и не мурлыкал, сколько его не гладь) ))


      1. doctorweb
        11.08.2017 14:59

        Мой после каждого рабочего дня устраивает истерику, какие уж там 20 часов.


        1. SchrodingersCat
          11.08.2017 17:48

          Мой тоже. Просто мое отсутствие в течение рабочего дня или чуть дольше он считает нормой и будет, как и всегда, требовать почесать, побегать или просто пойти за ним ))
          Если же его оставлять на бОльшее время, в моем случае, на 20 часов (максимум на сколько его оставлял одного), тогда, видимо, он уже начинает сильно скучать и в результате обижаться.

          Опять же, не знаю, может это зависит и от степени разбалованности вниманием, но кто-то оставляет своих животных и на несколько дней одних… Но я так не могу, по мне так лучше отдать в надежные руки, зная, что с котом все будет в порядке, всегда будет сыт, лоток будет чист и кот не обделен вниманием :)