Arduino автоматична годівниця. Годівниця для акваріумних риб на базі Arduino

28 липня 2015 о 14:28

Годівниця для акваріумних рибна базі Arduino

  • DIY або Зроби сам

Літо – сезон відпусток. Побоявся що три тижні на морі приведуть до голодної смерті мешканців акваріума, а оскільки теща поїхала зі мною, то довірити справу годівлі риб нема кому.

Трохи подумавши над проблемою вирішив з допомогою Arduino UNO, яка опинилася під рукою, зробити автоматичну годівницю. Добре невеликий досвід автоматизації вже був. А оскільки про запас був закуплений Ethernet Shield, то виникла думка про моторошне збочення: управління годівлею через комп'ютерну мережу. Справа в тому, що вдома у мене стоїть постійно включений комп'ютер виконуючий обов'язки домашнього сервера. Він підключений до безперебійника і тому високі шанси навіть при короткочасних перемиканнях живильної мережі, комп'ютер зустріне нас дзижчанням своїх вентиляторів, а за одне і зійде до керування цією годівницею.

Справа в тому, що в прикладах із середовища розробки Arduino IDEдля Ethernet Shield було знайдено веб-сервер, деяка переробка якого дозволила видавати стан всіх аналогових контактів у форматі JSON.

Невеликі експерименти з рядком запиту в цьому веб-сервері дозволили зробити розпізнавання URL типу:

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

Вмикання-вимикання світла здійснюється за допомогою релейного модуля. Цю саму релюху я прямо вбудував у заздалегідь куплену розетку. З усього цього згодом зробив невеликий керований подовжувач.

Найскладніше було зробити саму установку з годівлі. Стало очевидно, що на час відпустки риба сідає на дієту з якої виключається мотиль, а їсть тільки гранули.

Перерив рунет у пошуках прийнятної конструкції для власноручного виготовлення. Найбільш прийнятною вважав обертовий барабан з кормом усередині. При цьому барабан має щілину, через яку висипаються гранули, проходячи нижню точку. Найголовніше при цьому, щоб цей барабан барабан випадково не зупинився в положенні «щілиною вниз», тоді у риб може статися «свято живота», а через деякий час відчуття, що вони живуть у сартирі замість акваріума. Коротше, виникли проблеми:

  1. з чого зробити барабан
  2. як його обертати
  3. як його змусити вчасно зупинитися, зробивши лише один оборот
Порившись у роздовбаних сином іграшках, знайшов пристойний, як мені здавалося, редуктор із моторчиком. Навколо якого і став збирати механічну частинугодівниці. Барабаном стала звичайна пластикова банказ-під вівсяного киселя, яким деякий час балувалася дружина. Але коли я зібрав конструкцію та спробував її від стандартного п'ятивольтового живлення, я зрозумів, що редуктор має занадто мале зниження, і поведінка всієї системи чимось нагадує центрифугу. Переробляти під інший редуктор було ліньки і вирішив піти іншим шляхом - зниженням напруги. Але й тривольтове харчування надміру швидко обертало барабан. Спеціально купив навіть півторавольтовий блок живлення. Зрадів, але моя радість була не довгою, т.к. під час перевірки роботи у «напівбойовому» режимі, тобто. при включенні-вимиканні годівниці через реле раптом з'ясувалося що після 20-40 циклів - китайський блок живлення здох. Довелося екстрено купити Motor Shield та використовувати його широкі можливостірегулювання швидкості обертання барабана.

На цьому дві з трьох проблемипішли, і я почав серйозно замислюватися про вирішення завдання точної зупинки. Механічний вимикач, який сигналізував би про проходження обороту мені здався не дуже гарним рішенням. Збентежило додаткове механічне навантаження на редуктор, що виникає тільки в одному положенні барабана. Тому я вирішив використати систему: світлодіод + чорна мітка на барабані + фоторезистор. Взяв фоторезистор, зібрав з ним дільник напруги, а за допомогою одного з аналогових входів Arduino UNO став вимірювати напругу визначення наявності чи відсутності мітки. Найвлучнішою виступив невеликий фрагмент ізоленти, а підсвічування було організоване за допомогою світлодіода запитаного через резистор (для обмеження струму). Потім було нудне напрацювання статистики, при різних ступеняхосвітленості барабана (світло в кімнаті). Визначив, які значення знімаються з аналогового входу, і поставив порогові значення для варіантів «є мітка» - «немає мітки». Так було вирішено останню проблему.

Потім спробував годівницю разом з гранулами і прорізом, але, щоб не обгодувати заздалегідь риб всі тести проводив над аркушем паперу, де я не тільки визначав розмір щілини (заклеюючи її фрагментами скотчу) а й з'ясував, що частина гранул прокидається повз призначену для цієї відстані між двох рейок. довелося в навантаження розкурити пластикову упаковку для якогось кабелю і зробити з них щось нагадує щітки в електродвигуні, щоб при підйомі щілини корм «затикався» цими прозорими пластинами, що труться об барабан.

Як ви вже зрозуміли, мета цього пристрою - зовсім не сите риб'яче життя, а деяка проба себе. І я вирішив піти далі. Щодо розробки софту. У залозі у мене виявився лише виконавець трьох команд, а ось на домашньому сервері – я вирішив вести деяку статистику. Оскільки я веб-програміст, взяв за звичкою базу даних MySQL, завів у ній дві таблички. В одну складав - URL"и і дати запитів до пристрою, в іншу писав відповіді, в результаті я отримав статистику чи успішно були погодовані риби і о скільки включилося і вимкнулося світло в акваріумі. (Річ у тому, що відповідь пристрій видає тільки після виконання команди. І не видає якщо щось пішло не так.) Згадавши свої деякі навички в Java взяв клас URL і з його допомогою зробив усі ці http-запити до ардуїнки парсіл, бібліотекою завантаженої з json.org. наблизився стрімко тому на збочення часу, що залишилися, не вистачило і саму керуючу java-софтину я вирішив запускати за допомогою старого доброго cron"а.

Ось у такому вигляді і застав і нас, і риб, від'їзд на море. Через три тижні ми повернулися засмаглі і побачили всіх наших рибашок, які весело плавали по акваріуму, причому неабияк від'їли.

У даному циклі статей я розповідатиму про мій досвід складання «розумної» автоматичної системидля годування домашнього вихованця, у моєму випадку – кота.

Хочу відразу відзначити, що на першому кроці йтиметься лише про "автоматичну" годівницю, а "розумну" вона стане на наступних етапах (якщо пощастить, і все піде за планом).

Отже, почнемо з концепції та цілей:

  • Зробити систему, яка звільнить мене від обов'язку годувати кота сухим кормом (крок 1)

  • Оснастити систему датчиком ваги під мискою і здійснювати годування відповідно до показань ваг: якщо миска порожня – підсипати, інакше – чекати доки миска не стане порожньою (крок 2)

  • Додати в систему вай-фай модуль та відеокамеру для передачі фотографій із улюбленим котом, а також забезпечити контроль годівлі віддалено. Крім того, збирати дані про те, скільки кіт з'їв і будувати аналітику (крок 3)
  • На першому кроці не потрібно велика кількістьдатчиків і маніпуляторів, достатньо одного серводвигуна (наприклад, Micro Servo Towerpro SG90 9 г), тому все управління походить з плати ArdruinoUno, яка ідеально підходить для таких завдань.

    Системи годівлі так чи інакше містять деякий контейнер, в якому лежить сухий корм, і механізм, що обертається, дозує його кількість. Вивчивши досвід інших "винахідників", я виділила б три основні механізми:

  • Використовується контейнер і сама система з-під диспенсера мюслей (напевно бачили в готелях). Внизу в шийці контейнера встановлений стрижень із лопостями. Вісь стрижня лежить вздовж площини шийки. Такий механізм виглядає досить акуратно, його легко зібрати (власне і збирати майже нічого не треба), але, на жаль, дуже вже дорогий. Але тут на смак та колір.

  • Інший варіант - навпаки, конструкція робиться своїми руками з акрилу, а дозатор, що обертається, з CD дисків. Досить зрозуміло про те, як зробити таку годівницю розказано у цьому відео. Якщо є під рукою акрил, різак для нього, ну і в принципі є якийсь досвід у складанні такого роду речей, то це довго

    ольно бюджетний варіант. Але не для таких як я самостійно все спроектувати, вирізати і рівненько з'єднати вимагає іншого рівня акуратності.


  • Для третього варіанту потрібно: звичайна банка, яка відіграватиме роль контейнера, щось, з чого можна вирізати невеликий сектор (підійде, наприклад, кришка якоїсь пластмасової ікеївської коробки), та й пара магнітів для кріплення конструкції. Цей варіант ми й розберемо докладніше, він не вимагає інженерної освіти та великої кількості вкладень, загалом саме те, що потрібно.
  • Усі матеріали, які мені були потрібні для збирання годівниці на першому етапі:


    • Скляна банка

    • 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);

    Для кріплення банки до стіни я використовувала такі магніти, кожен на 4кг (мені здається краще використовувати більш потужні). До банку магніти кріпляться просто клеєм, до стіни – гвинтами.

    Плата прикріплена до банку за допомогою такої липучки, її зручно знімати та кріпити назад. Липучка така продається у будь-якому господарському, використовується для кріплення картин.

    Бо в мене єдиним зовнішнім модулемє серводвигун, то додаткового живлення не треба, достатньо запитати плату, її можна підключити безпосередньо до мережі через зарядку usb на 5V.

    Ось як все виглядає у зібраному стані:

    http://habrahabr.ru/https:/docs.google.com/drawings/d/sZPzsxkEnz9YKjsg006HPBA/image?w=320&h=311&rev=7&ac=1

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


    • встановлення датчиків руху, фотографування кота в той момент, коли він з'являється у зоні видимості. Інтеграція датчика ваги і датчика руху дозволяє визначати, коли кіт просто ходить повз годівницю, а коли прийшов поїсти. Відповідно, можна прикрутити аналітику, коли коте воліє їсти і як багато.

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

    • Можна додати можливість годівниці працювати на двох котів:

      • Або це будуть дві різні годівниці, кожна з яких вміє відлякувати "чужого" кота.

      • Або це одна, але якось модифікована


    • Треба подумати як реалізувати напувалку і синтегрувати її з годівницею, додати систему фільтрації.

    Сподіваюся, комусь це буде корисно.

    Програмування мікроконтролерів

    У даному циклі статей я розповідатиму про мій досвід складання «розумної» автоматичної системи для годування домашнього вихованця, у моєму випадку – кота.


    Хочу відразу відзначити, що на першому кроці йтиметься лише про "автоматичну" годівницю, а "розумну" вона стане на наступних етапах (якщо пощастить, і все піде за планом).


    Отже, почнемо з концепції та цілей:

    1. Зробити систему, яка звільнить мене від обов'язку годувати кота сухим кормом (крок 1)
    2. Оснастити систему датчиком ваги під мискою і здійснювати годування відповідно до показань ваг: якщо миска порожня – підсипати, інакше – чекати доки миска не стане порожньою (крок 2)
    3. Додати в систему вай-фай модуль та відеокамеру для передачі фотографій із улюбленим котом, а також забезпечити контроль годівлі віддалено. Крім того, збирати дані про те, скільки кіт з'їв і будувати аналітику (крок 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);

    Для кріплення банки до стіни я використовувала такі магніти, кожен на 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 секунд підсвічування дисплея гасне з метою економії заряду батарей. Після закінчення часу сервопривід відмикає кришку і піднімається за допомогою газліфта. Кінцівка розмикається і відключає всю електроніку від батарей, знову ж таки економія енергії. Апаратно, звісно, ​​можна зробити все простіше, але було цікаво зробити саме так.