Автокормушка для рыб своими руками ардуино

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

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

Описание работы:

Для начала работы подключите питание к Arduino. На дисплее Вы увидите время в верхнем ряду. В среднем ряду — 4 квадрата внутри которых в зависимости от вашей платы Arduino, появятся либо прочерки либо цифры. 4 квадрата — это возможность 4 раза задать время кормления рыбок. При наступлении этого времени, произойдет кормление рыбок. Нижний ряд — это количество поворотов сервопривода. Для настройки устройства, нажмите любую кнопку. Начнет мигать значение часов в верхнем ряду. Для регулирования параметра «Часы» нажимайте кнопки: синюю или зеленую. При нажатии синей кнопки значение часов будет уменьшаться, при нажатии зеленой кнопки значение часов будет увеличиваться. Для перехода к настройкам следующего параметра, необходимо подождать 3 секунды. По истечению трех секунд параметр «Часы» перестанет мигать, и начнет мигать параметры «Минуты». Для регулирования минут, нажимайте так же синюю либо зеленую кнопку для уменьшения, либо увеличения минут. И для перехода к следующему параметру так же необходимо подождать три секунды и так далее. Время кормления рыбок задается только часами, следовательно в квадратах для задания времени кормления рыбок, в каждом из квадратов задается диапазон от 0 до 23 и прочерк, если вы хотите отключить одну из позиции. Последний ряд регулируется в диапазоне от 1 до 10. То есть при повороте сервопривода, будет поворачиваться стакан на 180 градусов, создаст небольшую тряску, в виде быстрого поворота стакана на небольшие углы и вернется в исходное положение. Количество поворотов стакана на небольшие углы и регулирует нижний ряд на дисплее. Таким образом происходит регулирование порций для рыбок. При нажатии кнопок, горят светодиоды внутри кнопок. При наступлении времени кормления рыбок светодиоды в кнопках будут тоже индицировать. Попеременно мигать.

Нам понадобится:

  • Arduino Uno х 1шт.
  • Trema Set Shield х 1шт.
  • Trema OLED-дисплей 128×64 х 1шт.
  • Trema-модуль кнопка со светодиодом, синяя х 1шт.
  • Trema-модуль кнопка со светодиодом, зеленая х 1шт.
  • Trema-модуль часы реального времени, RTC х 1шт.
  • Штыревой соединитель х 1шт.
  • Сервопривод х 1шт.

Для реализации проекта нам необходимо установить следующие библиотеки:

  • iarduino_OLED — графическая библиотека для работы с Trema OLED дисплеями.
  • Библиотека iarduino_RTC для работы с Trema-модуль часами реального времени, RTC.
  • Библиотека Servo для работы с сервоприводами (библиотека входит в стандартный набор Arduino IDE).
  • Библиотека EEPROM — для работы с энергонезависимой памятью EEPROM (библиотека входит в стандартный набор Arduino IDE).

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Схема сборки:

  • Устанавливаем Trema Set Shield в Arduino Uno.
  • Устанавливаем Trema OLED-дисплей 128×64 в 3 посадочную площадку, в верхнюю I2C колодку.
  • Устанавливаем Trema-модуль часы реального времени, RTC в 5 посадочную площадку, в верхнюю I2C колодку.
  • Устанавливаем Trema-модуль синюю кнопку со светодиодом в 4 посадочную площадку.
  • Устанавливаем Trema-модуль зеленую кнопку со светодиодом в 6 посадочную площадку.
  • Устанавливаем Сервопривод в 1 посадочную площадку, воспользуясь Штыревым соединителем.
  • Полученный результат представлен на рисунке ниже.
  • На ось сервопривода закрепить стакан с дырками и закрыть стакан крышкой, как показано на рисунке ниже.
Читайте также:  Делаем таз своими руками

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

Код программы:

Особенности:

Для удобства в программе предусмотрены константы для регулирования угла отклонения сервопривода «deg» и задержки между тряской стакана «del». Регулируются в начале скетча. По умолчанию угол отклонения равен 30 градусов, а задержка 400 мс. Прежде чем полноценно использовать устройство поэкспериментируйте с этими значениями, чтобы настроить оптимальную подачу корма Вашим рыбкам.

Алгоритм работы:

В начале скетча (до кода seup) выполняются следующие действия:

  • Подключаем стандартную библиотеку EEPROM.h для работы с памятью EEPROM.
  • Подключаем библиотеку Servo, для работы с Сервоприводом.
  • Объявляем объект servo.
  • Подключаем библиотеку iarduino_RTC для работы с Trema-модуль часами реального времени, RTC.
  • Объявляем объект time для модуля на базе чипа DS3231.
  • Подключаем библиотеку iarduino_4LED для работы с Trema-модуль Четырехразрядным LED индикатором.
  • Объявляем объект dispLED, с указанием выводов дисплея.
  • Подключаем шрифты
  • Объявляем функции, переменный и константы задействованные в скетче.

В коде setup выполняются следующие действия:

  • Переводим выводы pinKeyGreen для зеленой кнопки и pinKeyRed для красной кнопки в режим выхода.
  • Переводим выводы pinKeyGreen для зеленой кнопки и pinKeyBlue для cbytq кнопки в режим входа, а выводы pinLedGreen и pinLedBlue для светодиодов кнопок в режим выхода.
  • Гасим все светодиоды.
  • Присоединяем сервопривод к выводу pinServo.
  • Инициируем OLED дисплей и запрещаем автоматический вывод данных.
  • Инициируем RTC модуль.
  • Выбираем событие 1. Устанавливаем сервопривод в 0 градусов. Считываем из памяти EEPROM значение времени кормления рыбок и количество тряски.

В коде loop выполняются следующие действия:

  • Через каждые пол секунды, после нажатие кнопки, выключаем светодиод.
  • Событие 1.
  • Каждые пол секунды мигаем двоеточием между часами и минутами.
  • Считываем время, выводим его на дисплей.
  • Сравниваем текущее время и время кормления рыбок. При совпадении запускаем сервопривод с помощью функции «Alert()».
  • Выводим на дисплей центральный ряд параметров времени кормления рыбок.
  • Выводим на дисплей нижний ряд параметра количества тряски стакана.
  • Ожидаем нажатие одной из кнопок. При нажатии разрешаем переход к событию 2 и включаем светодиод нажатой клавиши.
  • Событие 2.
  • Задержка для подавления дребезга кнопки и разрешаем переход к событию 3.
  • Событие 3.
  • Каждые пол секунды мигаем параметром «Часы». С помощью функции «ChangeTime()» изменяем значение параметра. Устанавливаем значение в датчик реального времени и разрешаем переход к следующему событию с помощью функции «Return()».
  • Событие 4.
  • Каждые пол секунды мигаем параметром «Минуты». С помощью функции «ChangeTime()» изменяем значение параметра. Устанавливаем значение в датчик реального времени и разрешаем переход к следующему событию с помощью функции «Return() «. Настройка секунд происходит в этом событии автоматически, как только перестают мигать минуты, то есть прошло 3 секунды, при переходе к следующему событию, секунды устанавливаются в ноль.
  • Событие 5. Выводим минуты на дисплей. и разрешаем переход к событию 6.
  • Событие 6 — 9. Каждые пол секунды мигаем рамкой параметра «Время кормления рыбок» в зависимости от события. В событии 6 настраиваем первый параметр, в событии 7 настраиваем второй параметр, в событии 8 настраиваем третий параметр, в событии 9 настраиваем 4 параметр. С помощью функции «ChangeTime()» изменяем значение параметров, а так же возможность установить прочерк, что соответствует отключению времени кормления рыбок. Разрешаем переход к следующему событию с помощью функции «Return() » и сохраняем значение в память EEPROM.
  • Событие 10.
  • Отрисовываем рамку последнего параметра центрального ряда и разрешаем переход к событию 11.
  • Событие 11.
  • Кадые пол секунды мигаем рамкой нижнего ряда. С помощью функции «ChangeTime()» изменяем значение параметра. Выводим на дисплей полученный результат. Разрешаем переход к следующему событию с помощью функции «Return()» и сохраняем значение в память EEPROM.
  • Функция «Return()» . В ней отслеживаем изменение параметров. Если изменялись параметры обнуляем счетчик. Если не изменялись, то ждем три секунды и разрешаем переход к следующему событию. Если события закончились, то разрешаем переход к событию 1.
  • Функция «ChangeTime()». В ней при разовом нажатии или удержании синей кнопки уменьшается параметр в зависимости от события. При разовом нажатии или удержании зеленой кнопки увеличивается параметр в зависимости от события.
  • Функции «Check() » проверяет параметр на выход из диапазона. Если выходит, то присваиваем противоположное значение.
  • Функции «ShowServo() «, «ShowAlarm() «, «ShowHour()», «ShowMinut()», «ShowTime()» выводят на дисплей параметры.
  • Функция «Alert() » поворачивает сервопривод на 180 градусов, затем крутит сервопривод на небольшой угол в зависимости от количества тряски и возвращает сервопривод в исходное положение.
Читайте также:  Как переделать интерьер комнаты своими руками

Источник

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

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

Шаг первый. Сборка корпуса:

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

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

Шаг второй. Доработка корпуса:

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

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

Шаг третий. Электронная часть кормушки:

Устанавливается шаговый двигатель, резистор 10 кОм и выключатель как показано на схеме ниже. Для облегчения понимания работы схемы и тестирования используется макетная плата, в итоговой сборке она отсутствует (пример на последнем фото).

Четыре провода двигателя подключаются к цифровым выводам 8-11. Одна ножка выключателя к выводу питания 5В. Вторая ножка, в свою очередь, подключается к земле с помощью резистора 10 кОм, и также подсоединяется к цифровому выводу 2.

Выключатель помещают спереди подвижной крышки, и сгибается металлическая часть, образовываясь тем самым стопор (красный и оранжевый провод на третьем фото). Когда выключатель будет перемещён вперёд и нажимает на стопор Arduino зарегистрирует значение HIGH и остановит двигатель.

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

Тест работы самоделки без контейнера для еды:

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

Источник

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

Как часто вы забывали покормить своих рыбок?

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

Читайте также:  Вагинальные свечи своими руками

После того, как я приобрел Sparkfun RedBoard, было принято решение создать автоматическое устройство для подачи корма в аквариум.

Ну, что ж, поехали.

Шаг 1: Список используемых компонентов

* Arduino UNO или совместимый микрокомпьютер.
* Адаптер питания напряжением 9В или 12В.
* Шаговый двигатель с напряжением питания 5В из старого дисковода гибких дисков.
* Перегородка от ящика с инструментами, нужна именно гладкая перегородка, которую я установлю сверху подвижной крышки.
* Рычажный выключатель от стационарного телефона для индикации правильности закрытия крышки.
* Корпус от жесткого диска в качестве контейнера для корма.
* Сломанная пластиковая линейка или любая гладкая пластина.
* Штатив CCTV-камеры.
* Один резистор номиналом 10 кОм.
* Механический AC Таймер.

Шаг 2: Сборка

Конструкция кормушки, которая сделана из старых материалов, показана на рисунке номер 1. Я вырезал отверстие с одной стороны корпуса от жесткого диска. Может для вас будет легче использовать бутылку от минеральной воды, однако для бутылки нужна опора, которая будет удерживать ее в перевернутом положении.

Я использовал вот такой штатив CCTV-камеры. Далее мне было нужно всего лишь просверлить отверстие в корпусе. Корпус имеет идеальную высоту, что позволяет установить под него шаговый двигатель (рисунок номер 2 и 3).

Далее для перемещения крышки я использовал шаговый двигатель напряжением 5В с червячной направляющей вместе с ее подвижным механизмом из дисковода гибких дисков (компонент, используемый для перемещения линз дисковода; рисунки номер 3 и 4). Я поместил небольшую гладкую пластиковую перегородку от ящика с инструментами сверху держателя линз, ниже отверстия корпуса, где предполагается выход гранул корма (рисунок номер 2). Вы также можете использовать поломанную линейку. Оставьте пол или один миллиметр от нижней части корпуса, иначе гранулы корма не смогут пройти через закрытую крышку.

Шаг 3: Доработка корпуса

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

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

Затем я понял, что гранулы не проходят, как было задумано. Вот почему мне была нужна поломанная линейка или любая гладкая пластина, которая подойдет в контейнер и образует «V»-образную форму. Теперь все гранулы корма будут проходить через отверстие.

Шаг 4: Электронные компоненты

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

Подключите четыре провода шагового двигателя к цифровым выводам 8, 9, 10, 11.

Далее одну ножку выключателя к выводу питания 5В.

Другую ножку подключите к земле через резистор 10 кОм и также не забудьте подсоединить к цифровому выводу 2.

Поместите выключатель спереди подвижной крышки, и согните металлическую часть, сделав стопор (оранжевый и красный кабели на третьем рисунке). Когда выключатель перемещается вперед и нажимает на стопор, микроконтроллер arduino регистрирует значение HIGH на выводе выключателя и останавливает двигатель.

Я прикрепил изолентой свою плату RedBoard (arduino UNO) сзади корпуса, а таймер с вилкой на его боковой стороне. Таймер с вилкой используется в качестве баланса для корпуса, чтобы он правильно стоял.

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

Теперь вам не нужно брать аквариум с собой в отпуск. Только не забудьте перед отъездом насыпать корм в контейнер.

Источник

Оцените статью