Съдържание:

Най -добрата автоматична хранилка за риба „Направи си сам“: Ниво 2: 10 стъпки (със снимки)
Най -добрата автоматична хранилка за риба „Направи си сам“: Ниво 2: 10 стъпки (със снимки)

Видео: Най -добрата автоматична хранилка за риба „Направи си сам“: Ниво 2: 10 стъпки (със снимки)

Видео: Най -добрата автоматична хранилка за риба „Направи си сам“: Ниво 2: 10 стъпки (със снимки)
Видео: Web Programming - Computer Science for Business Leaders 2016 2024, Юли
Anonim
Най -добрата автоматична хранилка за риба „Направи си сам“: Ниво 2
Най -добрата автоматична хранилка за риба „Направи си сам“: Ниво 2

Подаващото устройство Tier 2 е голяма стъпка напред от Tier 1. Тази версия използва ESP8266 wifi модул за синхронизиране на часовника на arduino, за да контролира графика на хранене и осветлението на резервоара.

Стъпка 1: Какво ще ви трябва:

Всичко в ниво 1, освен таймера за осветление

  • ESP8266-01
  • FTDI програмист (за програмиране на ESP8266)
  • Поялник
  • 5V RGBW LED лента (SK6812 IP 65, бяла дневна светлина, използвах тази)
  • Светлинната лента трябва да бъде водоустойчива, тъй като водата ще се изпари от резервоара и ще кондензира върху капака на резервоара и самите светлини.
  • 5V захранване (използвах този, arduino НЕ МОЖЕ да захранва всички светлини сам по себе си.).
  • Чувствайте се свободни да използвате всяко 5V захранване, което искате, просто бъдете сигурни, че осигурява достатъчно енергия, за да захранва всички светлини.
  • 3.3V регулатор на напрежението
  • ESP8266 работи на 3.3V, затова всичко останало е 5V, по -лесно е да се намали 5 до 3.3, отколкото да се намали 12 до 3.3
  • Резистори (1kOhm x2, 2kOhm x2 (или 1kOhm x4), 10kOhm 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 задава цвета на светлините и знае кога да активира подаващото устройство, което е същият механизъм като освобождаващия от първи ред. Настройките по подразбиране в кода на arduino, който написах, имат светлините настроени на цикъл ден/нощ, който може да се контролира до секунда за плавно избледняване и се синхронизира с изгрева и залеза на вашето местоположение. Arduino също се нулира веднъж на ден, за да се синхронизира отново с NIST сървъра и да гарантира, че няма преливане на таймер

Стъпка 3: Програмиране на ESP8266

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

Добре, така че ESP8266 е гадняр за програмиране.

Не е подходящ за макет и ако имате женски джъмперни проводници, препоръчвам да ги използвате. Ако вашият ESP8266 дойде без инсталиран фърмуер като моя, ще трябва да мигате фърмуера. Използвайте програмиста FTDI, за да направите това, има много инструкции как да направите това другаде, но аз предоставих електрическа схема за удобство. Убедете се, че FTDI програмистът осигурява 3.3V! 5V ще изпържи вашия ESP8266. В моята диаграма оранжевото, свързано между GPI01 и GND, трябва да се прави само когато мига фърмуера на ESP8266. GPI01 трябва да остане несвързан, когато качва действителен код на arduino в модула.

След това ще трябва да качите действителния код на ESP8266. Използвайте FTDI програмиста този път заедно с arduino IDE. Също така ще трябва да изтеглите и инсталирате всички използвани библиотеки. Настройките, използвани за качване на кода с arduino 1.8, са в коментираната част в началото. Не забравяйте да актуализирате кода с вашата wifi мрежа и парола.

Стъпка 4: Свържете ESP8266 към Arduino

Свържете ESP8266 към Arduino
Свържете ESP8266 към Arduino
Свържете ESP8266 към Arduino
Свържете ESP8266 към Arduino

След като кодът бъде качен, можете да изключите FTDI програмиста и да свържете ESP8266, както е показано на диаграмата. Резисторите се използват като разделители на напрежението, за да се гарантира, че arduino не изпомпва 5V в комуникационните и нулиращите щифтове на ESP8266. Направете тази стъпка върху дъска за отстраняване на грешки, по-късно ще я поставим на прото-платката.

След като ESP8266 е включен, трябва да видите мигаща синя светлина, когато е свързан към захранването, след няколко секунди той трябва да получи времето за Unix от интернет и да го изпрати на arduino, тогава той има празен празен цикъл (), че той седи, докато не бъде нулиран, точно като подаващото устройство от първи ред.

За да се уверите, че ESP8266 работи, ще трябва да качите кода от следващата стъпка в arduino и да отворите серийния монитор.

Стъпка 5: Качване на кода на Arduino и отстраняване на проблеми

Качване на кода на Arduino и отстраняване на проблеми
Качване на кода на Arduino и отстраняване на проблеми

Сега качете кода в arduino nano, отворете серийния монитор, трябва да видите нещо като горния пример. Arduino се нулира, когато отворите серийния монитор, така че ESP8266 ще се нулира едновременно. серийният монитор ще започне да брои секундите от полунощ на 1 януари 1970 г., докато ESP8266 не му изпрати текущото Unix време. Когато това се случи, трябва да видите това:

Това може да отнеме 3-15 секунди, за да работи, така че бъдете търпеливи. Рядко съм виждал да отнеме повече от 10 секунди, но дайте 15 преди да започнете да отстранявате неизправности.

Ако вашият ESP8266 не изпраща времето до arduino, опитайте тези стъпки:

· Уверете се, че всичко е свързано ТОЧНО както трябва

· Проверете отново дали сте въвели правилния SSID и парола на wifi в ESP8266, ако не, ще трябва да го свържете обратно към програмиста на FTDI, за да качите правилната информация, след което да го свържете отново към arduino. (супер дълъг SSID или парола може да причини някои проблеми, но моята wifi мрежа има над 20 знака в двете полета, така че повечето домашни мрежи трябва да са добре)

· Проверете администраторската страница на вашия рутер (ако можете) за свързано устройство, което се появява само когато ESP8266 е включен. За да сте сигурни, че остава включен, докато проверявате това (arduino го деактивира), свържете отново проводника, водещ към нулиращия щифт на ESP8266 директно към 3.3V, като го поддържате ВИСОК, ще запазите ESP8266 включен. Не забравяйте да отмените това, след като проверите.

Стъпка 6: Персонализиране на кода на Arduino

След като вашият ESP8266 е свързан и изпраща време към arduino, програмираното arduino просто ще преброи времето и ще покаже няколко други бита информация за отстраняване на грешки, като изгрев и залез. Можем да персонализираме някои от тези стойности в кода на arduino, останалите са просто там, за да мога да отстраня грешките в цялата система.

За да разберете по -добре как arduino изчислява изгрева и залеза, прочетете документацията в библиотеката Dusk2Dawn. Ще трябва да въведете вашата географска ширина и дължина (ако промените името на местоположението си, уверете се, че е променено навсякъде в кода!) Dusk2Dawn използва вашите GPS координати (които можете да намерите на google maps) и местното време, за да определете кога слънцето изгрява и залязва за минути след полунощ. Променливата minfromMid е текущата минута от полунощ и се сравнява с изгрева, залеза, времето за хранене и полумрака, за да каже на arduino кога какво да прави. Не забравяйте да актуализирате и часовата си зона, по подразбиране е EST.

След като местоположението ви е зададено, задайте времето на здрача, за да кажете на arduino колко дълго искате да бъде здрач. Това контролира продължителността на периода между деня и нощта и се дава в минути. По подразбиране е 90 минути, така че RGBW светлините ще избледняват от деня до нощта или по друг начин за това време.

След това задайте желаното време за хранене. Действителните времена на хранене се задават в метода getTime (), за да се поддържат храненията синхронизирани с ден/нощ. Ако вместо това искате вашата риба да се храни по едно и също време всеки ден, коментирайте относителните настройки и използвайте първоначалните настройки в началото на кода. Не забравяйте, че тези часове са в минути след полунощ. Използването на първоначално, твърдо кодирани часове на хранене може да попречи на осветлението, ако времето за хранене настъпи по време на избледняване между здрач и дневна светлина (при изгрев и залез слънце). По подразбиране за кода е 15 минути преди и след залез и изгрев, съответно. Ако желаете, може да се добави допълнително време за хранене.

След това задайте часа, в който искате arduino да се нулира. Това гарантира, че никой от времето не препълва и не синхронизира отново часовника. Препоръчвам да направите това по средата на деня, когато сте далеч, тъй като процесът на нулиране кара светлините да светят с пълна яркост. През деня това няма да е проблем за рибите, но през нощта или сутрин/вечер светкавицата на светлината може да наруши вашата риба или да развали външния вид на резервоара за няколко секунди, докато се наслаждавате.

И накрая, проверете броя на светодиодите в лентата, която имате, Моята лента има 60, но трябва да актуализирате тази стойност в кода за настройка за колкото много светодиоди използвате.

Стъпка 7: Осветлението

Осветлението
Осветлението

Свържете вашата LED лента, ако все още не сте го направили.

Захранване (червено) до 5V, заземяване (бяло) към маса, сигнал (зелено) към пин 6 (или каквото и да го настроите). След като arduino се нулира, светлините ще бъдат с пълна яркост, докато ESP8266 не изпрати времето до arduino и той определи къде се намира в цикъла на осветление. Най -добре е да настроите това вечер или през нощта, тъй като промяната на светлината ще бъде по -драстична. Ако светлините не се променят в рамките на 30 секунди, нулирайте arduino. Моят код за нулиране трябва да работи, но аз не съм програмист по професия, така че все още може да има няколко грешки тук или там. Можете да проверите дали нулирането работи, като зададете времето за нулиране на минута, след като повторно качите кода и изчакате (секундата за нулиране е рандомизирана, така че действително нулиране може да отнеме 1-2 минути) Можете да направите същия трик по-късно, за да се уверите, че сервото работи, като промените времето за подаване. Просто не забравяйте да промените тези времена, преди да го оставите да работи.

Графикът на осветление по подразбиране е доста прост:

През нощта всички светлини са изключени, освен синьото, което е на най -ниската си настройка (2/255). С наближаването на изгрева синьото се увеличава до пълния си интензитет (255), който достига в началото на здрача. По време на здрача червеното и зеленото се увеличават от 255 при изгрев, червеното, синьото и зеленото са на 255, но дневната светлина е бяла, така че през следващите 2 минути червеното, синьото и зеленото избледняват и бялото избледнява in. През останалата част от деня бялото е с пълна интензивност, до 2 минути преди залез слънце, когато избледнява и се заменя с червено, синьо и зелено отново. При залез слънце осветлението отново влиза в здрача, с изключение на този път червеното и зеленото започват с пълна интензивност и избледняват, оставяйки синьото с пълен интензитет, когато настъпи нощта. Оттук синьото бавно избледнява до най -ниската си стойност, която достига в полунощ.

Друг код съществува в края на скицата на arduino за други режими на осветление, така че не се колебайте да си поиграете с математиката, за да накарате осветлението да избледнее по различен начин или да промени цветовете през различните периоди от деня. Не забравяйте, че математиката се извършва в плаващ формат, но стойностите на цветовете трябва да са ints, така че преобразуването е необходимо между двете с всяка нова математика за осветление, която прилагате.

Стъпка 8: Отпечатване на частите

Ако все още не сте отпечатали частите за това ниво, направете го. Корпусът е с приблизително същия размер като средно голям филтър и ми отне цяла нощ за печат. Почистете частите, поставете разделителя на преградата, с канала нагоре и заобления ръб навън. Сервото е инсталирано по същия начин, както в Tier 1, и ако подменяте Tier 1 система, бункерът, капакът и захранващото колело са идентични, така че няма да се налага да ги отпечатвате отново, ако работят.

Папката.zip съдържа два комплекта STL файлове, един за оригиналния сервомотор SM22, който използвах, а друг за далеч по -често срещания сервомотор SG90. И двете съдържат файловете на Fusion 360, ако искате/трябва да промените някоя от частите. SM22 STL определено си пасват, тъй като те са тези, които съм използвал. Не съм отпечатвал или тествал частите SG90.

За материали препоръчвам да използвате безопасна за храни пластмаса. Използвах Raptor PLA от makergeeks, който се предлага в много цветове и е супер силен, след като го отгреете за 10 минути. Това може да стане чрез кипене на частите, което препоръчвам да направите само за колелото, ако не е напълно подходящо, тъй като отгряването ще свие частите с около.3%.

Отпечатах корпуса отстрани (с горната част обърната отстрани и отворената страна нагоре) Това използва много по -малко поддържащ материал от други ориентации. Бункерът може да бъде отпечатан с главата надолу, за да се избегне целия поддържащ материал върху него. Капакът на бункера също трябва да бъде отпечатан с главата надолу, но големият капак трябва да бъде отпечатан с дясната страна нагоре.

Има и „крайно ограничение“за осигуряване на опора в долната част на корпуса. След като оставих захранващото устройство на място за няколко седмици, забелязах, че то е започнало да провисва и да се огъва от тежестта на захранването и това се отразява на способността на бункера да подава храна в колелото. Просто горещо залепете 1-2 краища към дъното на корпуса, за да поддържате всичко равно.

Стъпка 9: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Използвайте протоборд, за да свържете всичко. Използвах джъмперни проводници, така че не трябваше да запоявам толкова много, но тук ще запоявате най -много. Докато връзките са еднакви, системата ще работи както на макета. Запоях заедно заглавни щифтове, за да създам захранващи "релси" за заземяване, 5V, 3.3V, както и сигнални портове на серво и без захранване 3.3V сигнали към ESP8266 (RX, CH_PD и RST). Ориентирах всички щифтове към долната страна на протоборда, с компонентите отгоре.

След като завършите протоборда, го поставете в горната кухина на корпуса и свържете серво мотора. Осветителните кабели излизат през прореза в капака на корпуса, а захранването се вписва в долната кухина. Долната кухина е заоблена и има лек наклон за източване на всякаква вода, която по някакъв начин успява да проникне в корпуса далеч от електрониката. Свържете положителните и отрицателните клеми на захранването към системата и добавете страничния капак.

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

След това светлинната лента трябва да се добави към резервоара. Свалете капака на резервоара и го изсушете напълно. Уверете се, че повърхността на капака е чиста и суха, преди да добавите светлините. Лентата, която получих, има залепваща подложка, това няма да работи за закрепване на светлинната лента, но ще работи, за да ги постави по ръба на капака (или където и да ги поставите) Капакът на резервоара ми беше с правилния размер за моята лента, така че не трябваше да удължавам никакви проводници. Просто се уверете, че всички открити проводници са покрити с водоустойчиви материали, преди да поставите капака обратно на резервоара. Използвах горещо лепило, за да покрия краищата, но това може да не работи дългосрочно. След като светлините са подредени така, както ви харесват, залепете ги на място. Трябваше да използвам допълнително лепило в ъглите, тъй като LED лентата се повдигна там. Оставете лепилото да изсъхне за няколко минути, преди да поставите капака обратно на резервоара, само за да сте сигурни, че нищо не капе. След като капакът се върне, просто свържете проводниците към arduino.

Подаващото устройство е точно същото като подаващото устройство от първи ред. Сервото се вписва в кухината си със захранващото захранващо колело. Джобът на захранващото колело трябва да сочи към бункера, когато сервомоторът е в позиция 0 (и да се завърти към резервоара в позиция 180). Ако използвате допълнителния вибрационен двигател, запояйте към него няколко оловни проводника и го поставете в бункера, за това има кухина в серво кухината. Изпратете проводниците на двигателя по същия път като серво проводниците и ги свържете към земята и щифта на двигателя на arduino. Горещо залепете бункера за основата.

След като всичко е свързано, можете да включите захранването в стената. Arduino трябва да премине през стартовата си последователност и светлините ще се променят, когато му дойде времето. Ако не, нулирайте дъската, докато не получи времето. Залепих горещо капака на кутията на място, но оставих страничния капак незалепен, за да имам достъп до arduino, за да го нулирам или препрограмирам.

Честито! Вашето хранилище за риба от втори ред е готово! Удивете се на красивото осветление и способността му да нахрани вашата риба, когато сте далеч! Не забравяйте да следите системата през следващите няколко дни, за да сте сигурни, че всичко работи правилно и че рибите ви всъщност се хранят.

Стъпка 10: Първо трябва да внимавате:

Нещата, на които трябва да обърнете внимание първо
Нещата, на които трябва да обърнете внимание първо
Нещата, на които трябва да обърнете внимание първо
Нещата, на които трябва да обърнете внимание първо
Нещата, на които трябва да обърнете внимание първо
Нещата, на които трябва да обърнете внимание първо

Когато за първи път настроих моето, случайно свързах серво към неправилния сигнален щифт, така че рибите не бяха хранени няколко дни, докато не разбрах грешката (бях ги хранел ръчно през нощта в отговор на следващата грешка). Опитайте да зададете времето за хранене, когато е най -вероятно да сте наоколо, за да потвърдите, че рибите ви са били хранени.

Друга грешка, която трябва да следите, е нулирането. Ако например се приберете у дома след залез слънце и резервоарът ви все още е на дневно осветление, има вероятност функцията за нулиране да се провали и arduino никога да не получи времето от ESP8266. Това също означава, че вашите риби не са били хранени от времето за нулиране, така че вероятно трябва да ги храните сами, докато натискате бутона за нулиране на arduino. Сигурен съм на 99%, че елиминирах това, но кодирането не е моята професия, така че не забравяйте да внимавате за това.

Също така не забравяйте да проверявате храната в бункера всяка седмица или две, зареждайте я според нуждите и се уверете, че нищо не се влошава.

Ако заминавате на почивка, направете смяна на водата и друга основна поддръжка на резервоара, преди да тръгнете. Хранилката гарантира само, че храната и осветлението няма да бъдат краят на вашата риба, ако сте отсъствали твърде дълго. Никога повече не трябва да използвате хранилки за почивка!

Препоръчано: