Cuprins:

Alimentatorul automat automat de pește DIY: Nivelul 2: 10 pași (cu imagini)
Alimentatorul automat automat de pește DIY: Nivelul 2: 10 pași (cu imagini)

Video: Alimentatorul automat automat de pește DIY: Nivelul 2: 10 pași (cu imagini)

Video: Alimentatorul automat automat de pește DIY: Nivelul 2: 10 pași (cu imagini)
Video: Cum scrii când începi un caiet nou 2024, Iulie
Anonim
Alimentatorul automat automat de pește DIY: Nivelul 2
Alimentatorul automat automat de pește DIY: Nivelul 2

Alimentatorul Tier 2 este un pas mare față de nivelul 1. Această versiune folosește un modul wifi ESP8266 pentru a sincroniza ceasul arduino pentru a controla programul de alimentare și iluminarea rezervorului.

Pasul 1: De ce veți avea nevoie:

Totul din nivelul 1, cu excepția temporizatorului de lumină

  • ESP8266-01
  • Programator FTDI (pentru a programa ESP8266)
  • Ciocan de lipit
  • Benzi LED 5V RGBW (SK6812 IP 65, alb de zi, am folosit aceasta)
  • Banda de lumină trebuie să fie impermeabilă, deoarece apa se va evapora din rezervor și se va condensa pe capacul rezervorului și se va aprinde singure.
  • Sursa de alimentare de 5V (am folosit-o pe aceasta, arduino NU POATE alimenta toate luminile singure.).
  • Simțiți-vă liber să utilizați orice sursă de alimentare de 5V doriți, asigurați-vă că oferă suficientă energie pentru a alimenta toate luminile.
  • Regulator de tensiune 3.3V
  • ESP8266 funcționează la 3,3 V, de aceea orice altceva este de 5 V, este mai ușor să coborâți 5 până la 3,3 decât să coborâți 12 până la 3,3
  • Rezistoare (1kOhm x2, 2kOhm x2 (sau 1kOhm x4), 10kOhm x1)
  • super-lipici
  • Lipici fierbinte
  • Piese tipărite 3D x8 (sunt furnizate fișiere STL)
  • Decapanti de sârmă (recomand aceste lucruri utile)
  • Breadboard (pentru lucruri protoage)
  • Protoboard / bord de proiect (pentru asamblarea finală)
  • Cablu de alimentare standard pentru computer cu 3 direcții.
  • (opțional) Motor de vibrație al telefonului mobil (pentru a agita buncărul) (am folosit unul dintre acestea)
  • Instalați aceste biblioteci arduino:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Dusk2Dawn.h
  • Adafruit_NeoPixel.h
  • Răbdare.

Pasul 2: Cum funcționează

ESP8266 primește timpul Unix de la un server NIST și îl trece la arduino. Arduino folosește apoi acel moment pentru a determina răsăritul și apusul local și sincroniza ceasul său intern pentru a determina câte minute au trecut de la miezul nopții. Folosind acest timp scurs de la miezul nopții, arduino setează culoarea luminilor și știe când să activeze alimentatorul, care este același mecanism ca și freederul de nivel 1. Setările implicite din codul arduino pe care le-am scris au luminile setate la un ciclu zi / noapte care poate fi controlat până la al doilea pentru estompări netede și sunt sincronizate cu răsăritul și apusul locației dvs. Arduino se resetează, de asemenea, o dată pe zi, pentru a se sincroniza din nou cu serverul NIST și pentru a se asigura că nu există depășiri de temporizator

Pasul 3: Programarea ESP8266

Programarea ESP8266
Programarea ESP8266

Bine, deci ESP8266 este un nenorocit de programat.

Nu este compatibil cu panourile și dacă aveți fire jumper de sex feminin, vă recomand să le folosiți. Dacă ESP8266 dvs. a venit fără niciun firmware instalat ca al meu, va trebui să blocați firmware-ul. Folosiți programatorul FTDI pentru a face acest lucru, există o mulțime de instrucțiuni despre cum să faceți acest lucru în altă parte, dar am furnizat o schemă de cablare pentru comoditate. ASIGURAȚI-VĂ că programatorul FTDI furnizează 3,3V! 5V vă va prăji ESP8266. În diagrama mea, portocaliul conectat între GPI01 și GND ar trebui să fie realizat numai atunci când intermitează firmware-ul ESP8266. GPI01 ar trebui să rămână neconectat atunci când se încarcă codul arduino real în modul.

Apoi, va trebui să încărcați codul real al ESP8266. Folosiți programatorul FTDI de această dată împreună cu IDE-ul arduino. De asemenea, va trebui să descărcați și să instalați toate bibliotecile utilizate. Setările utilizate pentru încărcarea codului cu arduino 1.8 se află la porțiunea comentată la început. ASIGURAȚI-vă că actualizați codul cu rețeaua și parola dvs. wifi.

Pasul 4: Conectați ESP8266 la Arduino

Conectați ESP8266 la Arduino
Conectați ESP8266 la Arduino
Conectați ESP8266 la Arduino
Conectați ESP8266 la Arduino

Odată ce codul este încărcat, puteți deconecta programatorul FTDI și conecta ESP8266 așa cum se arată în diagramă. Rezistențele sunt utilizate ca divizoare de tensiune pentru a vă asigura că arduino nu pompează 5V în pinii de comunicație și resetare a ESP8266. Faceți acest pas pe o placă de pâine pentru depanare, o vom pune pe placa proto mai târziu.

Odată ce ESP8266 este complet conectat, ar trebui să vedeți o lumină albastră bliț când este conectat la alimentare, după câteva secunde mai târziu ar trebui să obțină ora Unix de pe internet și să o trimită la arduino, apoi are o buclă de gol goală () că stă până se resetează, la fel ca alimentatorul de nivel 1.

Pentru a vă asigura că ESP8266 funcționează, va trebui să încărcați codul de la pasul următor la arduino și să deschideți monitorul serial.

Pasul 5: încărcarea codului Arduino și depanare

Încărcarea codului Arduino și depanare
Încărcarea codului Arduino și depanare

Acum încărcați codul în arduino nano, deschideți monitorul serial, ar trebui să vedeți ceva de genul exemplului de mai sus. Arduino se resetează când deschideți monitorul serial, astfel încât ESP8266 va fi resetat în același timp. monitorul serial va începe să numere secundele de la miezul nopții de la 1 ianuarie 1970, până când ESP8266 îi trimite ora Unix curentă. Când se întâmplă acest lucru, ar trebui să vedeți acest lucru:

Poate dura 3-15 secunde pentru ca acest lucru să funcționeze, așa că aveți răbdare. Rar am văzut că durează mai mult de 10 secunde, dar acordați-i 15 înainte de a începe depanarea.

Dacă ESP8266 nu trimite ora la arduino, încercați acești pași:

· Asigurați-vă că totul este conectat EXACT așa cum ar trebui

· Verificați de două ori dacă ați introdus SSID-ul și parola corecte în ESP8266, dacă nu, va trebui să le conectați înapoi la programatorul FTDI pentru a încărca informațiile corecte, apoi reconectați-le la arduino. (un SSID sau o parolă foarte lungă poate cauza unele probleme, dar rețeaua mea wifi are peste 20 de caractere în ambele câmpuri, deci majoritatea rețelelor de domiciliu ar trebui să fie în regulă)

· Verificați pagina de administrator a routerului (dacă puteți) pentru un dispozitiv conectat care apare numai când ESP8266 este pornit. Pentru a vă asigura că rămâne aprins în timp ce bifați acest lucru (arduino îl dezactivează) reconectați firul care duce la pinul de resetare al ESP8266 direct la 3,3V, menținându-l ÎNALT va menține ESP8266 pornit. Asigurați-vă că anulați acest lucru după ce verificați.

Pasul 6: Personalizarea codului Arduino

După conectarea ESP8266 și trimiterea timpului către arduino, arduino-ul programat va număra pur și simplu timpul și va afișa alte câteva informații despre depanare, cum ar fi răsăritul și apusul. Putem personaliza unele dintre aceste valori în codul arduino, restul sunt pur și simplu acolo, așa că aș putea depana întregul sistem.

Pentru a înțelege mai bine modul în care arduino calculează răsăritul și apusul soarelui, citiți documentația din Biblioteca Dusk2Dawn. Va trebui să introduceți latitudinea și longitudinea (dacă schimbați numele locației dvs., asigurați-vă că este schimbat peste tot în cod!) Dusk2Dawn folosește coordonatele GPS (pe care le puteți găsi pe Google Maps) și ora locală, pentru a stabiliți când răsare și apune soarele în câteva minute de la miezul nopții. Variabila minfromMid este minutul curent de la miezul nopții și este comparată cu răsăritul soarelui, apusul soarelui, orele de hrănire și amurg pentru a spune arduino când să facă ce. Asigurați-vă că vă actualizați și fusul orar, implicit este EST.

Odată ce locația dvs. este setată, setați ora crepusculului pentru a spune arduino cât de mult doriți să fie crepusculul. Aceasta controlează cât durează perioada dintre zi și noapte și este dată în câteva minute. Valoarea implicită este de 90 de minute, astfel încât luminile RGBW se vor estompa de la zi la noapte sau invers în acel interval de timp.

Apoi, setați orele de hrănire dorite. Timpii efectivi de hrănire sunt setați în metoda getTime () pentru a menține alimentările sincronizate cu ziua / noaptea. Dacă doriți ca peștii dvs. să fie hrăniți la aceeași oră în fiecare zi, comentați setările relative și utilizați setările inițiale la începutul codului. Amintiți-vă că aceste ore sunt în câteva minute de la miezul nopții. Folosirea timpilor de hrănire inițiali, codificați greu, ar putea interfera cu iluminarea dacă timpul de hrănire aterizează în timpul estompării dintre amurg și lumina zilei (la răsărit și apus). Valoarea implicită pentru cod este 15 minute înainte și după apus și respectiv răsărit. Dacă doriți, se pot adăuga timpi suplimentari de hrănire.

Apoi, setați ora la care doriți să se reseteze arduino. Acest lucru asigură că niciunul dintre temporizări nu se revarsă și nu sincronizează din nou ceasul. Vă recomand să faceți acest lucru să se întâmple la jumătatea zilei, când sunteți plecat, deoarece procesul de resetare face ca luminile să devină luminoase. În timpul zilei, aceasta nu va fi o problemă pentru pești, dar noaptea sau dimineața / seara, fulgerul de lumină ar putea deranja peștele sau ar putea strica aspectul rezervorului pentru câteva secunde în timp ce vă bucurați de el.

În cele din urmă, verificați numărul de LED-uri din banda pe care o aveți, banda mea are 60, dar ar trebui să actualizați această valoare în codul de configurare pentru oricâte LED-uri utilizați.

Pasul 7: Iluminatul

Iluminatul
Iluminatul

Conectați banda LED dacă nu ați făcut-o deja.

Alimentare (roșu) la 5V, împământare (alb) la masă, semnal (verde) la pinul 6 (sau la orice ați setat). Odată ce resetarea arduino-ului, luminile vor fi la luminozitate maximă până când ESP8266 trimite ora către arduino și determină unde se află în ciclul de iluminare. Cel mai bine este să setați acest lucru seara sau noaptea, deoarece schimbarea luminii va fi mai drastică. Dacă luminile nu se schimbă în 30 de secunde, resetați arduino. Codul meu de resetare ar trebui să funcționeze, dar nu sunt programator de profesie, deci este posibil să existe încă câteva erori aici sau acolo. Puteți testa resetarea funcționând setând timpul de resetare la un minut după ce reîncărcați codul și așteptați (secunda de resetare este aleatorie, deci poate dura 1-2 minute pentru a reseta efectiv) Puteți face același truc mai târziu pentru a vă asigura că servo-ul funcționează schimbând timpul de alimentare. Asigurați-vă că schimbați aceste timpuri înainte de a le lăsa să ruleze.

Programul de iluminare implicit este destul de simplu:

Noaptea, toate luminile sunt stinse, cu excepția albastrului, care este la cea mai mică setare (2/255). Pe măsură ce timpul se apropie de răsăritul soarelui, albastrul crește la intensitate maximă (255), pe care îl atinge la începutul amurgului. În amurg, roșu și verde cresc de la 255 până la răsărit. La răsărit, roșu, albastru și verde sunt la 255, dar lumina zilei este albă, deci în următoarele 2 minute roșu, albastru și verde se estompează și albul se estompează în tot restul zilei albul este la intensitate maximă, până la 2 minute înainte de apus, când se estompează și este înlocuit din nou de roșu, albastru și verde. La apusul soarelui, iluminatul reintră în amurg, cu excepția că de această dată roșu și verde încep la intensitate maximă și se estompează, lăsând albastru la intensitate maximă când sosește noaptea. De aici, albastrul se estompează încet la cea mai mică valoare, la care ajunge la miezul nopții.

Există un alt cod la sfârșitul schiței arduino pentru alte moduri de iluminare, așa că nu ezitați să vă jucați cu matematica pentru a obține iluminarea să se estompeze diferit sau pentru a schimba culorile în diferite perioade ale zilei. Amintiți-vă că matematica este realizată în format float, dar valorile culorilor trebuie să fie ints, deci este necesară conversia între cele două cu orice nouă matematică de iluminare pe care o implementați.

