Автономный дозатор корма и воды для собак с анализом потребления в течение времени поддерживает медицинский диагноз.
Принципиальная электрическая схема
Необходимые для сборки компоненты
- Тензодатчик 5 кг 2 шт.
- Усилитель тензодатчика SparkFun — HX711 2 шт.
- SG90 Микро-серводвигатель 2 шт.
- Мини водяной насос
- Heltec wifi-lora-32-v3
- Ползунковый переключатель
- Реле SRS-05VDC-SH
- Резистор 1 кОм
- Диод 1N4007
- Транзистор NPN S8050
На лето некоторые оставляют своих собак, потому что у них нет возможности или желания брать их куда-то на море. Поэтому чтобы помочь собакам и людям с этой проблемой, представляем интересный проект автономной кормушки для собак, чтобы кормить питомца в течение как минимум 7 дней, что является обычной продолжительностью отпуска для семей. Этот проект естественно подходит и для других домашних животных.
У собак есть определенное ежедневное количество пищи, которое им нужно съесть, в зависимости от возраста, уровня активности и состояния здоровья. Это количество пищи рекомендуется ветеринаром или написано на упаковке корма для собак. Собаки должны есть пищу несколько раз в течение дня. Каждый прием пищи должен подаваться в определенное время, в соответствии с возрастом собаки, уровнем ее активности или предпочтениями.
Вода тоже нужна собакам. У собаки всегда должен быть доступ к воде. И надо отслеживать тенденции пищевых привычек собаки и потребления воды.
Датчик веса
Датчик здесь нужен для измерения веса продуктов в чаше. Периодическое измерение необходимо для определения актуального количества пищи в миске с течением времени. Делая это, можем изучить пищевые привычки собаки, например, построить процент количества пищи, которую собака съедает за раз, чтобы повысить эффективность системы.
Датчик для измерения веса воды в чаше для количественного определения литров воды. Периодическое измерение требуется для измерения с течением времени. Делая это, можем изучить привычки питья собаки, построить процент количества воды, которое собака выпивает каждый раз.
Ползунковый переключатель служит для запуска или остановки работы автономной кормушки.
Сервоприводы
Серводвигатель нужен для открытия и закрытия контейнера с едой. Активация серводвигателя будет вызвана облачным сервисом только в том случае, если миска будет содержать необходимое количество еды.
Серводвигатель для встряхивания получателя еды. Активация серводвигателя будет вызвана облачным сервисом только в том случае, если миска будет содержать необходимое количество еды.
Водяной насос наполняет чашу водой. Активация водяного насоса будет вызвана датчиком только тогда, когда в чаше не будет необходимого количества воды.
Точность датчиков и периодичность
Тензодатчик для измерения веса корма в миске имеет номинал 5 кг, поскольку тензодатчик на 1 кг не подходит для крупных пород собак. Собаки крупных пород съедают около 600/700 г корма в день, разделенного на 2 приема пищи (количество корма написано на упаковке). Но в особых случаях, таких как беременность или кормление грудью, количество пищи может быть в 3 раза больше обычного. Так, если беременная собака съедает 2 кг корма в день, разделенного на 2 приема пищи, тензодатчик на 1 кг не подходит. Кроме того, следует учитывать и тару – вес чаши.
ESP32 подключается к тензодатчику через усилитель HX711 с разрешением 24 бита. Это означает, что тензодатчик может измерять вес пищи в миске с разрешением 5/2^24 = 0,0000003 кг = 0,0003 г. Выбранной единицей измерения являются граммы (г), и она устанавливается с использованием калибровочного коэффициента. Чтобы выбрать периодичность зондирования, необходимо учитывать тот факт, что нас интересует наблюдение за пищевыми привычками собаки, например, в какое время собака начинает есть.
Итак, чтобы реконструировать скорость еды собаки, можем считать что собака крупных пород заканчивает еду максимум за 5 минут. Принимая во внимание теорему выборки, нужно делать выборку как минимум каждые 2,5 минуты, но некоторые собаки едят быстрее чем другие, в частности, щенки могут закончить примерно за 1 минуту. Так, можем выбрать период выборки 30 секунд. Этот подход является хорошим началом, потому что мы не знаем пищевых привычек конкретной собаки, поэтому и хотим сначала провести избыточную выборку, а затем скорректировать период выборки в соответствии с пищевыми привычками собаки. Наконец, когда собака заканчивает еду, можем остановить зондирование до тех пор, пока не будет подан новый запланированный прием пищи.
Тензодатчик для измерения веса воды в чаше имеет номинал тоже 5 кг. Выбранная единица измерения – литры (л) и устанавливается с использованием калибровочного коэффициента, поскольку можно предположить, что 1 кг = 1 л. Чтобы выбрать периодичность измерения, необходимо учитывать что мы заинтересованы в наличии воды в чаше. Проследите за привычками собаки в потреблении воды, например, сколько воды собака выпивает в течение дня. Итак, чтобы в миске всегда была вода, можем считать, что собака непрерывно пьет в течение максимум 30 секунд, а после этого миска может быть пустой, поэтому нужно ее снова наполнить. Учитывая, что не требуется чтобы миска для воды снова наполнялась, пока собака пьет, можем выбрать период выборки 30 секунд.
Данные собираются с тензодатчиков через усилитель HX711, который подключен к ESP32. ESP32 выполняет некоторые локальные вычисления данных и отправляет их на мост MQTT по протоколу MQTT. Мост MQTT отправляет эти данные на конечную точку AWS. Эта точка AWS реализует некоторые правила для хранения данных в таблице DynamoDB. Наконец, данные визуализируются на веб-странице с помощью AWS API Gateway, который запускает функцию Lambda для запроса таблицы DynamoDB и возврата веб-страницы.
Программные компоненты
Дозатор еды: по заданному расписанию ESP32 будет трясти первый сервопривод, чтобы еда не застряла в дозаторе, затем активирует второй сервопривод, чтобы высыпать еду в миску. ESP32 будет контролировать вес пищи в миске с помощью тензодатчика и закроет второй сервопривод, когда вес пищи достигнет желаемого значения (еда в день/количество приемов пищи в день). Затем ESP32 остановит первый сервопривод.
Вычисление данных о еде: рассмотрим первый прием пищи, миска будет заполнена едой, поэтому когда выбираем вес, меньший, чем вес предыдущего образца, можем предположить что собака что-то съела, поэтому можно вычислить вес съеденной пищи путем вычитания веса предыдущего образца из веса текущего. Затем отправим эти данные в облачный сервис. Если миска пуста, то можем предположить что собака закончила свою еду, поэтому остановим зондирование до тех пор, пока не будет подан новый запланированный прием пищи.
Диспенсер для воды: надо чтобы чаша всегда была наполнена водой на определенном уровне. Таким образом, при первой активации ESP32 активирует водяной насос, чтобы наполнить чашу водой, и остановит водяной насос, когда вес воды достигнет желаемого значения (вместимость чаши для воды), используя тензодатчик для контроля веса воды в миске. Если вес чаши для воды достигает определенного уровня (объем чаши для воды/2), то ESP32 активирует водяной насос, чтобы наполнить чашу водой, и остановит насос когда вес воды достигнет желаемого значения, используя тензодатчик для контроля веса воды в чаше.
Вычисление данных о воде: когда выбираем вес меньший, чем вес предыдущего образца, можем предположить что собака что-то выпила, поэтому можно вычислить вес выпитой воды, вычитая вес предыдущего образца из веса текущего. Затем отправим эти данные в облачный сервис.
Запрос данных Lambda: функция Lambda будет запрашивать таблицу DynamoDB, выбирая выборки за заданный интервал времени.
Вычисление лямбда-данных: функция лямбда вычисляет сумму съеденной пищи и сумму выпитой воды за заданный интервал времени.
Визуализация лямбда-данных: форматирование данных для визуализации на веб-странице. Затем функция Lambda вернет веб-страницу с вычисленными данными.