База знаний

Как сделать автоматическую систему кормления для ваших питомцев?

Содержание:

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

Автоматическая кормушка для домашних животных

Как настроить устройство и автоматизировать его с помощью Arduino?

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

Шаг 1: Необходимые компоненты (аппаратное обеспечение)

Шаг 2: Необходимые компоненты (программное обеспечение)

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

  • Proteus 8 Professional (можно скачать с сайта Здесь)

Шаг 3: Принцип работы автономной системы откачки воды

Среди всех компонентов наиболее важными являются транзисторы BC 547. Всего 7 транзисторов, и они будут определять уровень воды. Светодиоды будут следить за уровнем воды в контейнере. По мере подъема воды датчики начинают контактировать с водой, активируются транзисторы, и в транзисторах возникает ток, заставляющий светодиоды загораться. Между транзистором и светодиодом включен токоограничивающий резистор, который не позволяет более высокому напряжению поступать на светодиод. Резиновая трубка будет подключена к верхнему резервуару и будет отвечать за наполнение контейнера при снижении уровня воды ниже определенного порога. Когда вода опускается ниже порога, включается водяной насос, и контейнер начинает наполняться. Таким образом, отпадает необходимость доливать воду в контейнер вручную, и домашние животные получают постоянный запас воды. Для вашего удобства я подробно расскажу о функциональности светодиодов. Светодиоды, установленные в схеме, имеют четыре типа цветов. Красный, желтый, зеленый и синий. Красный означает, что в контейнере нет воды и ни один из датчиков не контактирует с водой, поэтому контейнер необходимо наполнить. Желтый светодиод показывает 1/4 воды в контейнере. Зеленый светодиод указывает на то, что контейнер наполовину заполнен водой, а синий светодиод — на то, что контейнер заполнен водой.

Шаг 4: Моделирование схемы

  1. После загрузки и установки программы Proteus откройте ее. Откройте новую схему, нажав кнопку ISIS значок в меню.
    Новая схема
  2. Когда появится новая схема, нажмите на кнопку значок в боковом меню. Откроется окно, в котором вы можете выбрать все компоненты, которые будут использоваться.
  3. Теперь введите названия компонентов, которые будут использоваться для создания схемы. Компоненты появятся в списке справа.
    Выбор компонентов
  4. Таким же образом, как и выше, найдите все компоненты, как указано выше. Они появятся в окне Устройства Список.

Шаг 5: Создание макета печатной платы

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

  1. Чтобы сделать макет печатной платы в Proteus, нам сначала нужно назначить пакеты для каждого компонента на схеме. чтобы назначить пакеты, щелкните правой кнопкой мыши на компоненте, которому вы хотите назначить пакет, и выберите Инструмент «Упаковка.
    Назначить пакеты
  2. Нажмите на опцию ARIES в верхнем меню, чтобы открыть схему печатной платы.
    ARIES Design
  3. В списке компонентов разместите все компоненты на экране в таком виде, в каком вы хотите видеть вашу схему.
  4. Нажмите на режим дорожки и соедините все контакты, которые программа указывает вам соединить, указывая стрелкой.

Шаг 6: Принципиальная схема

После сборки компонентов и их подключения схема должна выглядеть следующим образом:

Принципиальная схема

Шаг 7: Принцип работы автономной системы подачи еды

Принцип работы системы подачи пищи очень прост, и самым важным компонентом в этой схеме является Модуль часов реального времени (DS3231) Благодаря этому мы можем установить дату и время, когда корм будет подаваться нашим питомцам. На ЖК-модуле отображается дата и время, а также серводвигатель будет вращать чаши, в которых будет находиться еда. Я включил 4×4 клавиатуру, чтобы вручную установить время кормления домашних животных. Я использовал серводвигатель, чтобы миска с кормом могла вращаться и опускаться в нижнюю миску, откуда питомцы смогут его съесть. Корм будет сбрасываться в нижнюю чашу через определенные промежутки времени, которые будут заданы вами в коде. Количество корма можно задать самостоятельно, учитывая привычки собаки, кошки, попугая и т.д.

Шаг 8: Моделирование схемы

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

  •   Компоненты появятся в окне Устройства Список.
    Используемые компоненты

Теперь, когда мы убедились, что схема работает нормально, мы продолжим и напишем код для Arduino.

Шаг 9: Принципиальная схема

Принципиальная схема Proteus должна выглядеть следующим образом:

Принципиальная схема

Шаг 10: Начало работы с Arduino

Если вы не знакомы с Arduino IDE, не волнуйтесь, потому что ниже вы можете увидеть четкие шаги по записи кода на плату микроконтроллера с помощью Arduino IDE. Вы можете скачать последнюю версию Arduino IDE с сайта здесь и выполните следующие действия:

  1. Когда плата Arduino подключена к компьютеру, откройте “Панель управления” и нажмите на “Оборудование и звук”;. Затем нажмите на “Устройства и принтеры”. Найдите название порта, к которому подключена ваша плата Arduino. В моем случае это “COM14” но на вашем компьютере она может быть другой.
    Поиск порта
  2. Теперь откройте Arduino IDE. В меню Tools установите для платы Arduino значение Arduino / Genuino UNO.
    Настройка платы
  3. В том же меню Tool установите номер порта, который вы видели на панели управления.
    Установка порта
  4. Загрузите код, прикрепленный ниже, и скопируйте его в вашу IDE. Чтобы загрузить код, нажмите на кнопку загрузки.
    Загрузите код

Вы можете загрузить код с сайта Здесь.

Шаг 11: Понимание кода

Код, используемый в этом проекте, очень прост и хорошо прокомментирован. Хотя эта процедура не требует пояснений, она кратко описана ниже, так что если вы используете другую плату Arduino, например nano, mega и т.д., вы можете изменить код должным образом, а затем записать его на свою плату.

  1. Сверху находятся различные библиотеки, чтобы клавиатура, ЖК-дисплей, RTC IC и сервомотор могли управляться микроконтроллером.
#include <DS3231.h>
#include <Сервопривод.h>
#include <LiquidCrystal.h>
#include <Клавиатура.h>

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

const byte ROWS = 4; // Четыре строки
const byte COLS = 4; // Три колонки
// Определяем карту клавиш
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 2, 3, 4, 5 }; // Подключаем клавиатуру ROW0, ROW1, ROW2 и ROW3 к этим контактам Arduino.
byte colPins[COLS] = { 6, 7, 8, 9 }; // Подключите клавиатуру COL0, COL1 и COL2 к этим контактам Arduino.
Клавиатура kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Создание клавиатуры

3. Затем инициализируются микросхема RTC, сервомотор и жидкокристаллический дисплей, а также объявляются некоторые переменные, которые будут использоваться для вычислений во время работы.

DS3231 rtc(A4, A5);
Servo servo_test; //инициализация объекта сервопривода для подключенного сервопривода
LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Создает объект LC. Параметры: (rs, enable, d4, d5, d6, d7)

//int angle = 0;
// int potentio = A0; // инициализация аналогового вывода A0 для потенциометра
int t1, t2, t3, t4, t5, t6;
boolean feed = true; // условие для подачи сигнала тревоги
char key;
int r[6];

4. void setup() функция, которая выполняется только один раз в коде при подаче питания на микроконтроллер или нажатии кнопки разрешения. В этой функции устанавливается скорость передачи данных в битах в секунду, с помощью которой микроконтроллер обменивается данными с устройством периферийные устройства. В этой функции также запускаются RTC и сервопривод, а пины инициализируются для использования в качестве входа или выхода.

void setup()
{
сервотест.attach(10); // подключаем сигнальный пин сервопривода к пину 9 arduino
rtc.begin();
lcd.begin(16,2);
сервотест.write(55);
Serial.begin(9600);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}

5. void loop() функция, которая выполняется снова и снова в цикле. Здесь, в этой функции, написан код для отслеживания времени и вывода его на ЖК-дисплей. затем подается команда на поворот сервопривода на заданный угол.

void loop()
{
lcd.setCursor(0,0);
int buttonPress;
buttonPress = digitalRead(A3);
if (buttonPress==1)
setFeedingTime();

//Серийный.println(buttonPress;)
lcd.print("Время: ");
String t = "";
t = rtc.getTimeStr();
t1 = t.charAt(0)-48;
t2 = t.charAt(1)-48;
t3 = t.charAt(3)-48;
t4 = t.charAt(4)-48;
t5 = t.charAt(6)-48;
t6 = t.charAt(7)-48;
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Дата: ");
lcd.print(rtc.getDateStr());

if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)
{
сервотест.write(100); //команда поворота сервопривода на указанный угол
delay(400);
сервотест.write(55);
feed=false;
}
}

6. void setFeedingTime() это функция, которая принимает входные данные с клавиатуры и сопоставляет их для установки времени подачи в микроконтроллере. Это время позже будет использовано для вращения мотора, чтобы накормить питомцев.

void setFeedingTime()
{
подача = true;
int i=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Установить время кормления");
lcd.clear();
lcd.print("HH:MM");
lcd.setCursor(0,1);

while(1){
ключ = kpd.getKey();
char j;
если(ключ!=NO_KEY){
lcd.setCursor(j,1);
lcd.print(key);
r[i] = key-48;
i++;
j++;
if (j==2)
{
lcd.print(":"); j++;
}
delay(500);
}
if (key == 'D')
{key=0; break; }
}
}

Шаг 12: Проектирование аппаратной части системы перекачки воды

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

LED’s

Возможно, нам понадобится сделать два канала, чтобы при контакте с водой они срабатывали как выключатель, ведь вода — хороший проводник электричества. Мы можем использовать трубу ПВХ и сделать в ней отверстия. Для начала измерьте высоту контейнера, а затем через равные промежутки отметьте на нем 4 точки. Проделайте отверстия в этих точках, а затем сделайте петлю из провода, по которому будет протекать ток. Закрепите петлю провода с помощью гаек и болтов в ПВХ трубе, а затем добавьте общий провод к корпусу. Отверстие для оголенного провода и болта должно быть минимальным, и в случае необходимости вы можете припаять немного провода к общему проводу рядом с гайкой и болтом, поскольку срабатывание будет происходить в тот момент, когда вода взаимодействует с обычным проводом и болтом, происходит передача тока от оголенного провода к болту, и, следовательно, срабатывание датчика завершено. Как только вода опускается ниже определенного уровня, включается двигатель НА и резервуар начнет наполняться. Когда резервуар начнет наполняться, контейнер также начнет наполняться благодаря водопроводной трубе, так как вода передается из резервуара в контейнер через трубу. Таким образом, больше не нужно вручную наполнять контейнер.

Шаг 13: Аппаратная конструкция автоматической системы подачи продуктов питания

Теперь мы соберем оборудование системы подачи еды. Мы можем установить временные интервалы по своему усмотрению с помощью кнопки Часы реального времени DS3231 Модуль и, следовательно, учитывая график питания наших питомцев, мы будем регулировать график. Когда таймер достигнет установленной даты и времени, серводвигатель придет в движение, и еда будет сброшена в миску, расположенную ниже. Соберите схему, как показано выше, на макетной плате. Возьмите деревянную палочку и прикрепите к ней серводвигатель. Закрепите его вертикально на стене и с помощью шурупов прикрепите миску с едой к палке. Чаша может представлять собой открытую с обоих концов полую трубу в форме бамбука, на дно которой будет положена круглая деревянная деталь. Сервомотор будет прикреплен к деревянной части, и как только мотор сдвинется под определенным углом, еда упадет в чашу, расположенную ниже.

Бамбуковая труба

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

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