Оглавление:

Совершенная автоматическая кормушка для рыбы своими руками: уровень 2: 10 шагов (с изображениями)
Совершенная автоматическая кормушка для рыбы своими руками: уровень 2: 10 шагов (с изображениями)

Видео: Совершенная автоматическая кормушка для рыбы своими руками: уровень 2: 10 шагов (с изображениями)

Видео: Совершенная автоматическая кормушка для рыбы своими руками: уровень 2: 10 шагов (с изображениями)
Видео: Котика ударило током, 10 т. Вольт 2024, Ноябрь
Anonim
Идеальная автоматическая кормушка для рыбы своими руками: уровень 2
Идеальная автоматическая кормушка для рыбы своими руками: уровень 2

Устройство подачи уровня 2 - это большой шаг вперед по сравнению с устройством уровня 1. В этой версии используется модуль Wi-Fi ESP8266 для синхронизации часов Arduino для управления графиком кормления и освещением резервуара.

Шаг 1. Что вам понадобится:

Все на уровне 1, кроме таймера освещения

  • ESP8266-01
  • Программатор FTDI (для программирования ESP8266)
  • Паяльник
  • Светодиодная лента 5V RGBW (SK6812 IP 65, дневной белый, я использовал эту)
  • Световая полоса должна быть водонепроницаемой, так как вода будет испаряться из резервуара и конденсироваться на крышке резервуара и светиться сами.
  • Источник питания 5 В (я использовал этот, arduino НЕ МОЖЕТ запитать все индикаторы самостоятельно).
  • Не стесняйтесь использовать любой источник питания 5 В, который вы хотите, просто убедитесь, что он обеспечивает достаточную мощность для питания всех источников света.
  • Регулятор напряжения 3.3V
  • ESP8266 работает при 3,3 В, поэтому все остальное - 5 В, проще перейти с 5 до 3,3, чем с 12 до 3,3.
  • Резисторы (1кОм x2, 2кОм x2 (или 1кОм x4), 10кОм x1)
  • супер клей
  • Горячий клей
  • 3D-печатные детали x8 (файлы STL предоставляются)
  • Инструмент для зачистки проводов (рекомендую эти полезные штуки)
  • Макетная плата (для прототипирования вещей)
  • Protoboard / Project board (для окончательной сборки)
  • Стандартный 3-контактный компьютерный кабель питания.
  • (опционально) Вибромотор сотового телефона (для перемешивания бункера) (я использовал один из них)
  • Установите эти библиотеки arduino:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Терпение.

Шаг 2: как это работает

ESP8266 получает время Unix от сервера NIST и передает его на arduino. Затем arduino использует это время для определения местного восхода и захода солнца и синхронизации своих внутренних часов, чтобы определить, сколько минут прошло с полуночи. Используя это время, прошедшее с полуночи, arduino устанавливает цвет огней и знает, когда активировать фидер, который является тем же механизмом, что и фидер уровня 1. В настройках по умолчанию в коде arduino, который я написал, свет установлен на дневной / ночной цикл, который можно контролировать с точностью до секунды для плавного затухания и синхронизировать с восходом и заходом солнца в вашем местоположении. Arduino также перезагружается один раз в день, чтобы повторно синхронизировать себя с сервером NIST и гарантировать отсутствие переполнения таймера.

Шаг 3: Программирование ESP8266

Программирование ESP8266
Программирование ESP8266

Итак, ESP8266 - гад для программирования.

Он не подходит для макетной платы, и если у вас есть перемычки с внутренней резьбой, я рекомендую их использовать. Если ваш ESP8266 пришел без какой-либо установленной прошивки, как у меня, вам придется ее прошить. Используйте для этого программатор FTDI, есть много инструкций о том, как это сделать в другом месте, но для удобства я предоставил схему подключения. УБЕДИТЕСЬ, что программатор FTDI обеспечивает 3,3 В! 5V сожжет ваш ESP8266. На моей схеме оранжевый, подключенный между GPI01 и GND, должен быть только при прошивке прошивки ESP8266. GPI01 должен оставаться неподключенным при загрузке фактического кода Arduino в модуль.

