Sadržaj:

Najbolji ultimativni automatski ulagač ribe: Učinite 2: 10 koraka (sa slikama)
Najbolji ultimativni automatski ulagač ribe: Učinite 2: 10 koraka (sa slikama)

Video: Najbolji ultimativni automatski ulagač ribe: Učinite 2: 10 koraka (sa slikama)

Video: Najbolji ultimativni automatski ulagač ribe: Učinite 2: 10 koraka (sa slikama)
Video: SUMMER TIPS For Fish Tank Owners 2024, Srpanj
Anonim
Ultimativni automatski automat za hranjenje riba: Uredi 2
Ultimativni automatski automat za hranjenje riba: Uredi 2

Tier 2 Feeder veliki je napredak u odnosu na Tier 1. Ova verzija koristi WiFi modul ESP8266 za sinkronizaciju arduino sata za kontrolu rasporeda hranjenja i osvjetljenja spremnika.

Korak 1: Ono što će vam trebati:

Sve u Tieru 1 osim mjerača svjetla

  • ESP8266-01
  • FTDI programer (za programiranje ESP8266)
  • Lemilica
  • 5V RGBW LED traka (SK6812 IP 65, bijela dnevna svjetlost, koristila sam ovu)
  • Svjetlosna traka mora biti vodootporna jer će voda ispariti iz spremnika i kondenzirati se na poklopcu spremnika i samim svjetlima.
  • Napajanje od 5V (koristio sam ovaj, arduino NE MOŽE sam napajati sva svjetla.).
  • Slobodno upotrijebite bilo koje 5V napajanje koje želite, samo budite sigurni da pruža dovoljno energije za napajanje svih svjetala.
  • Regulator napona 3.3V
  • ESP8266 radi na 3.3V, zato je sve ostalo 5V, lakše je spustiti 5 na 3.3 nego s 12 na 3.3
  • Otpornici (1kOhm x2, 2kOhm x2 (ili 1kOhm x4), 10kOhm x1)
  • super ljepilo
  • Vruće ljepilo
  • 3D ispisani dijelovi x8 (isporučuju se STL datoteke)
  • Skidači žica (preporučujem ove korisne stvari)
  • Oglasna ploča (za izradu prototipova)
  • Protoboard/Projektna ploča (za završnu montažu)
  • Standardni kabel za napajanje računala s 3 zupca.
  • (izborno) Vibracijski motor mobitela (za miješanje spremnika) (koristio sam jedan od ovih)
  • Instalirajte ove arduino knjižnice:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Strpljenje.

Korak 2: Kako to radi

ESP8266 dobiva Unix vrijeme od NIST poslužitelja i prosljeđuje ga arduinu. Arduino tada koristi to vrijeme za određivanje lokalnog izlaska i zalaska sunca te sinkronizira svoj unutarnji sat kako bi odredio koliko je minuta prošlo od ponoći. Koristeći ovo proteklo vrijeme od ponoći, arduino postavlja boju svjetla i zna kada treba aktivirati ulagač, što je isti mehanizam kao oslobađač Tier 1. Zadane postavke u arduino kodu koji sam napisao imaju svjetla postavljena na dan/noć ciklus koji se može kontrolirati do sekunde radi glatkog blijeđenja i sinkronizirati s izlaskom i zalaskom vaše lokacije. Arduino se također resetira jednom dnevno kako bi se ponovno sinkronizirao s NIST poslužiteljem i osigurao da nema preljeva timera

Korak 3: Programiranje ESP8266

Programiranje ESP8266
Programiranje ESP8266

U redu, znači ESP8266 je kopile za programiranje.

Nije prilagođen matičnoj ploči, a ako imate ženske žice za kratkospojnike, preporučujem da ih koristite. Ako je vaš ESP8266 došao bez ikakvog ugrađenog firmvera kao što je moj, morat ćete ažurirati firmver. Za to upotrijebite FTDI programer, postoji mnogo uputa kako to učiniti drugdje, ali za praktičnost sam dao shemu ožičenja. PROVJERITE da FTDI programer daje 3.3V! 5V će ispržiti vaš ESP8266. Na mom dijagramu narančasta spojena između GPI01 i GND trebala bi biti označena samo pri bljeskanju firmvera ESP8266. GPI01 bi trebao ostati nepovezan prilikom učitavanja stvarnog arduino koda u modul.

Zatim ćete morati učitati stvarni kod ESP8266. Ovaj put upotrijebite FTDI programer zajedno s arduino IDE -om. Također ćete morati preuzeti i instalirati sve korištene knjižnice. Postavke koje se koriste za učitavanje koda s arduinom 1.8 nalaze se u komentariranom dijelu na početku. OBAVEZNO ažurirajte kôd sa svojom WiFi mrežom i lozinkom.

Korak 4: Spojite ESP8266 na Arduino

Spojite ESP8266 na Arduino
Spojite ESP8266 na Arduino
Spojite ESP8266 na Arduino
Spojite ESP8266 na Arduino

Nakon učitavanja koda možete odspojiti FTDI programator i spojiti ESP8266 kao što je prikazano na dijagramu. Otpornici se koriste kao razdjelnici napona kako bi bili sigurni da arduino ne pumpa 5V u komunikacijske i resetirajuće pinove ESP8266. Učinite ovaj korak na ploči za otkrivanje pogrešaka, kasnije ćemo je staviti na proto ploču.

Nakon što je ESP8266 sve uključeno, trebali biste vidjeti plavo svjetlo kad je spojeno na napajanje, nakon nekoliko sekundi bi trebalo dobiti Unix vrijeme s interneta i poslati to na arduino, tada ima praznu petlju void () u koji se nalazi dok se ne resetira, baš kao i ulagač razine 1.

Da biste bili sigurni da ESP8266 radi, morat ćete prenijeti kôd iz sljedećeg koraka na arduino i otvoriti serijski monitor.

Korak 5: Prijenos Arduino koda i rješavanje problema

Prijenos Arduino koda i rješavanje problema
Prijenos Arduino koda i rješavanje problema

Sada prenesite kôd na arduino nano, otvorite serijski monitor, trebali biste vidjeti nešto poput gornjeg primjera. Arduino se resetira kada otvorite serijski monitor, pa će se ESP8266 istovremeno resetirati. serijski monitor počet će odbrojavati sekunde od ponoći 1. siječnja 1970., sve dok mu ESP8266 ne pošalje trenutno Unix vrijeme. Kada se to dogodi, trebali biste vidjeti ovo:

Može proći 3-15 sekundi dok ovo ne uspije, pa budite strpljivi. Rijetko sam vidio da traje duže od 10 sekundi, ali dajte 15 prije nego što počnete rješavati probleme.

Ako vaš ESP8266 ne šalje vrijeme na arduino, pokušajte sljedeće:

· Provjerite je li sve ožičeno TOČNO kako bi trebalo

· Dvaput provjerite jeste li u ESP8266 unijeli ispravan Wi -Fi SSID i lozinku, ako ne, morat ćete ih spojiti na FTDI programer da biste prenijeli točne podatke, a zatim ih ponovno spojite na arduino. (super dugačak SSID ili lozinka mogu uzrokovati neke probleme, ali moja WiFi mreža ima više od 20 znakova u oba polja pa bi većina kućnih mreža trebala biti u redu)

· Provjerite administratorsku stranicu usmjerivača (ako možete) za povezani uređaj koji se prikazuje samo kada je ESP8266 uključen. Kako biste bili sigurni da ostaje uključen dok to provjeravate (arduino ga onemogućuje), ponovno spojite žicu koja vodi do pin -a za resetiranje ESP8266 izravno na 3,3 V, držanjem na visokoj razini ESP8266 će ostati uključen. Poništite ovo nakon provjere.

Korak 6: Prilagođavanje Arduino koda

Nakon što je vaš ESP8266 spojen i šalje vrijeme na arduino, programirani arduino jednostavno će odbrojati vrijeme i prikazati nekoliko drugih bitova informacija za otklanjanje pogrešaka, poput izlaska i zalaska sunca. Neke od ovih vrijednosti možemo prilagoditi u arduino kodu, ostale su jednostavno tu kako bih mogao otkloniti pogreške u cijelom sustavu.

Da biste bolje razumjeli kako arduino izračunava izlazak i zalazak sunca, pročitajte dokumentaciju u knjižnici Dusk2Dawn. Morat ćete unijeti svoju zemljopisnu širinu i dužinu (ako promijenite naziv svoje lokacije, provjerite je li promijenjen svugdje u kodu!) Dusk2Dawn koristi vaše GPS koordinate (koje možete pronaći na google kartama) i lokalno vrijeme za odrediti kada sunce izlazi i zalazi za nekoliko minuta od ponoći. Varijabla minfromMid trenutačna je minuta od ponoći, a uspoređuje se s izlaskom, zalaskom sunca, vremenom hranjenja i sumrakom kako bi se arduinu reklo kada što učiniti. Ažurirajte i svoju vremensku zonu, zadana vrijednost je EST.

Nakon što postavite svoju lokaciju, postavite vrijeme sumraka da arduinu kaže koliko dugo želite da traje sumrak. Time se kontrolira koliko dugo traje razdoblje između dana i noći, a zadano je u minutama. Zadana vrijednost je 90 minuta, pa će svjetla RGBW nestati od dana do noći ili na drugi način u tom razdoblju.

Zatim postavite željeno vrijeme hranjenja. Stvarna vremena hranjenja postavljaju se u metodi getTime () kako bi hranjenje bilo sinkronizirano s danom/noću. Ako umjesto toga želite da se vaša riba hrani u isto vrijeme svaki dan, komentirajte relativne postavke i upotrijebite početne postavke na početku koda. Upamtite da su ta vremena u minutama od ponoći. Korištenje početnih, strogo kodiranih vremena hranjenja moglo bi ometati osvjetljenje ako vrijeme hranjenja padne tijekom blijeđenja između sumraka i dnevnog svjetla (pri izlasku i zalasku sunca). Zadana vrijednost za kôd je 15 minuta prije i poslije zalaska sunca odnosno izlaska sunca. Ako želite, može se dodati dodatno vrijeme hranjenja.

Zatim postavite vrijeme kada želite da se arduino resetira. Time se osigurava da se ništa od vremena ne prelijeva i ponovno sinkronizira sat. Preporučujem da se to dogodi sredinom dana, kad ste odsutni, jer postupak resetiranja uzrokuje da svjetla zasjaju. Ribama danju to neće predstavljati problem, no noću ili ujutro/navečer bljesak svjetla mogao bi poremetiti vašu ribu ili uništiti izgled spremnika na nekoliko sekundi dok uživate.

Na kraju, provjerite broj LED dioda na traci koju imate, Moja traka ima 60, ali ovu vrijednost trebate ažurirati u kodu za postavljanje za koliko god LED dioda koristite.

Korak 7: Rasvjeta

Rasvjeta
Rasvjeta

Priključite LED traku ako već niste.

Napajanje (crveno) do 5V, uzemljenje (bijelo) na masu, signal (zeleno) na pin 6 (ili na što god ga namjestite). Nakon što se arduino resetira, svjetla će biti pune jačine sve dok ESP8266 ne pošalje vrijeme arduinu i ne odredi gdje se nalazi u ciklusu osvjetljenja. Najbolje je postaviti ovo navečer ili noću jer će promjena svjetla biti drastičnija. Ako se svjetla ne promijene u roku od 30 sekundi, resetirajte arduino. Moj kôd za poništavanje bi trebao raditi, ali ja nisam programer po struci pa može biti prisutno nekoliko grešaka ovdje ili ondje. Možete provjeriti funkcioniranje resetiranja postavljanjem vremena resetiranja na minutu nakon što ste ponovno učitali kôd i čekali (sekunda za poništavanje je nasumična, pa može proći 1-2 minute da se zapravo resetira) Isti trik možete učiniti kasnije uključite kako biste bili sigurni da servo radi promjenom vremena uvlačenja. Samo promijenite ovo vrijeme prije nego što ga ostavite da radi.

Zadani raspored rasvjete prilično je jednostavan:

Noću su sva svjetla isključena, osim plave, koja je na najnižoj postavci (2/255). Kako se vrijeme približava izlasku sunca, plava se povećava do punog intenziteta (255), koji doseže na početku sumraka. Tijekom sumraka, crvena i zelena se povećavaju od 255 do 255. Pri izlasku sunca, crvena, plava i zelena su sve na 255, ali je dnevno svjetlo bijelo, pa u sljedeće 2 minute crvena, plava i zelena nestaju, a bijela blijedi in. Tijekom ostatka dana bijela boja je punog intenziteta, sve do 2 minute prije zalaska sunca, kada nestaje i zamjenjuje se crvenom, plavom i zelenom bojom. S zalaskom sunca, osvjetljenje ponovno ulazi u sumrak, osim što ovaj put crvena i zelena počinju punim intenzitetom i nestaju, ostavljajući plavo punim intenzitetom kada dođe noć. Odavde plava boja polako blijedi na najnižu vrijednost koju doseže u ponoć.

Drugi kôd postoji na kraju arduino skice za druge načine osvjetljenja, pa se slobodno poigrajte s matematikom kako biste osvijetlili drugačije ili promijenili boje u različitim razdobljima dana. Zapamtite da je matematika izvedena u float formatu, ali vrijednosti boje moraju biti ints, pa je potrebna konverzija između njih s bilo kojom novom matematikom osvjetljenja koju implementirate.

Korak 8: Ispis dijelova

Učinite to ako još niste ispisali dijelove za ovu razinu. Kućište je otprilike iste veličine kao i jedinica filtera srednje veličine i trebalo mi je čitavu noć za ispis. Očistite dijelove, umetnite pregradni razdjelnik, s utorom prema gore i zaobljenim rubom prema van. Servo je instaliran na isti način kao i na Tier 1, a ako mijenjate Tier 1 sustav, lijevak, poklopac i kotač za napajanje su identični, pa ih nećete morati ponovno ispisivati ako rade.

Mapa.zip sadrži dva seta STL datoteka, jedan za originalni SM22 servo motor koji sam koristio, a drugi za daleko češći SG90 servo. Obje sadrže datoteke Fusion 360 ako želite/trebate promijeniti bilo koji dio. SM22 STL -ovi se definitivno uklapaju, budući da su oni oni koje sam ja koristio. Nisam ispisao niti testirao dijelove SG90.

Za materijale preporučujem upotrebu plastike sigurne za hranu. Koristio sam Raptor PLA iz makergeeksa, koji dolazi u tonu boja i super je jak nakon što ga odgrijavate 10 minuta. To se može učiniti kuhanjem dijelova, što vam preporučujem da učinite samo za kotač ako ne pristaje jer će žarenje smanjiti dijelove za oko 0,3%.

Ispisao sam kućište sa strane (s vrhom okrenutim na stranu, a otvorenom stranom prema gore). Za ovo je potrebno puno manje potpornog materijala nego u drugim smjerovima. Lijevak se može ispisati naopako kako bi se izbjegao sav potporni materijal na njemu. Poklopac lijevka također bi trebao biti ispisan naopako, međutim veliki poklopac treba biti otisnut s desne strane prema gore.

Tu je i 'endstop' komad za pružanje potpore na dnu kućišta. Nakon što sam hranilac ostavio na mjestu nekoliko tjedana, primijetio sam da je počeo popuštati i savijati se od težine izvora napajanja, što je utjecalo na sposobnost lijevka da unosi hranu u kotač. Samo vruće zalijepite 1-2 kraka na dno kućišta kako bi sve ostalo ravno.

Korak 9: Montaža

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština

Upotrijebite protoboard za povezivanje svega. Koristio sam kratkospojne žice pa nisam morao toliko lemiti, ali ovdje ćete najviše lemiti. Sve dok su veze sve iste, sustav će raditi kao na matičnoj ploči. Spajao sam pinove zaglavlja kako bih stvorio "tračnice" za uzemljenje, 5V, 3.3V, kao i signalne portove servo i napajanja 3.3V signala na ESP8266 (RX, CH_PD i RST). Orijentirao sam sve igle prema donjoj strani protobora, s komponentama na vrhu.

Nakon što dovršite protoboard, umetnite ga u gornju šupljinu kućišta i spojite servo motor. Kablovi za osvjetljenje izlaze kroz zarez na poklopcu kućišta, a izvor napajanja staje u donju šupljinu. Donja šupljina je zaobljena i ima blagi nagib za ispuštanje vode koja na neki način uspijeva ući u kućište dalje od elektronike. Spojite pozitivne i negativne priključke napajanja na sustav i dodajte bočni poklopac.

Ako to već niste učinili za napajanje, odrežite kraj kabela za napajanje koji se ne uključuje u zid i ogolite žice dovoljno da ih možete staviti u ispravne priključke napajanja. Ako imate uvijene vrhove koje možete staviti na krajeve, predlažem da ih upotrijebite, ako ne i goli bakar će biti u redu, samo budite sigurni da ništa ne kratki! ZAPAMTITE da će ovo biti uključeno u zidnu struju vašeg doma, BUDITE SIGURNI I NIKADA NE RADITE SA SUSTAVOM UKLJUČENIM.

Zatim, svjetlosnu traku treba dodati u spremnik. Uklonite poklopac spremnika i potpuno ga osušite. Prije dodavanja svjetla provjerite je li površina poklopca čista i suha. Traka koju sam dobio ima ljepljivu podlogu, ovo neće funkcionirati za učvršćivanje svjetlosne trake, ali radit će tako da se postavi uz rub poklopca (ili gdje god ih postavite) Poklopac spremnika je odgovarajuće veličine za moju traku, pa nisam morao produžavati nikakve žice. Samo pazite da sve izložene žice budu prekrivene vodonepropusnim materijalima prije nego što vratite poklopac na spremnik. Upotrijebio sam vruće ljepilo za prekrivanje vrhova, ali to možda neće djelovati dugoročno. Kad svjetla rasporedite kako vam se sviđaju, zalijepite ih na mjesto. Morao sam koristiti dodatno ljepilo u uglovima jer se LED traka podigla gore. Pustite da se ljepilo osuši nekoliko minuta prije nego što vratite poklopac na spremnik, samo da biste bili sigurni da ništa ne kaplje. Nakon što se poklopac vrati, jednostavno spojite žice na arduino.

Sklop ulagača potpuno je isti kao ulagač Tier 1. Servo se uklapa u svoju šupljinu sa zalijepljenim dovodnim kotačem. Džep kotača za uvlačenje trebao bi biti usmjeren prema spremniku kad je servo u položaju 0 (i rotirati prema spremniku u položaju 180). Ako koristite opcijski motor za vibracije, lemite na njega neke olovne žice i umetnite ga u lijevak, za to postoji šupljina u servo šupljini. Pošaljite olovne žice motora istim putem kao i servo žice i spojite ih na masu i iglu motora na arduinu. Vruće zalijepite lijevak na podnožje.

Nakon što je sve spojeno, možete priključiti napajanje u zid. Arduino bi trebao proći niz pokretanja, a svjetla će se promijeniti kad za to dođe vrijeme. U protivnom resetirajte ploču dok ne dobije vremena. Vruće sam zalijepio poklopac kućišta, ali ostavio bočni poklopac nezalijepljenim kako bih mogao pristupiti arduinu kako bih ga resetirao ili reprogramirao.

Čestitamo! Vaša hranilica za ribu drugog reda je gotova! Divite se lijepoj rasvjeti i njezinoj sposobnosti da nahranite svoju ribu kad ste odsutni! U sljedećih nekoliko dana svakako nadgledajte sustav kako biste bili sigurni da sve radi ispravno i da se vaše ribe, zapravo, hrane.

Korak 10: Prvo na što morate paziti:

Na što morate paziti u početku
Na što morate paziti u početku
Na što morate paziti u početku
Na što morate paziti u početku
Na što morate paziti u početku
Na što morate paziti u početku

Kad sam prvi put postavio svoj, slučajno sam spojio servo na pogrešan signalni pin, pa se ribe nisu hranile nekoliko dana dok nisam shvatio grešku (hranio sam ih ručno noću kao odgovor na sljedeću pogrešku). Pokušajte postaviti vrijeme hranjenja na vrijeme kada ćete najvjerojatnije biti u blizini kako biste potvrdili da su vaše ribe hranjene.

Još jedna pogreška na koju trebate paziti je resetiranje. Na primjer, ako dođete kući nakon zalaska sunca, a vaš spremnik još uvijek svijetli po danu, velika je vjerojatnost da funkcija poništavanja nije uspjela, a arduino nikada nije dobio vrijeme od ESP8266. To također znači da se vaše ribe nisu hranile od vremena resetiranja, pa biste ih vjerojatno trebali sami hraniti dok pritisnete gumb za resetiranje na arduinu. Siguran sam da sam ovo eliminirao 99%, ali kodiranje nije moja profesija pa pripazite na to.

Također provjerite hranu u spremniku svakih tjedan ili dva, napunite je prema potrebi i pazite da ništa ne pođe po zlu.

Odlazite li na godišnji odmor, prije odlaska svakako promijenite vodu i ostalo osnovno održavanje spremnika. Hranilica samo osigurava da hrani i osvjetljenju neće biti kraj vaše ribe ako predugo niste bili prisutni. Nikada više ne biste trebali koristiti hranilice za odmor!

Preporučeni: