====== Автоматические кормушки для домашних животных ======
Кормить домашнее животное можно поручить автоматике. Тогда задерживаясь на работе ты не будешь беспокоиться, что питомец дома голоден. И утром животное не будет устраивать гонки по дому с пустой миской, в надежде что его услышат и покормят. У меня есть три варианта кормушки, отличающихся материалами, конструкцией и сложностью изготовления. Так что есть из чего выбрать.
Во всех кормушках в электронном блоке будут часы реального времени, а потому они смогут работать по расписанию, или просто выдерживать заданный интервал времени между кормлениями, а перебои с питанием не повлияют на график. Время кормления задаётся программно. Это не самый удобный способ, но он позволяет сделать схему простой и дешёвой. Хочешь добавить удобные органы управления смотри [[/slot-box:automatic-fish-feeder|как сделать автоматическую кормушку для рыбок]].
* Платформы: [[amp>product/arduino-nano?utm_source=proj&utm_campaign=autofeeder&utm_medium=wiki|Arduino Nano]], [[amp>product/iskra-nano-pro?utm_source=proj&utm_campaign=autofeeder&utm_medium=wiki|Iskra Nano Pro]]
* Язык программирования: Arduino (C++)
===== Обзор кормушек на Arduino =====
{{youtube>uTU612i30GA?large}}
====== Вариант №1: Кормушка из Pringles ======
===== Что потребуется =====
* [[amp>collection/autofeeder-pringles?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Полный сет]] электронных компонентов проекта. В сет входят:
* [[amp>product/iskra-nano-pro?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Iskra Nano Pro]]
* [[amp>product/troyka-rtc?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Часы реального времени (Troyka-модуль)]]
* [[amp>product/breadboard-half?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Breadboard Half]]
* [[amp>product/servo-fs5106b?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Сервопривод FS5106B]]
* [[amp>product/power-supply-adapter-robiton-tn1000s?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Импульсный блок питания (1000 мА)]]
* [[amp>product/battery-cr1225?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Батарейка CR1225]]
* [[amp>product/21mm-screw-slot?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Гнездо питания 2,1 мм с клеммником]]
* [[amp>product/jumper-wires?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Набор перемычек]]
* [[amp>product/pin-headers-long?utm_source=proj&utm_campaign=autofeeder-1&utm_medium=wiki|Штырьковые соединители длинные (1×40)]]
Отдельно придётся раздобыть:
* Банку от чипсов Pringles
* Консервную банку на 500мл
* Двойную миску подходящего размера
* Пару шурупов по металлу 20мм
* Пластиковую бутылку
===== Как собрать =====
==== Электроника ====
- Установите плату ''Iskra Nano Pro'' на макетную плату. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-1.png?nolink |}}
- Подключите с помощью ''перемычек'' линии питания ''5V'' ''GND'' к макетной плате и соедините линии питания макетной платы как на картинке. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-2.png?nolink |}}
- Установите на макетную плату ''модуль часов реального времени''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-3.png?nolink |}}
- Подключите перемычками питание модуля и линии передачи данных как на картинке. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-4.png?nolink |}}
- Вставьте в макетную плату ''длинные штырьковые соединители''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-5.png?nolink |}}
- Возьмите ''сервопривод'' и подключите его к штырьковому соединителю. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-6.png?nolink |}}
- Далее с помощью перемычек подсоедините контакты штырькового соединителя к питанию и контакту ''А0'' {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-7.png?nolink |}}
- Возьмите ''Гнездо питания'' и прикрутите к его клеммнику длинные перемычки. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-8.png?nolink |}}
- Провод от контакта ''-'' гнезда питания вставьте в синюю линию контактов макетной платы. А контакт ''+'' соедините с контакто ''VIN'' на ''Iskra Nano Pro''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_scheme-final.png?nolink |}}
==== Механика ====
- Первым делом проделаем отверстие в дне банки Pringles. И вырежем сектор. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-1.jpg?nolink&400 |}}
- В центре дна закрепим качалку сервопривода.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-2.jpg?nolink&400 |}}
- Возьмём консервную банку и сделаем на дне, такой же вырез как и в банке Pringles. Попутно сделаем отверстия для крепления сервопривода.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-3.jpg?nolink&400 |}}
- Прорежем отверстие для выхода корма. Вставим в отверстие под углом горлышко от бутылки. Прикрутим Сервопривод винтами M3.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-4.jpg?nolink&400 |}}
- Теперь поставим банки одна на другую. Наденем качалку на вал сервопривода, и закрутим винт крепления.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-5.jpg?nolink&400 |}}
- В двойной миске просверлим 5 отверстий.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-6.jpg?nolink&400 |}}
- В боковое отверстие вставим гнездо питания, а на остальные 4, углами обопрём макетную плату. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-7.jpg?nolink&400 |}}
- Накроем макетную плату конструкцией из банок. Не забываем подключить провод от сервы к макетной плате. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-10.jpg?nolink&400 |}}
- Саморезом прикрутим миску к банке.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-1_mechanics-8.jpg?nolink&400 |}}
Кормушка готова. Засыпать в неё можно сухой корм. Порция корма будет регулироваться длительностью открытия шлюза.
===== Скетч =====
Прошейте контроллер скетчем через [[articles:arduino-ide-install|Arduino IDE]].
#include
#include
#include
// Время первого кормления
#define FEED_HOUR_1 6
#define FEED_MINUTE_1 0
#define FEED_SECOND_1 0
// Время второго кормления
#define FEED_HOUR_2 10
#define FEED_MINUTE_2 0
#define FEED_SECOND_2 0
// Время третьего кормления
#define FEED_HOUR_3 15
#define FEED_MINUTE_3 0
#define FEED_SECOND_3 0
// Время четвертого кормления
#define FEED_HOUR_4 20
#define FEED_MINUTE_4 0
#define FEED_SECOND_4 0
// Время пятого кормления
#define FEED_HOUR_5 24
#define FEED_MINUTE_5 0
#define FEED_SECOND_5 0
#define SERVO_PIN A0
// Пин к которому подключается сервопривод
// Флаг "Уже покормили"
boolean flag = true;
RTC clock;
Servo servo;
void setup() {
// Инициализируем часы
clock.begin();
servo.attach(SERVO_PIN);
servo.write(180);
// Устанавливаем время
clock.set(__TIMESTAMP__);
}
void loop() {
clock.read();
//Проверяем не пришло ли время покормить животное
if (((clock.getHour() == FEED_HOUR_1) && (clock.getMinute() == FEED_MINUTE_1) && (clock.getSecond() == FEED_SECOND_1))
|| ((clock.getHour() == FEED_HOUR_2) && (clock.getMinute() == FEED_MINUTE_2) && (clock.getSecond() == FEED_SECOND_2))
|| ((clock.getHour() == FEED_HOUR_3) && (clock.getMinute() == FEED_MINUTE_3) && (clock.getSecond() == FEED_SECOND_3))
|| ((clock.getHour() == FEED_HOUR_4) && (clock.getMinute() == FEED_MINUTE_4) && (clock.getSecond() == FEED_SECOND_4))
|| ((clock.getHour() == FEED_HOUR_5) && (clock.getMinute() == FEED_MINUTE_5) && (clock.getSecond() == FEED_SECOND_5))) {
// Если время пришло устанавливаем флаг "Уже покормили"
flag == false;
// Открываем заслонку
servo.write(90);
// Время открытия заслонки
delay(500);
servo.write(180);
} else {
flag == true;
long timeMs = millis();
while (millis() - timeMs < 10) {}
servo.write(180);
}
}
====== Вариант №2: Кормушка из картона ======
===== Что потребуется =====
* [[amp>collection/autofeeder-cardboard?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Полный сет]] электронных компонентов проекта. В сет входят:
* [[amp>product/iskra-nano-pro?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Iskra Nano Pro]]
* [[amp>product/troyka-rtc?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Часы реального времени (Troyka-модуль)]]
* [[amp>product/breadboard-half?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Breadboard Half]]
* [[amp>product/servo-fs90?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Микросервопривод FS90]]
* [[amp>product/power-supply-adapter-robiton-tn1000s?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Импульсный блок питания (1000 мА)]]
* [[amp>product/battery-cr1225?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Батарейка CR1225]]
* [[amp>product/21mm-screw-slot?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Гнездо питания 2,1 мм с клеммником]]
* [[amp>product/jumper-wires?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Набор перемычек]]
* [[amp>product/pin-headers-long?utm_source=proj&utm_campaign=autofeeder-2&utm_medium=wiki|Штырьковые соединители длинные (1×40)]]
Отдельно придётся раздобыть:
* Картон размером 1×2м
* Стяжки строительные
===== Как собрать =====
==== Электроника ====
- Установите плату ''Iskra Nano Pro'' на макетную плату.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-1.png?nolink |}}
- Подключите с помощью ''перемычек'' линии питания ''5V'' ''GND'' к макетной плате и соедините линии питания макетной платы как на картинке.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-2.png?nolink |}}
- Установите на макетную плату ''модуль часов реального времени''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-3.png?nolink |}}
- Подключите перемычками питание модуля и линии передачи данных как на картинке. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-4.png?nolink |}}
- Вставьте в макетную плату ''длинные штырьковые соединители''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-5.png?nolink |}}
- Возьмите ''сервопривод'' и подключите его к штырьковому соединителю. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-6.png?nolink |}}
- Далее с помощью перемычек подсоедините контакты штырькового соединителя к питанию и контакту ''А0'' {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-7.png?nolink |}}
- Возьмите ''Гнездо питания'' и прикрутите к его клеммнику длинные перемычки. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-8.png?nolink |}}
- Провод от контакта ''-'' гнезда питания вставьте в синюю линию контактов макетной платы. А контакт ''+'' соедините с контакто ''VIN'' на ''Iskra Nano Pro''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_scheme-final.png?nolink |}}
==== Механика ====
Скачайте и распечатайте детали. Дальше по этим разверткам можно резать картон.
* {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_part1.pdf |Деталь1 }} × 1 шт
* {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_part2.pdf |Деталь2 }} × 1 шт
* {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_part3.pdf |Деталь3 }} × 1 шт
* {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_part4.pdf |Деталь4 }} × 1 шт
* {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_part5.pdf |Деталь5 }} × 2 шт
- Приклейте к картону и вырежьте детали.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-1.jpg?nolink&400 |}}
- Закрепите сервопривод с помощью стяжек как на фото.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-2.jpg?nolink&400 |}}
- Возьмите самую большую деталь и продавите обратной стороной ножа по линиям сгиба. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-3.jpg?nolink&400 |}}
- Согните деталь с клапаном и вставьте в неё откосы, теперь можно вставлять деталь с клапаном и откосами в основание.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-4.jpg?nolink&400 |}}
- Собрав конструкцию прошейте место соединения концов стяжками.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-5.jpg?nolink&400 |}}
- Собранную электронику приклейте двухсторонним скотчем к детали дна.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-6.jpg?nolink&400 |}}
- В основании прорежьте отверстие, и вставьте гнездо питания в отверстие.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-7.jpg?nolink&400 |}}
- Накрываем конструкцию дном и продеваем картонные замки. Не забываем подключить сервопривод и гнездо питания к макетной плате. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-8.jpg?nolink&400 |}}
- Результат.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-2_mechanics-9.jpg?nolink&400 |}}
Кормушка собрана. И готова к использованию. Откинув верхнюю крышку можно засыпать корм и включить питание.
===== Скетч =====
Прошейте контроллер скетчем через [[articles:arduino-ide-install|Arduino IDE]].
// Подключаем библиотеки для работы
#include
#include
#include
// Время первого кормления
#define FEED_HOUR_1 9
#define FEED_MINUTE_1 0
#define FEED_SECOND_1 0
// Время второго кормления
#define FEED_HOUR_2 12
#define FEED_MINUTE_2 0
#define FEED_SECOND_2 0
// Время третьего кормления
#define FEED_HOUR_3 19
#define FEED_MINUTE_3 0
#define FEED_SECOND_3 0
// Пин к которому подключается сервопривод
#define SERVO_PIN A0
// Флаг "Уже покормили"
boolean flag = true;
RTC clock;
Servo servo;
void setup() {
// Инициализируем часы
clock.begin();
servo.attach(SERVO_PIN);
servo.write(90);
// Устанавливаем время
clock.set(__TIMESTAMP__);
}
void loop() {
clock.read();
//Проверяем не пришло ли время покормить животное
if (((clock.getHour() == FEED_HOUR_1) && (clock.getMinute() == FEED_MINUTE_1) && (clock.getSecond() == FEED_SECOND_1))
|| ((clock.getHour() == FEED_HOUR_2) && (clock.getMinute() == FEED_MINUTE_2) && (clock.getSecond() == FEED_SECOND_2))
|| ((clock.getHour() == FEED_HOUR_3) && (clock.getMinute() == FEED_MINUTE_3)&& (clock.getSecond() == FEED_SECOND_3))) {
// Если время пришло устанавливаем флаг "Уже покормили"
flag == false;
// Открываем заслонку
servo.write(0);
// Время открытия заслонки
delay(500);
servo.write(90);
} else {
flag == true;
long timeMs = millis();
while (millis() - timeMs < 10) {}
servo.write(90);
}
}
====== Вариант №3: Кормушка из пластика ======
===== Что потребуется =====
* [[amp>collection/autofeeder-abs?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Полный сет]] электронных компонентов проекта. В сет входят:
* [[amp>product/iskra-nano-pro?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Iskra Nano Pro]]
* [[amp>product/troyka-rtc?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Часы реального времени (Troyka-модуль)]]
* [[amp>product/breadboard-half?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Breadboard Half]]
* [[amp>product/servo-fs5103r?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Привод постоянного вращения FS5103R]]
* [[amp>product/power-supply-adapter-robiton-tn1000s?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Импульсный блок питания (1000 мА)]]
* [[amp>product/battery-cr1225?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Батарейка CR1225]]
* [[amp>product/21mm-screw-slot?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Гнездо питания 2,1 мм с клеммником]]
* [[amp>product/jumper-wires?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Набор перемычек]]
* [[amp>product/pin-headers-long?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Штырьковые соединители длинные (1×40)]]
* [[amp>product/analog-line-sensor?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Датчик линии аналоговый]]
* [[amp>product/troyka-button?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Кнопка (Troyka-модуль)]]
* [[amp>product/troyka-pad-1x1?utm_source=proj&utm_campaign=autofeeder-3&utm_medium=wiki|Troyka Pad 1×1 (Troyka-модуль)]]
Отдельно придётся раздобыть:
* Пластик ABS или Оргстекло 1х2м
* Шпилька М3х1м
* Винты М3х20мм
* гайки М3
===== Как собрать =====
==== Электроника ====
- Установите плату ''Iskra Nano Pro'' на макетную плату.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-1.png?nolink |}}
- Подключите с помощью ''перемычек'' линии питания ''5V'' ''GND'' к макетной плате и соедините линии питания макетной платы как на картинке. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-2.png?nolink |}}
- Установите на макетную плату ''модуль часов реального времени''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-3.png?nolink |}}
- Подключите перемычками питание модуля и линии передачи данных как на картинке. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-4.png?nolink |}}
- Вставьте в макетную плату ''длинные штырьковые соединители''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-5.png?nolink |}}
- Возьмите ''сервопривод'' и подключите его к штырьковому соединителю. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-6.png?nolink |}}
- Далее с помощью перемычек подсоедините контакты штырькового соединителя к питанию и контакту ''А0''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-7.png?nolink |}}
- Возьмите ''Гнездо питания'' и прикрутите к его клеммнику длинные перемычки. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-8.png?nolink |}}
- Провод от контакта ''-'' гнезда питания вставьте в синюю линию контактов макетной платы. А контакт ''+'' соедините с контакто ''VIN'' на ''Iskra Nano Pro''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-9.png?nolink |}}
- Добавим ''Troyka Pad'' и подключим шлейф из комплекта к его контактам ''S'' ''V'' ''G''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-10.png?nolink |}}
- Подключим провода как на схеме. Сигнальный жёлтый провод соединим с контактом ''4'' ''Iskra Nano Pro''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-11.png?nolink |}}
- Установим в ''Troyka Pad'' ''Troyka кнопку''. Контакты кнопки, должны совпадать с контактами ''S'' ''V'' ''G'' на ''TroykaPad''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-12.png?nolink |}}
- Возьмём 4 ''Аналоговых датчика линии'' и подключим к ним провода из комплекта. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-13.png?nolink |}}
- Соединим первый датчик с макетной платой. Жёлтый провод датчика соединим с контактом ''A1'' на ''Iskra Nano Pro''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-14.png?nolink |}}
- Соединим второй датчик с макетной платой. Жёлтый провод датчика соединим с контактом ''A2'' на ''Iskra Nano Pro''. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-15.png?nolink |}}
- Соединим третий датчик с макетной платой. Жёлтый провод датчика соединим с контактом ''A3'' на ''Iskra Nano Pro''.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-16.png?nolink |}}
- Соединим четвёртый датчик с макетной платой. Жёлтый провод датчика соединим с контактом ''A6'' на ''Iskra Nano Pro''.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_scheme-final.png?nolink |}}
==== Механика ====
В архиве вы найдёте файлы в формате DWG и сможете открыть их любой CAD-программой. Или сразу заказать резку пластика.
{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder3.zip |Чертежи Кормушки №3}}
- К детали крышки прикрутите качалку сервопривода.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-1.jpg?nolink&400 |}}
- Стяните 2 пластины крепления мисок винтами М3.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-2.jpg?nolink&400 |}}
- Прикрутите сервопривод в центр конструкции. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-3.jpg?nolink&400 |}}
- Нарежьте шпильку М3 на 12 частей длинной 75мм и прикрутите к пластинам. Закрепите на шпильках аналоговые датчики линии как на фото.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-4.jpg?nolink&400 |}}
- Вставьте пластины перегородки.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-5.jpg?nolink&400 |}}
- Закрепите макетную плату с электроникой на основании. Соедините провода с датчиками линии, и сервоприводом.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-7.jpg?nolink&400 |}}
- Накройте конструкцию пластиной основанием и закрутите гайки. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-8.jpg?nolink&400 |}}
- Переверните кормушку и вставьте миски в посадочные места. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-9.jpg?nolink&400 |}}
- Приклейте на крышку кусочек белой бумаги или белую наклейку.{{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-11.jpg?nolink&400 |}}
- Соедините крышку с основание. {{ :slot-box:three-automatic-animal-feeder:three-automatic-animal-feeder_feeder-3_mechanics-10.jpg?nolink&400 |}}
Кормушка готова. Нажимая на кнопку можно принудительно повернуть механизм и открыть доступ к новой миске. Это необходимо при загрузке корма в миски, а так же при чистке кормушки без её разборки.
===== Скетч =====
Прошейте контроллер скетчем через [[articles:arduino-ide-install|Arduino IDE]].
// Подключаем библиотеки для работы
#include
#include
#include
// Время первого кормления
#define FEED_HOUR_1 9
#define FEED_MINUTE_1 0
#define FEED_SECOND_1 0
// Время второго кормления
#define FEED_HOUR_2 12
#define FEED_MINUTE_2 0
#define FEED_SECOND_2 0
// Время третьего кормления
#define FEED_HOUR_3 19
#define FEED_MINUTE_3 0
#define FEED_SECOND_3 0
// Пин к которому подключается кнопка принудительного поворота
#define BUTTON_PIN 4
// Пин к которому подключается сервопривод
#define SERVO_PIN A0
// Пины к которым подключены датчики линии
#define LINE_SENSOR_1 A1
#define LINE_SENSOR_2 A2
#define LINE_SENSOR_3 A3
#define LINE_SENSOR_4 A6
// Флаг "Уже покормили"
boolean flag = true;
RTC clock;
Servo servo;
void setup() {
// Инициализируем часы
clock.begin();
servo.attach(SERVO_PIN);
servo.write(90);
// Устанавливаем время
clock.set(__TIMESTAMP__);
}
void loop() {
clock.read();
//Проверяем не пришло ли время покормить животное
if (((clock.getHour() == FEED_HOUR_1) && (clock.getMinute() == FEED_MINUTE_1) && (clock.getSecond() == FEED_SECOND_1))
|| ((clock.getHour() == FEED_HOUR_2) && (clock.getMinute() == FEED_MINUTE_2) && (clock.getSecond() == FEED_SECOND_2))
|| ((clock.getHour() == FEED_HOUR_3) && (clock.getMinute() == FEED_MINUTE_3) && (clock.getSecond() == FEED_SECOND_3))
|| (flag && !digitalRead(BUTTON_PIN))) {
// Если время пришло устанавливаем флаг "Уже покормили"
flag == false;
// Включаем сервопривод
servo.write(88);
delay(50);
while ((analogRead(LINE_SENSOR_1) > 100) && (analogRead(LINE_SENSOR_2) > 100)
&& (analogRead(LINE_SENSOR_3) > 100) && (analogRead(LINE_SENSOR_4) > 100)) {
// Ожидаем пока не срадобает датчик поворота
}
// Как только сработал датчик что сектор над миской останавливаем вращение сервы
servo.write(90);
} else {
flag == true;
long timeMs = millis();
while (millis() - timeMs < 10) {}
servo.write(90);
}
}
===== Что дальше? =====
Подключать устройство к компьютеру, чтобы изменить график кормления крайне не удобно. Добавьте устройству [[amp>product/troyka-quad-switch?utm_source=proj&utm_campaign=autofeeder&utm_medium=wiki|четырёхкнопочную клавиатуру]] и [[amp>product/troyka-quad-display?utm_source=proj&utm_campaign=autofeeder&utm_medium=wiki|индикатор]] — как в проекте с [[/slot-box:automatic-fish-feeder|кормушкой для рыб]]. Или используйте [[amp>product/raspberry-pi-zero?utm_source=proj&utm_campaign=autofeeder&utm_medium=wiki|Raspberry Pi Zero]], чтобы отправлять фотографии довольного питомца прямо в [[https://instagram.com/mohnataja_popa|Инстаграм]].
===== Часто задаваемые вопросы =====
> Где скачать необходимые библиотеки и как их установить?
* [[https://github.com/amperka/TroykaRTC|Библиотека для работы с часами реального времени]]
* [[программирование:библиотеки|Как установить библиотеку]]