Затем вам нужно будет загрузить фактический код ESP8266. На этот раз используйте программатор FTDI вместе с IDE arduino. Вам также необходимо будет загрузить и установить все используемые библиотеки. Настройки, используемые для загрузки кода с Arduino 1.8, находятся в закомментированной части в начале. ОБЯЗАТЕЛЬНО обновите код, указав свою сеть Wi-Fi и пароль.

Шаг 4: Подключите ESP8266 к Arduino

Подключите ESP8266 к Arduino
Подключите ESP8266 к Arduino
Подключите ESP8266 к Arduino
Подключите ESP8266 к Arduino

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

После того, как ESP8266 будет полностью подключен, вы должны увидеть синюю вспышку, когда он подключен к источнику питания, через несколько секунд он должен получить время Unix из Интернета и отправить его на Arduino, тогда у него будет пустой цикл void (), что он сидит до тех пор, пока не будет сброшен, точно так же, как фидер уровня 1.

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

Шаг 5: загрузка кода Arduino и устранение неполадок

Загрузка кода Arduino и устранение неполадок
Загрузка кода Arduino и устранение неполадок

Теперь загрузите код в Arduino nano, откройте монитор последовательного порта, вы должны увидеть что-то вроде примера выше. Arduino сбрасывается, когда вы открываете последовательный монитор, поэтому ESP8266 будет сброшен одновременно. серийный монитор начнет отсчет секунд с полуночи 1 января 1970 года, пока ESP8266 не отправит ему текущее время Unix. Когда это произойдет, вы должны увидеть следующее:

Это может занять от 3 до 15 секунд, так что наберитесь терпения. Я редко видел, чтобы это занимало больше 10 секунд, но дайте 15, прежде чем приступить к устранению неполадок.

Если ваш ESP8266 не отправляет время на Arduino, попробуйте следующие шаги:

· Убедитесь, что все подключено ТОЧНО, как и должно

· Дважды проверьте, что вы ввели правильный SSID и пароль Wi-Fi в ESP8266, в противном случае вам придется подключить его обратно к программатору FTDI, чтобы загрузить правильную информацию, а затем перепрограммировать его на Arduino. (сверхдлинный SSID или пароль могут вызвать некоторые проблемы, но моя сеть Wi-Fi содержит более 20 символов в обоих полях, поэтому с большинством домашних сетей все будет в порядке)

· Проверьте страницу администратора вашего маршрутизатора (если можете) на предмет подключенного устройства, которое появляется только при включенном ESP8266. Чтобы убедиться, что он остается включенным, пока вы проверяете это (Arduino отключает его), повторно подключите провод, ведущий к выводу сброса ESP8266, напрямую на 3,3 В, поддерживая его ВЫСОКОЕ, чтобы ESP8266 оставался включенным. Не забудьте отменить это после проверки.

Шаг 6: настройка кода Arduino

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

Чтобы лучше понять, как arduino вычисляет восход и закат, прочтите документацию по библиотеке Dusk2Dawn. Вам нужно будет ввести свою широту и долготу (если вы измените название своего местоположения, убедитесь, что оно изменено везде в коде!) Dusk2Dawn использует ваши координаты GPS (которые вы можете найти на картах Google) и местное время, чтобы определить, когда солнце встает и заходит за считанные минуты от полуночи. Переменная minfromMid представляет собой текущую минуту с полуночи и сравнивается с восходом, закатом, временем кормления и сумеречным временем, чтобы сообщить Arduino, когда что делать. Не забудьте также обновить свой часовой пояс, по умолчанию EST.

Как только ваше местоположение установлено, установите время сумерек, чтобы сообщить Arduino, как долго вы хотите, чтобы сумерки были. Этот параметр определяет продолжительность периода между дневным и ночным временем и выражается в минутах. По умолчанию это 90 минут, поэтому огни RGBW будут плавно переходить из дневного в ночное или наоборот за это время.

Затем установите желаемое время кормления. Фактическое время кормления устанавливается в методе getTime (), чтобы кормления были синхронизированы с днем / ночью. Если вы хотите, чтобы ваша рыба кормилась каждый день в одно и то же время, закомментируйте относительные настройки и используйте исходные настройки в начале кода. Помните, что это время в минутах от полуночи. Использование начального, жестко запрограммированного времени кормления может повлиять на освещение, если время кормления приходится на переход между сумерками и дневным светом (на восходе и закате). По умолчанию для кода установлено значение 15 минут до и после захода солнца и восхода солнца соответственно. При желании можно добавить дополнительное время кормления.

Затем установите время, в которое вы хотите сбросить Arduino. Это гарантирует, что ни один из таймингов не переполнится и не будет повторно синхронизировать часы. Я рекомендую сделать это в полдень, когда вас нет дома, так как в процессе сброса свет загорается на полную яркость. Днем это не будет проблемой для рыб, но ночью или утром / вечером вспышка света может потревожить вашу рыбу или испортить внешний вид аквариума на несколько секунд, пока вы наслаждаетесь им.

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

Шаг 7: Освещение

Освещение
Освещение

Подключите светодиодную ленту, если вы еще этого не сделали.

Питание (красный) на 5 В, земля (белый) на землю, сигнал (зеленый) на контакт 6 (или как вы его установили). После сброса Arduino огни будут на полной яркости, пока ESP8266 не отправит время на Arduino и не определит, где он находится в цикле освещения. Лучше всего настраивать его вечером или ночью, так как изменение освещения будет более резким. Если индикаторы не меняются в течение 30 секунд, перезагрузите Arduino. Мой код сброса должен работать, но я не программист по профессии, поэтому здесь может быть пара ошибок. Вы можете проверить, работает ли сброс, установив время сброса на минуту после повторной загрузки кода и ожидания (секунда сброса выбирается случайным образом, поэтому фактический сброс может занять 1-2 минуты). Вы можете сделать тот же трюк позже. чтобы убедиться, что сервопривод работает, изменив время подачи. Просто не забудьте вернуть это время, прежде чем оставить его включенным.

График освещения по умолчанию довольно прост:

Ночью все индикаторы выключены, кроме синего, который находится на самом низком уровне (2/255). По мере приближения восхода солнца интенсивность синего цвета увеличивается до полной (255), достигаемой в начале сумерек. В сумерках красный и зеленый возрастают от выключения до 255. На восходе красный, синий и зеленый все равны 255, но дневной свет белый, поэтому в течение следующих 2 минут красный, синий и зеленый исчезают, а белый исчезает. дюйм. В течение остального дня белый цвет имеет полную интенсивность, за 2 минуты до захода солнца, когда он исчезает и снова сменяется красным, синим и зеленым. На закате освещение снова переходит в сумерки, за исключением того, что на этот раз красный и зеленый начинают с полной интенсивности и затемняются, оставляя синий с полной интенсивностью, когда наступает ночь. Отсюда синий цвет медленно возвращается к самому низкому значению, которое достигается в полночь.

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

Шаг 8: Печать деталей

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

Папка.zip содержит два набора файлов STL, один для исходного серводвигателя SM22, который я использовал, а другой для гораздо более распространенного сервопривода SG90. Оба содержат файлы Fusion 360, если вы хотите / хотите изменить какую-либо из частей. Модули SM22 STL определенно подходят друг другу, поскольку я использовал именно их. Я не печатал и не тестировал детали SG90.

В качестве материалов я рекомендую использовать безопасный для пищевых продуктов пластик. Я использовал Raptor PLA от makergeeks, который бывает разных цветов и очень прочен после 10 минут отжига. Это можно сделать путем кипячения деталей, что я рекомендую делать только для колеса, если оно не совсем подходит, поскольку отжиг приведет к усадке деталей примерно на 0,3%.

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

Также имеется «концевой упор» для поддержки нижней части корпуса. Оставив кормушку на месте на пару недель, я заметил, что она начала провисать и сгибаться под весом источника питания, и это повлияло на способность бункера подавать корм в колесо. Просто приклейте горячим клеем 1-2 упора к нижней части корпуса, чтобы все было ровно.

Шаг 9: Сборка

сборка
сборка
сборка
сборка
сборка
сборка
сборка
сборка

Используйте макетную плату, чтобы соединить все. Я использовал перемычки, поэтому мне не пришлось паять так много, но именно здесь вы будете паять больше всего. Пока все соединения одинаковы, система будет работать так же, как на макетной плате. Я спаял вместе выводы заголовка, чтобы создать силовые «шины» для земли, 5 В, 3,3 В, а также сигнальные порты для сервоприводов и сигналов 3,3 В без питания для ESP8266 (RX, CH_PD и RST). Я сориентировал все булавки на нижнюю сторону прототипной платы, а компоненты - наверх.

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

Если вы еще не сделали этого для источника питания, отрежьте конец кабеля питания, который не подключается к стене, и зачистите провода, чтобы их можно было вставить в правильные клеммы источника питания. Если у вас есть обжимные концы, которые вы можете надеть на концы, я предлагаю использовать их, в противном случае подойдет и чистая медь, просто убедитесь, что ничего не закорачивает! ПОМНИТЕ, что он будет подключен к электросети вашего дома, БУДЬТЕ БЕЗОПАСНЫ И НИКОГДА НЕ РАБОТАЙТЕ С ПОДКЛЮЧЕННОЙ СИСТЕМОЙ.

Далее в емкость нужно добавить световую полосу. Снимите крышку резервуара и полностью высушите ее. Перед добавлением ламп убедитесь, что поверхность крышки чистая и сухая. Полоска, которую я получил, имеет липкую основу, это не сработает, чтобы закрепить световую полосу, но будет работать, чтобы разместить их по краю крышки (или где бы вы их ни разместили). Крышка моего бака оказалась подходящего размера для моей полосы, поэтому мне не пришлось продлевать провода. Просто убедитесь, что все оголенные провода закрыты водонепроницаемым материалом, прежде чем закрывать резервуар крышкой. Я покрыл концы горячим клеем, но это может не сработать надолго. После того, как источники света будут расположены так, как вам нравится, приклейте их на место. Мне пришлось использовать дополнительный клей в углах, так как светодиодная лента там приподнялась. Дайте клею высохнуть в течение нескольких минут, прежде чем снова надеть крышку на резервуар, чтобы убедиться, что ничего не капает. Когда крышка снова закрыта, просто подключите провода к Arduino.

Узел питателя точно такой же, как у питателя Tier 1. Сервопривод помещается в его полость с приклеенным к нему подающим колесом. Карман подающего колеса должен указывать на бункер, когда сервопривод находится в положении 0 (и вращается по направлению к резервуару в положении 180). Если вы используете дополнительный вибрационный двигатель, припаяйте к нему несколько выводных проводов и вставьте его в бункер, в полости сервопривода для него есть полость. Пропустите подводящие провода двигателя по тому же пути, что и провода сервопривода, и подключите их к земле и контакту двигателя на Arduino. Приклейте бункер к основанию горячим способом.

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

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

Шаг 10: на что следует обратить внимание в первую очередь:

На что следует обратить внимание в первую очередь
На что следует обратить внимание в первую очередь
На что следует обратить внимание в первую очередь
На что следует обратить внимание в первую очередь
На что следует обратить внимание в первую очередь
На что следует обратить внимание в первую очередь

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

Еще одна ошибка, на которую следует обратить внимание, - это сброс. Если, например, вы приедете домой после захода солнца, а ваш резервуар все еще горит дневным светом, скорее всего, функция сброса не удалась, и Arduino так и не получил время от ESP8266. Это также означает, что ваша рыба не кормилась с момента сброса, поэтому вам, вероятно, следует кормить ее самостоятельно, нажимая кнопку сброса на Arduino. Я на 99% уверен, что устранил это, но кодирование - не моя профессия, так что не забывайте об этом.

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

Если вы уезжаете в отпуск, перед отъездом обязательно поменяйте воду и проведите другое базовое обслуживание резервуара. Кормушка только гарантирует, что еда и освещение не станут концом для вашей рыбы, если вы отсутствуете слишком долго. Вам больше никогда не придется использовать кормушки для отпуска!

Рекомендуемые: