Sadržaj:

Ultimativni automatski automatizirani hranilica za ribe: Koraci 2: 10 (sa slikama)
Ultimativni automatski automatizirani hranilica za ribe: Koraci 2: 10 (sa slikama)

Video: Ultimativni automatski automatizirani hranilica za ribe: Koraci 2: 10 (sa slikama)

Video: Ultimativni automatski automatizirani hranilica za ribe: Koraci 2: 10 (sa slikama)
Video: Dependabot: How to Update Your Project's Dependencies Automatically 2024, Juli
Anonim
Ultimate DIY automatska hranilica za ribe: Nivo 2
Ultimate DIY automatska hranilica za ribe: Nivo 2

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

Korak 1: Šta ć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, koristio 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.
  • 3.3V regulator napona
  • 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
  • Hot Glue
  • 3D štampani 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 kabl za napajanje računara sa 3 kraka.
  • (opcionalno) Motor za vibracije mobitela (za miješanje spremnika) (koristio sam jedan od ovih)
  • Instalirajte ove arduino biblioteke:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Strpljenje.

Korak 2: Kako to funkcionira

ESP8266 dobiva Unix vrijeme od NIST servera i prosljeđuje ga arduinu. Arduino tada koristi to vrijeme za određivanje lokalnog izlaska i zalaska sunca i sinhronizaciju svog unutrašnjeg sata 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 ciklus dan/noć koji se mogu kontrolirati do sekunde radi glatkih blijeđenja i sinhronizirati se s izlaskom i zalaskom vaše lokacije. Arduino se takođe resetuje jednom dnevno kako bi se ponovo sinhronizovao sa NIST serverom i osigurao da nema prelivanja tajmera

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 kratkospojnike, preporučujem ih. Ako je vaš ESP8266 došao bez ikakvog instaliranog firmvera kao što je moj, morat ćete ažurirati firmver. Za to upotrijebite FTDI programer, postoji mnogo uputstava o tome 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, narandžasto spojeno između GPI01 i GND treba biti napravljeno samo kada se treperi firmver ESP8266. GPI01 bi trebao ostati nepovezan prilikom postavljanja 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 biblioteke. Postavke korištene 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 što se kôd učita, možete odspojiti FTDI programator i spojiti ESP8266 kao što je prikazano na dijagramu. Otpornici se koriste kao razdjelnici napona kako bi se osiguralo da arduino ne pumpa 5 V u komunikacijske i pinove za poništavanje ESP8266. Učinite ovaj korak na ploči za uklanjanje grešaka, kasnije ćemo je staviti na proto ploču.

Nakon što je ESP8266 sve uključeno, trebali biste vidjeti plavo svjetlo kada 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 će početi odbrojavati sekunde od ponoći 1. januara 1970. godine, 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:

· Uvjerite se da je sve ožičeno točno onako 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 učitali ispravne podatke, a zatim ih ponovo 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 stranicu administratora vašeg usmjerivača (ako možete) za povezani uređaj koji se pojavljuje samo kada je ESP8266 uključen. Kako biste bili sigurni da ostaje uključen dok ovo 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 će jednostavno 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 greške u cijelom sistemu.

Da biste bolje razumjeli kako arduino izračunava izlazak i zalazak sunca, pročitajte dokumentaciju u biblioteci 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 mapama) i lokalno vrijeme za odrediti kada sunce izlazi i zalazi za nekoliko minuta od ponoći. Varijabla minfromMid je trenutna minuta od ponoći, a uspoređuje se sa izlaskom, zalaskom sunca, vremenom hranjenja i sumrakom kako bi se arduinu reklo kada šta da radi. Ažurirajte i svoju vremensku zonu, zadana vrijednost je EST.

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

Zatim postavite željeno vrijeme hranjenja. Stvarna vremena hranjenja postavljaju se u metodi getTime () kako bi hranjenje bilo sinhronizirano 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. Zapamtite da su ovo vremena u minutima od ponoći. Korištenje početnih, strogo kodiranih vremena hranjenja moglo bi ometati osvjetljenje ako vrijeme hranjenja padne za vrijeme 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 za koje želite da se arduino resetira. Ovo osigurava da se ništa od vremena ne prelijeva i ponovno sinkronizira sat. Preporučujem da se to dogodi sredinom dana, kada ste odsutni, jer proces resetiranja dovodi do potpunog osvjetljenja svjetla. Ribama danju to neće predstavljati problem, ali noću ili ujutro/uveče, bljesak svjetla mogao bi poremetiti vašu ribu ili uništiti izgled akvarijuma 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: Osvjetljenje

The Lighting
The Lighting

Priključite LED traku ako već niste.

Napajanje (crveno) do 5V, uzemljenje (bijelo) na masu, signal (zeleno) na pin 6 (ili bilo što drugo na što ste ga postavili). 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 ovo postaviti 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 resetiranje bi trebao funkcionirati, ali nisam programer po struci pa može biti prisutno nekoliko grešaka ovdje ili ondje. Možete provjeriti funkcioniranje resetiranja postavljanjem vremena za resetiranje na minutu nakon što ste ponovo učitali kôd i čekali (sekunda za resetiranje 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 osvjetljenja je prilično 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 dostiže na početku sumraka. Tokom sumraka, crvena i zelena pojačavaju se do 255. Pri izlasku sunca, crvena, plava i zelena su sve na 255, ali je dnevna svjetlost bijela, pa u naredne 2 minute crvena, plava i zelena nestaju, a bijela blijedi in. Tokom ostatka dana bijela boja je punog intenziteta, sve do 2 minute prije zalaska sunca, kada nestaje i zamjenjuje je ponovo crvenom, plavom i zelenom. Sa zalaskom sunca, svjetlo ponovo 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 dostiže u ponoć.

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

Korak 8: Štampanje dijelova

Učinite to ako još niste odštampali dijelove za ovaj nivo. Kućište je otprilike iste veličine kao filter jedinica srednje veličine i trebalo mi je čitavu noć za štampanje. 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 Tieru 1, a ako mijenjate Tier 1 sustav, lijevak, poklopac i kotač za napajanje su identični, pa ih nećete morati ponovno štampati ako rade.

Mapa.zip sadrži dva seta STL datoteka, jedan za originalni SM22 servo motor koji sam koristio i 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, jer sam ih ja koristio. Nisam štampao niti testirao delove 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 uradite samo za kotač ako ne pristaje jer će žarenje smanjiti dijelove za oko 0,3%.

Odštampao sam kućište sa strane (sa vrhom okrenutim na stranu, a otvorenom stranom prema gore). Ovo koristi mnogo manje materijala za podršku od drugih orijentacija. Lijevak se može ispisati naopako kako bi se izbjegao sav potporni materijal na njemu. Poklopac rezervoara takođe treba odštampati naopako, međutim veliki poklopac treba odštampati sa desne strane nagore.

Tu je i 'endstop' komad koji pruža potporu dnu kućišta. Nakon što sam napajač 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 hrani hranu u točak. Samo vruće zalijepite 1-2 kraka na dno kućišta kako bi sve ostalo ravno.

Korak 9: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Koristite protoboard za povezivanje svega. Koristio sam kratkospojne žice pa nisam morao toliko lemiti, ali ovdje ćete najviše lemiti. Sve dok su veze iste, sistem će raditi kao na matičnoj ploči. Spajao sam pinove zaglavlja kako bih stvorio "šine" za uzemljenje, 5V, 3.3V, kao i signalne portove servo i napajanja 3.3V signala na ESP8266 (RX, CH_PD i RST). Sve pinove sam orijentisao prema donjoj strani protobora, sa 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 napajanje se uklapa 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 sistem i dodajte bočni poklopac.

Ako to već niste učinili za svoje napajanje, odrežite kraj kabela za napajanje koji se ne uključuje u zid i ogolite žice dovoljno da ih možete staviti u odgovarajuće priključke za napajanje. Ako imate uvijene krajeve koje možete staviti na krajeve, predlažem da ih upotrijebite, ako ne, 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 SISTEMOM 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 pričvršćivanje svjetlosne trake, ali će uspjeti postaviti ih uz rub poklopca (ili gdje god ih postavite) Poklopac rezervoara je odgovarajuće veličine za moju traku, tako da nisam morao produžavati nikakve žice. Samo pazite da sve izložene žice budu prekrivene vodootpornim materijalima prije nego što vratite poklopac na spremnik. Koristio sam vruće ljepilo za prekrivanje krajeva, ali to možda neće dugoročno djelovati. 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.

Sastav ulagača je potpuno isti kao ulagač Tier 1. Servo se uklapa u svoju šupljinu sa zalijepljenim dovodnim točkom. Džep kotača za uvlačenje bi trebao biti usmjeren prema spremniku kada je servo u položaju 0 (i rotirati prema spremniku u položaju 180). Ako koristite opcionalni motor za vibracije, lemite na njega neke olovne žice i umetnite ih u spremnik, 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 kroz redoslijed pokretanja, a svjetla će se promijeniti kad za to dođe vrijeme. Ako nije, 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 da ga resetiram ili reprogramiram.

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

Korak 10: Na šta prvo trebate obratiti pažnju:

Na šta prvo treba obratiti pažnju
Na šta prvo treba obratiti pažnju
Na šta prvo treba obratiti pažnju
Na šta prvo treba obratiti pažnju
Na šta prvo treba obratiti pažnju
Na šta prvo treba obratiti pažnju

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 grešku). Pokušajte postaviti vrijeme hranjenja na vrijeme kada ćete najverovatnije biti u blizini kako biste potvrdili da su vaše ribe hranjene.

Još jedna greška na koju treba paziti je resetiranje. Na primjer, ako dođete kući nakon zalaska sunca, a vaš spremnik još uvijek svijetli po danu, velika je vjerovatnoća 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.

Svakako provjerite hranu u spremniku svake sedmice ili dvije, napunite je po potrebi i pobrinite se da ništa ne pođe po zlu.

Ako odlazite na godišnji odmor, prije odlaska provjerite jeste li promijenili 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čuje se: