Детали конструкции и программа — у меня в блоге:
http://lazyelectronics.com/index.php/ru/item/1-fish-feeder
В этом видео показано, как сделать своими руками автоматическую кормушку для рыб под управлением Arduino или другого микроконтроллера. Кормушка сделана из оргстекла, использован шаговый двигатель 28BYJ-48 и модуль часов реального времени DS1307. Преимущества данной конструкции — возможность точного дозирования корма для рыбок и использования двух видов кормов.
Видео Автоматическая кормушка для аквариумных рыб своими руками канала Volodymyr Bochkov
Показать
28 июля 2015 в 14:28
- DIY или Сделай сам
Лето — сезон отпусков. Побоялся что три недели на море приведут к голодной смерти обитателей аквариума, а поскольку тёща поехала со мной, то доверить дело кормёжки рыб оказалось некому.
Немного подумав над проблемой решил с помощью Arduino UNO, которая оказалась под рукой, сделать автоматическую кормушку. Благо небольшой опыт автоматизации уже был. А поскольку впрок был закуплен Ethernet Shield, то возникла мысль о жутком извращении: управлении кормёжкой через компьютерную сеть. Дело в том, что дома у меня стоит постоянно включенный компьютер исполняющий обязанности домашнего сервера. Он подключен к бесперебойнику и потому высоки шансы что даже при кратковременных переключениях питающей сети, компьютер встретит нас жужжанием своих вентиляторов, а за одно и снизойдёт до управления этой самой кормушкой.
Дело в том, что в примерах из среды разработки Arduino IDE для Ethernet Shield был найден вэб-сервер, некоторая переделка которого позволила выдавать состояние всех аналоговых контактов в формате JSON.
Небольшие эксперименты со строкой запроса в этом вэб-сервере позволили сделать распознавание URL»ов типа:
Два последних я приспособил для включения и выключения света в аквариуме, а первый — для непосредственно кормления.
Включение-выключение света делается посредством релейного модуля. Эту самую релюху я прямо встроил в заранее купленную розетку. Из всего этого впоследствии сделал небольшой управляемый удлинитель.
Самое сложное было сделать саму установку по кормлению. Стало очевидно, что на время отпуска рыба садится на диету из которой исключается мороженый мотыль, а кушает только гранулы.
Перерыл рунет в поисках приемлемой конструкции для собственноручного изготовления. Наиболее приемлемой счёл вращающийся барабан с кормом внутри. При этом барабан имеет щель, через которую высыпаются гранулы проходя нижнюю точку. Самое главное при этом, чтобы этот самый барабан случайно не остановился в положении «щелью вниз», тогда у рыб может случиться «праздник живота», а через некоторое время ощущение, что они живут в сартире вместо аквариума. Короче, возникли проблемы:
- из чего сделать барабан
- как его вращать
- как его заставить вовремя остановиться, сделав только один оборот
Порывшись в раздолбанных сыном игрушках, нашел приличный, как мне казалось, редуктор с моторчиком. Вокруг которого и стал собирать механическую часть кормушки. Барабаном стала обычная пластиковая банка из под овсяного киселя, которым некоторое время баловалась супруга. Но когда я собрал конструкцию и попробовал её от стандартного пятивольтового питания, я понял, что редуктор имеет слишком малое понижение, и поведение всей системы чем-то напоминает центрифугу. Переделывать под другой редуктор было лень и я решил пойти иным путём — понижением напряжения. Но и трёхвольтовое питание чрезмерно быстро вращало барабан. Специально купил даже полуторавольтовый блок питания. Обрадовался, но радость моя была не долгой, т.к. при проверке работы в «полубоевом» режиме, т.е. при включении-выключении кормушки через реле вдруг выяснилось что после 20-40 циклов — китайский блок питания благополучно сдох. Пришлось экстренно купить Motor Shield и использовать его широкие возможности для регулирования скорости вращения барабана.
На этом две из трёх проблемы ушли, и я начал всерьёз задумываться о решении задачи точной остановки. Механический выключатель, который бы сигнализировал о прохождении оборота мне показался не очень хорошим решением. Смутила дополнительная механическая нагрузка на редуктор, возникающая только в одном положении барабана. Потому я решил использовать систему: светодиод + чёрная метка на барабане + фоторезистор. Взял фоторезистор, собрал с ним делитель напряжения, а с помощью одного из аналоговых входов Arduino UNO стал мерить напряжение для определения наличия или отсутствия метки. Самой меткой выступил небольшой фрагмент изоленты, а подсветка была организована посредством светодиода запитанного через резистор (для ограничения тока). Затем была скучная наработка статистики, при разных степенях освещённости барабана (свет в комнате). Определил какие значения снимаются с аналогового входа, и задал пороговые значения для вариантов «есть метка» — «нет метки». Так была решена последняя проблема.
Затем попробовал кормушку вместе с гранулами и прорезью, но, дабы не обкормить заранее рыб все тесты проводил над листом бумаги, где я не только определял размер щели (заклеивая её фрагментами скотча) но и выяснил, что часть гранул просыпается мимо предназначенного для этого расстояния между двух реек. пришлось в нагрузку раскурочить пластиковую упаковку для какого-то кабеля и сделать из них нечто напоминающее щётки в электродвигателе, дабы при подъёме щели корм «затыкался» этими трущимися о барабан прозрачными пластинами.
Как вы уже поняли, цель этого устройства — вовсе не сытая рыбья жизнь, а некоторая проба себя. И я решил пойти дальше. В плане разработки софта. В железе у меня оказался только исполнитель трёх команд, а вот на домашнем сервере — я решил вести некоторую статистику. Поскольку я вэб-программист, взял по привычке базу данных MySQL завёл в ней две таблички. В одну складывал — URL»ы и даты запросов к устройству, в другую писал ответы, в результате я получил статистику успешно ли покормлены были рыбы и во сколько включился и выключился свет в аквариуме. (Дело в том, что ответ устройство выдаёт только после выполнения команды. И не выдаёт если что-то пошло не так.) Вспомнив свои некоторые навыки в Java взял класс URL и с его помощью сделал все эти три http-запроса к ардуинке. JSON-ответ парсил, библиотекой скачанной с json.org. Отпуск приблизился стремительно потому на оставшиеся извращения времени не хватило и саму управляющую java-софтину я решил запускать с помощью старого доброго cron»а.
Вот в таком виде и застал и нас и рыб отъезд на море. Спустя три недели мы вернулись загорелые и увидели всех наших весело плавающих по аквариуму рыбёшек, причём изрядно отъевшихся.
В данном цикле статей я буду рассказывать о моем опыте сборки «умной» автоматической системы для кормления домашнего питомца, в моем случае – кота.
Хочу сразу отметить, что на первом шаге речь пойдет только об «автоматической» кормушке, а «умной» она станет на следующих этапах (если повезет, и все пойдет по плану).
Итак, начнем с концепции и целей:
На первом шаге не требуется большое количество датчиков и манипуляторов, достаточно одного серводвигателя (например, Micro Servo Towerpro SG90 9 г), поэтому все управление происходит с платы ArdruinoUno, которая идеально подходит для задач такого рода.
Системы кормления так или иначе содержат некоторый контейнер, в котором лежит сухой корм, и вращающийся механизм, дозирующий его количество. Изучив опыт других «изобретателей», я бы выделила три основных механизма:
ольно бюджетный вариант. Но не для таких как я — самостоятельно все спроектировать, вырезать и ровненько соединить требует другого уровня аккуратности.
Все материалы, которые мне были нужны для сборки кормушки на первом этапе:
- Стеклянная банка
- ArduinoUno
- MicroServo (у меня разрешенный угол поворота 180, но это не принципиально)
- кусок пластика
- магниты
- пины для соединении платы с серводигателем
- Usb зарядка на 5V
Логика работы механизма проста: в крышке банки делается дырка типа сектор (центр крышки не вырезается), такой же сектор вырезается из пластмассы. Внутрь крышки прикрепляется серводвигатель, например, скотчем. На ось двигателя насаживается сначала крышка, а с внешней стороны вырезанный сектор. Так, при повороте оси серводвигателя вырезанный сектор смещается относительно дырки в крышке банки.
Также надо не забыть сделать дырочку под вывод провода серводвигателя наружу для подключения к плате. На шаге 1 кормежка происходит по таймеру, кот у меня не обжора, поэтому открытие сектора происходит раз в день на короткое время, ниже код для Arduino:
#include
#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кг (мне кажется лучше использовать более мощные). К банке магниты крепятся просто клеем, к стене — винтами.
Плата прикреплена к банке при помощи такой липучки, ее удобно снимать и крепить обратно. Липучка такая продается в любом хозяйственном, используется для крепежа картин.
Поскольку у меня единственным внешним модулем является серводвигатель, то дополнительного питания не надо, достаточно запитать плату, ее можно подключить напрямую к сети через usb зарядку на 5V.
Вот как все выглядит в собранном состоянии:
http://habrahabr.ru/https:/docs.google.com/drawings/d/sZPzsxkEnz9YKjsg006HPBA/image?w=320&h=311&rev=7&ac=1
«Ниже я набросала несколько идей дальнейшего развития кормушки, их много и пока непонятно, что именно будет делаться дальше, эта часть для обсуждения.
- установка датчиков движения, фотографирование кота в тот момент, когда он появляется в зоне видимости. Интеграция датчика веса и датчика движения позволяет определять, когда кот просто прогуливается мимо кормушки, а когда пришел покушать. Соответственно, можно прикрутить аналитику, когда котэ предпочитает кушать и как много.
- можно добавить датчик веса в сам контейнер с кормом, чтобы кормушка определяла момент, когда становится пустой и присылала предупреждение хозяину, что, мол, пусто, надо пополнить. Потом, как вариант, прикрутить возможность автозаказа корма с любимого сайта с доставкой.
- Можно добавить возможность кормушки работать на двух котов:
- Либо это будут две разные кормушки, каждая из которых умеет отпугивать “чужого” кота
- Либо это одна, но как-то модифицированная
- Надо подумать как реализовать поилку и синтегрировать ее с кормушкой, добавить систему фильтрации.
Надеюсь кому-то это будет полезно.
Программирование микроконтроллеров
В данном цикле статей я буду рассказывать о моем опыте сборки «умной» автоматической системы для кормления домашнего питомца, в моем случае – кота.
Хочу сразу отметить, что на первом шаге речь пойдет только об «автоматической» кормушке, а «умной» она станет на следующих этапах (если повезет, и все пойдет по плану).
Итак, начнем с концепции и целей:
- Сделать систему, которая освободит меня от обязанности кормить кота сухим кормом (шаг 1)
- Оснастить систему датчиком веса под миской и осуществлять кормежку в соответствии с показаниями весов: если миска пустая – подсыпать, иначе – ждать пока миска не станет пустой (шаг 2)
- Добавить в систему вай-фай модуль и видеокамеру для передачи фотографий с любимым котом, а также обеспечить контроль кормежки удаленно. Кроме того, собирать данные о том сколько кот съел и строить аналитику (шаг 3)
На первом шаге не требуется большое количество датчиков и манипуляторов, достаточно одного серводвигателя (например, Micro Servo Towerpro SG90 9 г), поэтому все управление происходит с платы ArdruinoUno, которая идеально подходит для задач такого рода.
Системы кормления так или иначе содержат некоторый контейнер, в котором лежит сухой корм, и вращающийся механизм, дозирующий его количество. Изучив опыт других «изобретателей», я бы выделила три основных механизма:
Все материалы, которые мне были нужны для сборки кормушки на первом этапе:
- Стеклянная банка
- ArduinoUno
- MicroServo (у меня разрешенный угол поворота 180, но это не принципиально)
- кусок пластика
- магниты
- пины для соединении платы с серводигателем
- Usb зарядка на 5V
Логика работы механизма проста: в крышке банки делается дырка типа сектор (центр крышки не вырезается), такой же сектор вырезается из пластмассы. Внутрь крышки прикрепляется серводвигатель, например, скотчем. На ось двигателя насаживается сначала крышка, а с внешней стороны вырезанный сектор. Так, при повороте оси серводвигателя вырезанный сектор смещается относительно дырки в крышке банки.
Также надо не забыть сделать дырочку под вывод провода серводвигателя наружу для подключения к плате. На шаге 1 кормежка происходит по таймеру, кот у меня не обжора, поэтому открытие сектора происходит раз в день на короткое время, ниже код для Arduino:
#include
#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кг (мне кажется лучше использовать более мощные). К банке магниты крепятся просто клеем, к стене — винтами.
Плата прикреплена к банке при помощи такой липучки, ее удобно снимать и крепить обратно. Липучка такая продается в любом хозяйственном, используется для крепежа картин.
Поскольку у меня единственным внешним модулем является серводвигатель, то дополнительного питания не надо, достаточно запитать плату, ее можно подключить напрямую к сети через usb зарядку на 5V.
Вот как все выглядит в собранном состоянии:
Ниже я набросала несколько идей дальнейшего развития кормушки, их много и пока непонятно, что именно будет делаться дальше, эта часть для обсуждения.
- установка датчиков движения, фотографирование кота в тот момент, когда он появляется в зоне видимости. Интеграция датчика веса и датчика движения позволяет определять, когда кот просто прогуливается мимо кормушки, а когда пришел покушать. Соответственно, можно прикрутить аналитику, когда котэ предпочитает кушать и как много.
- можно добавить датчик веса в сам контейнер с кормом, чтобы кормушка определяла момент, когда становится пустой и присылала предупреждение хозяину, что, мол, пусто, надо пополнить. Потом, как вариант, прикрутить возможность автозаказа корма с любимого сайта с доставкой.
- Можно добавить возможность кормушки работать на двух котов:
- Либо это будут две разные кормушки, каждая из которых умеет отпугивать “чужого” кота
- Либо это одна, но как-то модифицированная
- Надо подумать как реализовать поилку и синтегрировать ее с кормушкой, добавить систему фильтрации.
Надеюсь кому-то это будет полезно.
Как часто вы забывали покормить своих рыбок?
Ну, что касается меня, то это происходит довольно редко. Я не могу просто уехать из города на пару дней и затем думать на кого оставить свой аквариум.
После того, как я приобрел 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.
Другую ножку подключите к земле через резистор 10 кОм и также не забудьте подсоединить к цифровому выводу 2.
Поместите выключатель спереди подвижной крышки, и согните металлическую часть, сделав стопор (оранжевый и красный кабели на третьем рисунке). Когда выключатель перемещается вперед и нажимает на стопор, микроконтроллер arduino регистрирует значение HIGH на выводе выключателя и останавливает двигатель.
Я прикрепил изолентой свою плату RedBoard (arduino UNO) сзади корпуса, а таймер с вилкой на его боковой стороне. Таймер с вилкой используется в качестве баланса для корпуса, чтобы он правильно стоял.
Первый выход корма происходит правильно. При втором выходе корма видно, что если гранулы корма слиплись, и крышка неправильно закрыта, тогда крышка перемещается назад и вперед, пока не закроется надлежащим образом.
Теперь вам не нужно брать аквариум с собой в отпуск. Только не забудьте перед отъездом насыпать корм в контейнер.
Наверно, как и многие владельцы домашних животных, задумался о том, чтобы мой кот не голодал в течение дня, когда его некому покормить, а предыдущую порцию корма он уже съел. Поэтому появилась идея сделать автокормушку для кота
своими руками. Поискав в интернете разные варианты кормушек и тех, которые имеются в продаже, и тех, которые люди делают сами, решил, что ничего из увиденного мне не подходит, да и сделать автокормушку самому
было интересно.
Необходимо было, чтобы кормушка вмещала в себя тарелку с кормом, была удобной для кота (чтобы ему легко было есть, не тянуться к тарелке), чтобы тарелку было легко ставить и извлекать из кормушки, чтобы кормушку легко было мыть и она не занимала много места по площади, чтобы была безопасной для животного. Также необходимо, чтобы время открытия кормушки можно было поставить любое (покормить кота через два часа, три или, например, через четыре часа тридцать две минуты), дисплей для отображения времени и чтобы все это работало от батареек.
Решил, что кормушка будет треугольной формы, и у нее будет открываться, по истечении заданного времени, крышка вверх. Автокормушку
делал из мебельного ЛДСП. Опиленные края можно проклеить кромочной лентой. Для того чтобы крышка кормушки открывалась установлено две небольшие петли. Автокормушка должна только открыться в нужное время, закрываться сама она не должна — в этом нет необходимости. В качестве подъемного механизма крышки был использован мебельный газлифт на 50 Ньютонов. Для удерживания крышки в закрытом положении использовался сервопривод SG90, о котором шла речь . Далее, чтобы контролировать устанавливаемое время отчета до открытия кормушки для кота использован дисплей 1602 LCD с синей подцветкой, который имеет две строки по 16 символов в каждой.
«Мозгом» всей кормушки
является многим хорошо известная плата Arduino Nano
(с зашитой программой обеспечивающей необходимый функционал), которая, в данном случае, управляет выводом информации на дисплей, ведет отчет установленного времени и подает команду на сервопривод для закрытия и открытия крышки. Для взаимодействия с кормушкой использовался bluetooth HC-06 модуль. Таким образом, мобильный телефон по bluetooth связи можно соединить с кормушкой и с телефона устанавливать время, через которое будет открыта автокормушка
и запускать этот таймер.
Чтобы кормушка автоматически включалась и запирала подъемную крышку в закрытом положении, установлен концевик, который срабатывает при опускании крышки. Все это питается от двух батареек типа «Крона», расположенных на тыльной стороне.
Как все работает. Изначально крышка отрыта, вся электроника кормушки обесточена. Внутрь кормушки устанавливается корм, крышка усилием руки опускается, срабатывает концевик, подается питание. В ардуино начинает исполняться прошитый программный код. Включается дисплей. Включается сервопривод и фиксирует крышку в закрытом положении. Ардуино
ждет, пока через bluetooth к нему подключатся и посредством диалога внесут запрашиваемые данные времени.
На телефоне включаем bluetooth, запускаем bluetooth мессенджер и подключаем к кормушке. Вносим данные времени: количество часов и минут, через которое кормушка должна открыться. Для запуска таймера отправляем команду «g». Начинается обратный отчет установленного времени, которое видно на дисплее. Через 30 секунд подсветка дисплея гаснет с целью экономии заряда батарей. По истечению времени сервопривод отпирает крышку и та поднимается с помощью газлифта. Концевик размыкается и отключает все электронику от батарей, опять же экономия энергии. Аппаратно, конечно, можно сделать все проще, но было интересно сделать именно так.
В данном цикле статей я буду рассказывать о моем опыте сборки «умной» автоматической системы для кормления домашнего питомца, в моем случае – кота.
Хочу сразу отметить, что на первом шаге речь пойдет только об «автоматической» кормушке, а «умной» она станет на следующих этапах (если повезет, и все пойдет по плану).
Итак, начнем с концепции и целей:
На первом шаге не требуется большое количество датчиков и манипуляторов, достаточно одного серводвигателя (например, Micro Servo Towerpro SG90 9 г), поэтому все управление происходит с платы ArdruinoUno, которая идеально подходит для задач такого рода.
Системы кормления так или иначе содержат некоторый контейнер, в котором лежит сухой корм, и вращающийся механизм, дозирующий его количество. Изучив опыт других «изобретателей», я бы выделила три основных механизма:
ольно бюджетный вариант. Но не для таких как я — самостоятельно все спроектировать, вырезать и ровненько соединить требует другого уровня аккуратности.
Все материалы, которые мне были нужны для сборки кормушки на первом этапе:
- Стеклянная банка
- ArduinoUno
- MicroServo (у меня разрешенный угол поворота 180, но это не принципиально)
- кусок пластика
- магниты
- пины для соединении платы с серводигателем
- Usb зарядка на 5V
Логика работы механизма проста: в крышке банки делается дырка типа сектор (центр крышки не вырезается), такой же сектор вырезается из пластмассы. Внутрь крышки прикрепляется серводвигатель, например, скотчем. На ось двигателя насаживается сначала крышка, а с внешней стороны вырезанный сектор. Так, при повороте оси серводвигателя вырезанный сектор смещается относительно дырки в крышке банки.
Также надо не забыть сделать дырочку под вывод провода серводвигателя наружу для подключения к плате. На шаге 1 кормежка происходит по таймеру, кот у меня не обжора, поэтому открытие сектора происходит раз в день на короткое время, ниже код для Arduino:
#include
#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кг (мне кажется лучше использовать более мощные). К банке магниты крепятся просто клеем, к стене — винтами.
Плата прикреплена к банке при помощи такой липучки, ее удобно снимать и крепить обратно. Липучка такая продается в любом хозяйственном, используется для крепежа картин.
Поскольку у меня единственным внешним модулем является серводвигатель, то дополнительного питания не надо, достаточно запитать плату, ее можно подключить напрямую к сети через usb зарядку на 5V.
Вот как все выглядит в собранном состоянии:
http://habrahabr.ru/https:/docs.google.com/drawings/d/sZPzsxkEnz9YKjsg006HPBA/image?w=320&h=311&rev=7&ac=1
«Ниже я набросала несколько идей дальнейшего развития кормушки, их много и пока непонятно, что именно будет делаться дальше, эта часть для обсуждения.
- установка датчиков движения, фотографирование кота в тот момент, когда он появляется в зоне видимости. Интеграция датчика веса и датчика движения позволяет определять, когда кот просто прогуливается мимо кормушки, а когда пришел покушать. Соответственно, можно прикрутить аналитику, когда котэ предпочитает кушать и как много.
- можно добавить датчик веса в сам контейнер с кормом, чтобы кормушка определяла момент, когда становится пустой и присылала предупреждение хозяину, что, мол, пусто, надо пополнить. Потом, как вариант, прикрутить возможность автозаказа корма с любимого сайта с доставкой.
- Можно добавить возможность кормушки работать на двух котов:
- Либо это будут две разные кормушки, каждая из которых умеет отпугивать “чужого” кота
- Либо это одна, но как-то модифицированная
- Надо подумать как реализовать поилку и синтегрировать ее с кормушкой, добавить систему фильтрации.
Надеюсь кому-то это будет полезно.
Программирование микроконтроллеров
В данном цикле статей я буду рассказывать о моем опыте сборки «умной» автоматической системы для кормления домашнего питомца, в моем случае – кота.
Хочу сразу отметить, что на первом шаге речь пойдет только об «автоматической» кормушке, а «умной» она станет на следующих этапах (если повезет, и все пойдет по плану).
Итак, начнем с концепции и целей:
- Сделать систему, которая освободит меня от обязанности кормить кота сухим кормом (шаг 1)
- Оснастить систему датчиком веса под миской и осуществлять кормежку в соответствии с показаниями весов: если миска пустая – подсыпать, иначе – ждать пока миска не станет пустой (шаг 2)
- Добавить в систему вай-фай модуль и видеокамеру для передачи фотографий с любимым котом, а также обеспечить контроль кормежки удаленно. Кроме того, собирать данные о том сколько кот съел и строить аналитику (шаг 3)
На первом шаге не требуется большое количество датчиков и манипуляторов, достаточно одного серводвигателя (например, Micro Servo Towerpro SG90 9 г), поэтому все управление происходит с платы ArdruinoUno, которая идеально подходит для задач такого рода.
Системы кормления так или иначе содержат некоторый контейнер, в котором лежит сухой корм, и вращающийся механизм, дозирующий его количество. Изучив опыт других «изобретателей», я бы выделила три основных механизма:
Все материалы, которые мне были нужны для сборки кормушки на первом этапе:
- Стеклянная банка
- ArduinoUno
- MicroServo (у меня разрешенный угол поворота 180, но это не принципиально)
- кусок пластика
- магниты
- пины для соединении платы с серводигателем
- Usb зарядка на 5V
Логика работы механизма проста: в крышке банки делается дырка типа сектор (центр крышки не вырезается), такой же сектор вырезается из пластмассы. Внутрь крышки прикрепляется серводвигатель, например, скотчем. На ось двигателя насаживается сначала крышка, а с внешней стороны вырезанный сектор. Так, при повороте оси серводвигателя вырезанный сектор смещается относительно дырки в крышке банки.
Также надо не забыть сделать дырочку под вывод провода серводвигателя наружу для подключения к плате. На шаге 1 кормежка происходит по таймеру, кот у меня не обжора, поэтому открытие сектора происходит раз в день на короткое время, ниже код для Arduino:
#include
#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кг (мне кажется лучше использовать более мощные). К банке магниты крепятся просто клеем, к стене — винтами.
Плата прикреплена к банке при помощи такой липучки, ее удобно снимать и крепить обратно. Липучка такая продается в любом хозяйственном, используется для крепежа картин.
Поскольку у меня единственным внешним модулем является серводвигатель, то дополнительного питания не надо, достаточно запитать плату, ее можно подключить напрямую к сети через usb зарядку на 5V.
Вот как все выглядит в собранном состоянии:
Ниже я набросала несколько идей дальнейшего развития кормушки, их много и пока непонятно, что именно будет делаться дальше, эта часть для обсуждения.
- установка датчиков движения, фотографирование кота в тот момент, когда он появляется в зоне видимости. Интеграция датчика веса и датчика движения позволяет определять, когда кот просто прогуливается мимо кормушки, а когда пришел покушать. Соответственно, можно прикрутить аналитику, когда котэ предпочитает кушать и как много.
- можно добавить датчик веса в сам контейнер с кормом, чтобы кормушка определяла момент, когда становится пустой и присылала предупреждение хозяину, что, мол, пусто, надо пополнить. Потом, как вариант, прикрутить возможность автозаказа корма с любимого сайта с доставкой.
- Можно добавить возможность кормушки работать на двух котов:
- Либо это будут две разные кормушки, каждая из которых умеет отпугивать “чужого” кота
- Либо это одна, но как-то модифицированная
- Надо подумать как реализовать поилку и синтегрировать ее с кормушкой, добавить систему фильтрации.
Надеюсь кому-то это будет полезно.
Наверно, как и многие владельцы домашних животных, задумался о том, чтобы мой кот не голодал в течение дня, когда его некому покормить, а предыдущую порцию корма он уже съел. Поэтому появилась идея сделать автокормушку для кота
своими руками. Поискав в интернете разные варианты кормушек и тех, которые имеются в продаже, и тех, которые люди делают сами, решил, что ничего из увиденного мне не подходит, да и сделать автокормушку самому
было интересно.
Необходимо было, чтобы кормушка вмещала в себя тарелку с кормом, была удобной для кота (чтобы ему легко было есть, не тянуться к тарелке), чтобы тарелку было легко ставить и извлекать из кормушки, чтобы кормушку легко было мыть и она не занимала много места по площади, чтобы была безопасной для животного. Также необходимо, чтобы время открытия кормушки можно было поставить любое (покормить кота через два часа, три или, например, через четыре часа тридцать две минуты), дисплей для отображения времени и чтобы все это работало от батареек.
Решил, что кормушка будет треугольной формы, и у нее будет открываться, по истечении заданного времени, крышка вверх. Автокормушку
делал из мебельного ЛДСП. Опиленные края можно проклеить кромочной лентой. Для того чтобы крышка кормушки открывалась установлено две небольшие петли. Автокормушка должна только открыться в нужное время, закрываться сама она не должна — в этом нет необходимости. В качестве подъемного механизма крышки был использован мебельный газлифт на 50 Ньютонов. Для удерживания крышки в закрытом положении использовался сервопривод SG90, о котором шла речь . Далее, чтобы контролировать устанавливаемое время отчета до открытия кормушки для кота использован дисплей 1602 LCD с синей подцветкой, который имеет две строки по 16 символов в каждой.
«Мозгом» всей кормушки
является многим хорошо известная плата Arduino Nano
(с зашитой программой обеспечивающей необходимый функционал), которая, в данном случае, управляет выводом информации на дисплей, ведет отчет установленного времени и подает команду на сервопривод для закрытия и открытия крышки. Для взаимодействия с кормушкой использовался bluetooth HC-06 модуль. Таким образом, мобильный телефон по bluetooth связи можно соединить с кормушкой и с телефона устанавливать время, через которое будет открыта автокормушка
и запускать этот таймер.
Чтобы кормушка автоматически включалась и запирала подъемную крышку в закрытом положении, установлен концевик, который срабатывает при опускании крышки. Все это питается от двух батареек типа «Крона», расположенных на тыльной стороне.
Как все работает. Изначально крышка отрыта, вся электроника кормушки обесточена. Внутрь кормушки устанавливается корм, крышка усилием руки опускается, срабатывает концевик, подается питание. В ардуино начинает исполняться прошитый программный код. Включается дисплей. Включается сервопривод и фиксирует крышку в закрытом положении. Ардуино
ждет, пока через bluetooth к нему подключатся и посредством диалога внесут запрашиваемые данные времени.
На телефоне включаем bluetooth, запускаем bluetooth мессенджер и подключаем к кормушке. Вносим данные времени: количество часов и минут, через которое кормушка должна открыться. Для запуска таймера отправляем команду «g». Начинается обратный отчет установленного времени, которое видно на дисплее. Через 30 секунд подсветка дисплея гаснет с целью экономии заряда батарей. По истечению времени сервопривод отпирает крышку и та поднимается с помощью газлифта. Концевик размыкается и отключает все электронику от батарей, опять же экономия энергии. Аппаратно, конечно, можно сделать все проще, но было интересно сделать именно так.
28 июля 2015 в 14:28
- DIY или Сделай сам
Лето — сезон отпусков. Побоялся что три недели на море приведут к голодной смерти обитателей аквариума, а поскольку тёща поехала со мной, то доверить дело кормёжки рыб оказалось некому.
Немного подумав над проблемой решил с помощью Arduino UNO, которая оказалась под рукой, сделать автоматическую кормушку. Благо небольшой опыт автоматизации уже был. А поскольку впрок был закуплен Ethernet Shield, то возникла мысль о жутком извращении: управлении кормёжкой через компьютерную сеть. Дело в том, что дома у меня стоит постоянно включенный компьютер исполняющий обязанности домашнего сервера. Он подключен к бесперебойнику и потому высоки шансы что даже при кратковременных переключениях питающей сети, компьютер встретит нас жужжанием своих вентиляторов, а за одно и снизойдёт до управления этой самой кормушкой.
Дело в том, что в примерах из среды разработки Arduino IDE для Ethernet Shield был найден вэб-сервер, некоторая переделка которого позволила выдавать состояние всех аналоговых контактов в формате JSON.
Небольшие эксперименты со строкой запроса в этом вэб-сервере позволили сделать распознавание URL»ов типа:
Два последних я приспособил для включения и выключения света в аквариуме, а первый — для непосредственно кормления.
Включение-выключение света делается посредством релейного модуля. Эту самую релюху я прямо встроил в заранее купленную розетку. Из всего этого впоследствии сделал небольшой управляемый удлинитель.
Самое сложное было сделать саму установку по кормлению. Стало очевидно, что на время отпуска рыба садится на диету из которой исключается мороженый мотыль, а кушает только гранулы.
Перерыл рунет в поисках приемлемой конструкции для собственноручного изготовления. Наиболее приемлемой счёл вращающийся барабан с кормом внутри. При этом барабан имеет щель, через которую высыпаются гранулы проходя нижнюю точку. Самое главное при этом, чтобы этот самый барабан случайно не остановился в положении «щелью вниз», тогда у рыб может случиться «праздник живота», а через некоторое время ощущение, что они живут в сартире вместо аквариума. Короче, возникли проблемы:
- из чего сделать барабан
- как его вращать
- как его заставить вовремя остановиться, сделав только один оборот
Порывшись в раздолбанных сыном игрушках, нашел приличный, как мне казалось, редуктор с моторчиком. Вокруг которого и стал собирать механическую часть кормушки. Барабаном стала обычная пластиковая банка из под овсяного киселя, которым некоторое время баловалась супруга. Но когда я собрал конструкцию и попробовал её от стандартного пятивольтового питания, я понял, что редуктор имеет слишком малое понижение, и поведение всей системы чем-то напоминает центрифугу. Переделывать под другой редуктор было лень и я решил пойти иным путём — понижением напряжения. Но и трёхвольтовое питание чрезмерно быстро вращало барабан. Специально купил даже полуторавольтовый блок питания. Обрадовался, но радость моя была не долгой, т.к. при проверке работы в «полубоевом» режиме, т.е. при включении-выключении кормушки через реле вдруг выяснилось что после 20-40 циклов — китайский блок питания благополучно сдох. Пришлось экстренно купить Motor Shield и использовать его широкие возможности для регулирования скорости вращения барабана.
На этом две из трёх проблемы ушли, и я начал всерьёз задумываться о решении задачи точной остановки. Механический выключатель, который бы сигнализировал о прохождении оборота мне показался не очень хорошим решением. Смутила дополнительная механическая нагрузка на редуктор, возникающая только в одном положении барабана. Потому я решил использовать систему: светодиод + чёрная метка на барабане + фоторезистор. Взял фоторезистор, собрал с ним делитель напряжения, а с помощью одного из аналоговых входов Arduino UNO стал мерить напряжение для определения наличия или отсутствия метки. Самой меткой выступил небольшой фрагмент изоленты, а подсветка была организована посредством светодиода запитанного через резистор (для ограничения тока). Затем была скучная наработка статистики, при разных степенях освещённости барабана (свет в комнате). Определил какие значения снимаются с аналогового входа, и задал пороговые значения для вариантов «есть метка» — «нет метки». Так была решена последняя проблема.
Затем попробовал кормушку вместе с гранулами и прорезью, но, дабы не обкормить заранее рыб все тесты проводил над листом бумаги, где я не только определял размер щели (заклеивая её фрагментами скотча) но и выяснил, что часть гранул просыпается мимо предназначенного для этого расстояния между двух реек. пришлось в нагрузку раскурочить пластиковую упаковку для какого-то кабеля и сделать из них нечто напоминающее щётки в электродвигателе, дабы при подъёме щели корм «затыкался» этими трущимися о барабан прозрачными пластинами.
Как вы уже поняли, цель этого устройства — вовсе не сытая рыбья жизнь, а некоторая проба себя. И я решил пойти дальше. В плане разработки софта. В железе у меня оказался только исполнитель трёх команд, а вот на домашнем сервере — я решил вести некоторую статистику. Поскольку я вэб-программист, взял по привычке базу данных MySQL завёл в ней две таблички. В одну складывал — URL»ы и даты запросов к устройству, в другую писал ответы, в результате я получил статистику успешно ли покормлены были рыбы и во сколько включился и выключился свет в аквариуме. (Дело в том, что ответ устройство выдаёт только после выполнения команды. И не выдаёт если что-то пошло не так.) Вспомнив свои некоторые навыки в Java взял класс URL и с его помощью сделал все эти три http-запроса к ардуинке. JSON-ответ парсил, библиотекой скачанной с json.org. Отпуск приблизился стремительно потому на оставшиеся извращения времени не хватило и саму управляющую java-софтину я решил запускать с помощью старого доброго cron»а.
Вот в таком виде и застал и нас и рыб отъезд на море. Спустя три недели мы вернулись загорелые и увидели всех наших весело плавающих по аквариуму рыбёшек, причём изрядно отъевшихся.
Как часто вы забывали покормить своих рыбок?
Ну, что касается меня, то это происходит довольно редко. Я не могу просто уехать из города на пару дней и затем думать на кого оставить свой аквариум.
После того, как я приобрел 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.
Другую ножку подключите к земле через резистор 10 кОм и также не забудьте подсоединить к цифровому выводу 2.
Поместите выключатель спереди подвижной крышки, и согните металлическую часть, сделав стопор (оранжевый и красный кабели на третьем рисунке). Когда выключатель перемещается вперед и нажимает на стопор, микроконтроллер arduino регистрирует значение HIGH на выводе выключателя и останавливает двигатель.
Я прикрепил изолентой свою плату RedBoard (arduino UNO) сзади корпуса, а таймер с вилкой на его боковой стороне. Таймер с вилкой используется в качестве баланса для корпуса, чтобы он правильно стоял.
Первый выход корма происходит правильно. При втором выходе корма видно, что если гранулы корма слиплись, и крышка неправильно закрыта, тогда крышка перемещается назад и вперед, пока не закроется надлежащим образом.
Теперь вам не нужно брать аквариум с собой в отпуск. Только не забудьте перед отъездом насыпать корм в контейнер.

ProRobot.RU — лучший информационный сайт по робототехнике. У нас есть информация про роботов: фото и инструкции как собрать самому из лего или подручных средств. Мы находимся в России, но поможем Вам научиться создавать их своими руками. Понравилась информация — делитесь в социальных сетях с Вашими друзьями из Казахстана и Украины! 2006 — 2022
Сайт про роботов ПроРобот.ру всегда готов к сотрудничеству, обращайтесь через форму обратной связи.
ПОПУЛЯРНЫЕ СООБЩЕНИЯ
Руководство по перепрошивке Android TV-Box с SoC Amlogic
06.11.2020
Пошаговая инструкция Динозавр ЛЕГО WeDo 2.0 (Dino Rex)
17.11.2020
Лего тяжелый ТАНК WEDO 2.0 инструкция
20.11.2020
ПОПУЛЯРНАЯ КАТЕГОРИЯ
- Видео617
- 3D-принтеры570
- Гаджеты556
- Роботы228
- Новости в науке127
- Ардуино66
- Исследования62
- Космос56
- Медицина51
Лень — двигатель прогресса, как всем известно. А склероз — двигатель автоматизации. Я вот, к примеру, часто забываю покормить рыбок в аквариуме. И освещение им забываю включить, и воздушный компрессор. А аквариум мне всё же нравится. Так что, выхода нет: придётся делать автоматизацию аквариума. А так как готовые решения по вменяемой цене на эту тему отсутствуют — сделаю всё своими руками.
Собственно, автоматический контроллер для аквариума я сконструировал уже с год назад. Он у меня включает — отключает в нужное время свет, периодически — фильтр, и за температурой следит. В деталях опишу конструкцию в следующем посте. А сейчас покажу, как я сделал для своего самодельного контроллера аквариума ещё одну приблуду — автоматичесую кормушку для рыб.
Перед тем, как придумывать что-то новое я, конечно, поковырялся в интернете в поиске готовых конструкций. Но они меня не устроили прежде всего тем, что не обеспечивают сколь-либо точного дозирования корма. В большинстве случаев корм просто высыпается через отверстие в контейнере на протяжении какого-то времени. Поменяется тип корма, или просто он чуть слежится под действием влаги — и уже будет высыпаться другое количество. Более навороченные конструкции сложно сделать своими руками — часто нужен 3D-притнер. Второе, что мне хотелось видеть — чтобы аквариум был сверху накрыт крышкой или покровным стеклом. А те варианты, что я видел, не особо удобны для встраивания в крышку.
Моя автоматическая кормушка для рыб будет приводиться в движение популярным шаговым двигателем 28BYJ-48. Двигатель куплен на Алиэкспрессе, в комплекте идёт плата драйвера на базе микросхемы ULN2003. Управляющие сигналы на драйвер будет подавать (пока, для тестовых целей) Arduino, информация о времени будет считываться с модуля часов реального времени DS1307.
Итак, я сделал механическую часть кормушки из старого куска оргстекла толщиной 5 мм.
1. Нарезал куски нужного размера:
10×50 мм — 6 штук
15×105 мм — 2 штуки
50×100 мм — 1 штука
и последний большой кусок оргстекла — по размерам моего аквариума. Он будет использован в качестве покровного стекла, а через отверстие в нём будет подаваться корм для рыбок.
2. Кусочки 10×50 мм сложил «бутербродом» по три и склеил. Клей для оргстекла — дихлорэтан с растворённым в нём примерно 2% того же оргстекла. Получилось два брусочка 10x50x15 мм.
Боковые стороны брусочков шкурим на наждачке, положенной на ровную твёрдую поверхность, пока не станут идеально ровными.
3. К этим брусочкам на боковые стороны клеим кусочки оргстекла 15×105 мм. При этом между внутренними торцами брусочков оставляем промежуток 5 мм. В итоге получаем брусок 20x105x15 мм с прямоугольным отверстием в центре. Тем же способом шлифуем грани этого бруска — они должны быть плоскими и максимально параллельными.
4. Берём мебельный уголок 25×15 см. Одно из его отверстий рассверливаем сверлом на 7 мм. С обеих сторон термоклеем прикрепляем гайки M6. Для соосности гайки накручиваем на болт.
5. В боковой грани бруска сверлим отверстие под саморез и прикручиваем мебельный уголок из пункта 4. Деталь №1 готова!
6. Размечаем на кусочке оргстекла 50×100 мм (деталь №2) два прямоугольных отверстия 10х20 мм, через которые будет поступать корм. Расстояние между отверстиями — 30 мм.
7. По краям будущих прямоугольных отверстий засверливаемся сверлом на 8 мм, а затем с помощью лобзика выпиливаем по разметке. Дорабатываем напильником до нужной формы.
8. Отступая от углов детали №2 примерно 6-7 мм, сверлим отверстия диаметром 4 мм под шурупы. Деталь №2 готова!
9. Деталь №2 кладём на будущее покровное стекло, размечаем ответные отверстия для шурупов, и место отверстия для корма (8-10 мм) — точно посредине между прямоугольными отверстиями детали №2. Сверлим.
10. Отпиливаем кусок строительной шпильки М6 длиной 17 см. Она будет использваться в качестве ходового винта.
11. Делаем муфту для соединения вала шагового двигателя со шпилькой. Я взял алюминиевую трубку диаметром 8 мм (внутренний диаметр 6 мм — как раз входит шпилька). Отрезаем 1.5 см трубки. на расстоянии от каждого из её концов сверлим отверстия сверлом на 2.5 мм. В этих отверстиях нарезаем резьбу на 3 мм. Я просто с усилием вкрутил туда шурупы: алюминий мягкий, резьба нарезается легко.
12. Делаем крепление для шагового двигателя.Я взял кусочек фанеры 4 мм размерами 60х35 мм. На расстоянии 6 мм от нижнего края сверлим отверстие для вала диаметром 10 мм, вставляем двигатель, и просверливаем отверстия для крепления «ушек», прикручиваем шурупами 3х10мм. Фанерку крепим к покровному стеклу с помощью ещё одного мебельного уголка.
Шпильку вкручиваем в гайки на детали№1 до средины.
Деталь №2 крепим к покровному стеклу с помощью 4х шурупов М4, так, чтобы между ними размещалась деталь №1. Важно, чтобы деталь №1 перемещалась по оси без заметного трения — но при этом не было щелей между ней и деталью №2!
Муфту надеваем на вал двигателя и шпильку, фиксируем шурупами 3х6 мм.
Возле конца шпильки сверлим отверстие в покровном стекле, закрепляем там шуруп, который не будет давать шпильке уходить в сторону при вращении двигателя.
Осталось дело за контейнерами для корма. Я их склеил из кусочков тонкого оргстекла от коробки от компакт-диска. PDF-файл с «выкройками» можно скачать по ссылке внизу.
Покровное стекло снизу обклеил алюминиевой фольгой (для отражения света лампы), а сверху — самоклейкой (как бы, для красоты).
Нууу, собсно, с механикой вроде всё. Переходим к электронике.
Соединяем Arduino с модулями драйвера шагового двигателя и часов реального времени:
| Вывод Arduino | К чему присоединяем |
| D11 | IN1 драйвера ШД |
| D10 | IN2 |
| D9 | IN3 |
| D8 | IN4 |
| ANALOG IN5 | SCL модуля DS1307 |
| ANALOG IN4 | SDA модуля DS1307 |
| +5V | +5V модуля DS1307 |
| GND | GND обоих модулей |
Питание +5В на драйвер ШД лучше подавать от отдельного источника. Но на крайний случай можно попытаться и от Arduino — хотя опасно, может сгореть или перезагружаться.
Шаговый двигатель присоединяем к разъёму на драйвере, обозначенному буквами ABCD.
Заливаем в Arduino скетч:
#include <Wire.h>
#include «RTClib.h»
#define IN1 11
#define IN2 10
#define IN3 9
#define IN4 8
RTC_DS1307 RTC;
int Steps = 0;
unsigned long last_time;
unsigned long currentMillis ;
unsigned long steps_left;
long time;
uint8_t feedingHour = 12;
uint8_t feedingMinute = 30;
uint8_t feedingHour2 = 12;
uint8_t feedingMinute2 = 54;
void setup(){
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println(«RTC is NOT running!»);
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop()
{
DateTime now = RTC.now();
if(now.hour()==feedingHour && now.minute()==feedingMinute){
rotate(false, 25.0); //move FROM motor
delay(1000);
rotate(true, 30.0); //move TO motor
delay(1000);
rotate(false, 5.0); //move FROM motor
}
if(now.hour()==feedingHour2 && now.minute()==feedingMinute2){
rotate(true, 25.0); //move TO motor
delay(2000);
rotate(false, 30.0); //move FROM motor
delay(1000);
rotate(true, 5.0); //move TO motor
}
delay(1000);
}
//——————————————
void rotate (boolean dir, float mm){
steps_left=(unsigned long)64.0*64.0*mm;
while(steps_left>0){
currentMillis = micros();
if(currentMillis-last_time>=1000){
switch(Steps){
case 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
break;
case 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
default:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
}
if(dir==true){ Steps++;}
if(dir==false){ Steps—; }
if(Steps>7){Steps=0;}
if(Steps<0){Steps=7; }
time=time+micros()-last_time;
last_time=micros();
steps_left—;
}
}
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
Steps=0;
}
Особо задерживаться на ней не буду — там чуть переделанный пример из стандартной библиотеки для DS1307 и управление ШД, взятое с сайта instructables.com и чуть переделанное. Arduino в основном цикле сравнивает текущее время с тем, которое задано в переменных feedingMinute и feedingHour , и при совпадении вращает шаговый двигатель — сначала подавая деталь №1 под отверстие в контейнере с пищей, затем перемещая её к отверстию в покровном стекле. За один такой цикл в аквариум высыпается около 1 см3 корма. Если нужно больше — можно задать любое нужное количество повторений. В два контейнера можно насыпать разные корма — и в разное время рыбы будут получать разную пищу.
Единственный минус — двигатель с редуктором, вращается очень медленно. Один цикл кормления занимает больше минуты.
Как работает эта автоматическая кормушка для рыб, и процесс её сборки можно посмотреть на видео:
А по этой ссылке можно скачать PDF файл с «выкройками» оргстекла для контейнеров.
Loading…








