Pasul 8: Tipărirea pieselor

Dacă nu ați imprimat încă piesele pentru acest nivel, faceți acest lucru. Carcasa are aproximativ aceeași dimensiune ca o unitate de filtrare de dimensiuni medii și mi-a luat toată noaptea să imprim. Curățați piesele, introduceți separatorul pereților etanși, cu canelura orientată în sus și marginea rotunjită orientată spre exterior. Servo-ul este instalat în același mod ca în Tier 1, iar dacă înlocuiți un sistem Tier 1, buncărul, capacul și roata de alimentare sunt identice, deci nu va trebui să le reimprimați dacă funcționează.

Dosarul.zip conține două seturi de fișiere STL, unul pentru servomotorul SM22 original pe care l-am folosit și altul pentru servo-ul SG90 mult mai comun. Ambele conțin fișierele Fusion 360 dacă doriți / trebuie să modificați oricare dintre părți. STL-urile SM22 se potrivesc cu siguranță, deoarece acestea sunt cele pe care le-am folosit. Nu am imprimat sau testat piesele SG90.

Pentru materiale, recomand utilizarea unui plastic sigur pentru alimente. Am folosit Raptor PLA de la makergeeks, care vine într-o tonă de culori și este foarte puternic după ce l-ați tăiat timp de 10 minute. Acest lucru se poate face prin fierberea pieselor, ceea ce vă recomand să faceți doar pentru roată, dacă nu se potrivește foarte bine, deoarece recoacerea va micșora piesele cu aproximativ.3%.

Am imprimat carcasa pe lateral (cu partea superioară orientată spre lateral și partea deschisă orientată în sus) Aceasta folosește mult mai puțin material de susținere decât alte orientări. Buncărul poate fi imprimat cu capul în jos pentru a evita orice material de susținere de pe el. Capacul buncărului ar trebui, de asemenea, să fie imprimat cu capul în jos, totuși capacul mare ar trebui să fie imprimat cu partea dreaptă în sus.

Există, de asemenea, o piesă „endstop” pentru a oferi suport în partea inferioară a carcasei. După ce am lăsat alimentatorul la locul său timp de câteva săptămâni, am observat că a început să se lase și să se îndoaie de la greutatea sursei de alimentare și asta afectează capacitatea buncărului de a alimenta hrana în roată. Doar lipiți la cald 1-2 capete de capăt în partea inferioară a carcasei pentru a menține totul la nivel.

Pasul 9: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

Folosiți un protoboard pentru a conecta totul. Am folosit fire jumper, așa că nu a trebuit să lipesc la fel de mult, dar aici veți fi cel mai mult lipit. Atâta timp cât conexiunile sunt la fel, sistemul va funcționa așa cum a funcționat pe panoul de verificare. Am lipit pinii antetului pentru a crea "șine" de putere pentru sol, 5V, 3,3V, precum și porturile de semnal pentru servo și non-putere 3,3V semnale la ESP8266 (RX, CH_PD și RST). Am orientat toți știfturile spre partea inferioară a protoboardului, cu componentele în partea de sus.

Odată ce ați completat placa de protecție, introduceți-o în cavitatea superioară a carcasei și conectați servomotorul. Cablurile de iluminat ies pe crestătura capacului carcasei, iar sursa de alimentare se potrivește în cavitatea inferioară. Cavitatea inferioară este rotunjită și are o ușoară pantă pentru a scurge orice apă care reușește cumva să pătrundă în incintă departe de electronică. Conectați bornele pozitive și negative ale sursei de alimentare la sistem și adăugați capacul lateral.

Dacă nu ați făcut deja acest lucru pentru sursa de alimentare, tăiați capătul cablului de alimentare care nu se conectează la perete și dezbrăcați suficient firele, astfel încât să le puteți pune în bornele corecte ale sursei de alimentare. Dacă aveți capete de sertizare pe care le puteți pune pe capete, vă sugerez să le folosiți, dacă nu arama goală va fi bine, asigurați-vă că nimic nu este scurtcircuitat! REȚINEȚI-VĂ faptul că acest lucru va fi conectat la curentul de perete al casei dvs., FIȚI SIGUR ȘI NU MUNCAȚI NICIODATĂ CU SISTEMUL CONECTAT.

Apoi, banda de lumină trebuie adăugată în rezervor. Scoateți capacul rezervorului și uscați-l complet. Asigurați-vă că suprafața capacului este curată și uscată înainte de a adăuga luminile. Banda pe care o am are un suport adeziv, aceasta nu va funcționa pentru a fixa banda ușoară, dar va funcționa pentru a le așeza de-a lungul marginii capacului (sau oriunde le-ați așezați) Capacul rezervorului meu a avut dimensiunea potrivită pentru banda mea, așa că nu a trebuit să extind niciun fir. Asigurați-vă că toate firele expuse sunt acoperite cu materiale impermeabile înainte de a pune capacul înapoi pe rezervor. Am folosit lipici fierbinte pentru a acoperi capetele, dar este posibil să nu funcționeze pe termen lung. Odată ce luminile sunt aranjate cum vă plac, lipiți-le la loc. A trebuit să folosesc adeziv suplimentar în colțuri, de când banda LED s-a ridicat acolo. Lăsați adezivul să se usuce timp de câteva minute înainte de a pune capacul din nou pe rezervor, doar pentru a vă asigura că nu se strecoară nimic. Odată ce capacul este repus, conectați pur și simplu firele la arduino.

Ansamblul alimentatorului este exact același cu alimentatorul de nivel 1. Servo-ul se potrivește în cavitatea sa cu roata de alimentare lipită de el. Buzunarul roții de alimentare trebuie să fie orientat în sus spre buncăr atunci când servo-ul se află în poziția sa 0 (și se rotește spre rezervor în poziția 180). Dacă utilizați motorul de vibrație opțional, lipiți niște fire de plumb și introduceți-l în buncăr, există o cavitate în cavitatea servo pentru acesta. Trimiteți firele de plumb ale motorului prin aceeași cale ca firele servo și conectați-le la masă și pinul motorului de pe arduino. Adeziv la cald buncărul la bază.

Odată ce totul este conectat, puteți conecta sursa de alimentare la perete. Arduino ar trebui să treacă prin secvența de pornire, iar luminile se vor schimba atunci când obține timpul. Dacă nu, resetați placa până când obține timpul. Am lipit la cald capacul carcasei la locul lui, dar am lăsat capacul lateral fără lipici, astfel încât să pot accesa arduino-ul pentru a-l reseta sau reprograma.

Felicitări! Alimentatorul dvs. de pește de nivel 2 este gata! Minunați-vă de lumina frumoasă și capacitatea de a vă hrăni peștii atunci când sunteți plecat! Asigurați-vă că monitorizați sistemul în următoarele câteva zile pentru a vă asigura că totul funcționează corect și că, de fapt, peștii dvs. sunt hrăniți.

Pasul 10: Lucruri de urmărit la început:

Lucruri de urmărit la început
Lucruri de urmărit la început
Lucruri de urmărit la început
Lucruri de urmărit la început
Lucruri de urmărit la început
Lucruri de urmărit la început

Când am configurat-o pentru prima dată, am conectat accidental servo la pinul de semnal greșit, astfel încât peștii nu au fost hrăniți de câteva zile până când am realizat eroarea (îi hrănisem manual noaptea ca răspuns la următoarea eroare). Încercați să setați timpii de hrănire la momentul în care este cel mai probabil să fiți în jur pentru a confirma că peștii dvs. au fost hrăniți.

O altă eroare de urmărit este resetarea. Dacă, de exemplu, ajungeți acasă după apusul soarelui și rezervorul dvs. este încă iluminat în timpul zilei, este posibil ca funcția de resetare să nu reușească și arduino-ul să nu fi primit niciodată timpul de la ESP8266. Aceasta înseamnă, de asemenea, că peștii dvs. nu au fost hrăniți de la momentul resetării, deci probabil ar trebui să-i hrăniți singuri în timp ce apăsați butonul de resetare de pe arduino. Sunt 99% sigur că am eliminat acest lucru, dar codificarea nu este profesia mea, așa că asigurați-vă că aveți grijă de asta.

De asemenea, asigurați-vă că verificați alimentele din buncăr în fiecare săptămână sau două, umpleți-le după cum este necesar și asigurați-vă că nimic nu merge rău.

Dacă plecați în vacanță, asigurați-vă că faceți o schimbare a apei și alte lucrări de întreținere de bază ale rezervorului înainte de a pleca. Alimentatorul se asigură că mâncarea și iluminatul nu vor fi sfârșitul peștilor dvs. dacă sunteți plecat prea mult timp. Nu ar trebui să mai folosiți niciodată alimentatoare de vacanță!

Recomandat: