Spisu treści:

Najlepszy automatyczny podajnik ryb dla majsterkowiczów: poziom 2: 10 kroków (ze zdjęciami)
Najlepszy automatyczny podajnik ryb dla majsterkowiczów: poziom 2: 10 kroków (ze zdjęciami)

Wideo: Najlepszy automatyczny podajnik ryb dla majsterkowiczów: poziom 2: 10 kroków (ze zdjęciami)

Wideo: Najlepszy automatyczny podajnik ryb dla majsterkowiczów: poziom 2: 10 kroków (ze zdjęciami)
Wideo: 25 SZYBKICH PORAD DLA POCZĄTKUJĄCYCH DO TERRARIA 2024, Lipiec
Anonim
Najlepszy automatyczny podajnik ryb dla majsterkowiczów: poziom 2
Najlepszy automatyczny podajnik ryb dla majsterkowiczów: poziom 2

Podajnik poziomu 2 to duży krok naprzód w stosunku do poziomu 1. Ta wersja wykorzystuje moduł Wi-Fi ESP8266 do synchronizacji zegara arduino w celu kontrolowania harmonogramu karmienia i oświetlenia zbiornika.

Krok 1: Czego będziesz potrzebować:

Wszystko na poziomie 1 z wyjątkiem licznika światła

  • ESP8266-01
  • Programator FTDI (do programowania ESP8266)
  • Lutownica
  • Taśma LED 5V RGBW (SK6812 IP 65, biała dzienna, ja używałem tej)
  • Listwa świetlna musi być wodoodporna, ponieważ woda wyparuje ze zbiornika i skondensuje się na pokrywie zbiornika i sama zapali się.
  • Zasilacz 5V (użyłem tego, arduino NIE MOŻE samodzielnie zasilać wszystkich świateł.).
  • Możesz użyć dowolnego zasilacza 5 V, który chcesz, tylko upewnij się, że zapewnia wystarczającą moc do zasilania wszystkich świateł.
  • Regulator napięcia 3.3V
  • ESP8266 działa na 3,3 V, dlatego wszystko inne to 5 V, łatwiej jest zejść z 5 do 3,3 niż z 12 do 3,3
  • Rezystory (1kOhm x2, 2kOhm x2 (lub 1kOhm x4), 10kOhm x1)
  • Super klej
  • Gorący klej
  • Części drukowane 3D x8 (dostarczone pliki STL)
  • Ściągacze do przewodów (polecam te przydatne rzeczy)
  • Deska do krojenia chleba (do prototypowania rzeczy)
  • Płyta prototypowa/Płyta projektowa (do montażu końcowego)
  • Standardowy 3-stykowy kabel zasilający do komputera.
  • (opcjonalnie) Silnik wibracyjny telefonu komórkowego (do poruszania lejem) (użyłem jednego z nich)
  • Zainstaluj te biblioteki arduino:
  • ESP8266WiFi.h
  • WiFiUdp.h
  • TimeLib.h
  • Zmierzch2Świt.h
  • Adafruit_NeoPixel.h
  • Cierpliwość.

Krok 2: Jak to działa

ESP8266 pobiera czas uniksowy z serwera NIST i przekazuje go do arduino. Arduino wykorzystuje ten czas do określenia lokalnego wschodu i zachodu słońca oraz zsynchronizowania swojego wewnętrznego zegara, aby określić, ile minut upłynęło od północy. Wykorzystując czas, który upłynął od północy, arduino ustawia kolor świateł i wie, kiedy aktywować podajnik, który jest tym samym mechanizmem, co freeder Tier 1. Domyślne ustawienia w kodzie arduino, które napisałem, mają światła ustawione na cykl dzień / noc, który można kontrolować z dokładnością do sekundy, aby uzyskać płynne zanikanie i są zsynchronizowane ze wschodem i zachodem słońca w Twojej lokalizacji. Arduino resetuje się również raz dziennie, aby ponownie zsynchronizować się z serwerem NIST i upewnić się, że nie ma żadnych przepełnień timera

Krok 3: Programowanie ESP8266

Programowanie ESP8266
Programowanie ESP8266

Dobra, więc ESP8266 to drań do zaprogramowania.

Nie jest przyjazny dla płytki stykowej i jeśli masz żeńskie przewody połączeniowe, polecam ich użycie. Jeśli twój ESP8266 został dostarczony bez zainstalowanego oprogramowania układowego, tak jak mój, będziesz musiał sflashować oprogramowanie układowe. Użyj programatora FTDI, aby to zrobić, jest wiele instrukcji, jak to zrobić gdzie indziej, ale dla wygody podałem schemat połączeń. UPEWNIJ SIĘ, że programator FTDI dostarcza 3,3V! 5V usmaży Twój ESP8266. Na moim schemacie pomarańczowy podłączony między GPI01 a GND powinien być wykonany tylko podczas flashowania oprogramowania układowego ESP8266. GPI01 powinien pozostać niepodłączony podczas przesyłania aktualnego kodu arduino do modułu.

Następnie musisz przesłać rzeczywisty kod ESP8266. Tym razem użyj programatora FTDI wraz z arduino IDE. Będziesz także musiał pobrać i zainstalować wszystkie używane biblioteki. Ustawienia używane do przesyłania kodu z arduino 1.8 znajdują się w zakomentowanej części na początku. PAMIĘTAJ, aby zaktualizować kod za pomocą sieci Wi-Fi i hasła.

Krok 4: Podłącz ESP8266 do Arduino

Podłącz ESP8266 do Arduino
Podłącz ESP8266 do Arduino
Podłącz ESP8266 do Arduino
Podłącz ESP8266 do Arduino

Po wgraniu kodu można odłączyć programator FTDI i podłączyć ESP8266 jak pokazano na schemacie. Rezystory są używane jako dzielniki napięcia, aby upewnić się, że arduino nie pompuje 5 V do komunikacji ESP8266 i nie resetuje pinów. Wykonaj ten krok na tablicy chlebowej w celu debugowania, umieścimy go później na płycie prototypowej.

Gdy ESP8266 jest już podłączony, powinieneś zobaczyć niebieskie światło migające, gdy jest podłączony do zasilania, po kilku sekundach powinien pobrać czas Unix z Internetu i wysłać go do arduino, a następnie ma pustą pętlę void ().

Aby upewnić się, że ESP8266 działa, będziesz musiał wgrać kod z następnego kroku do arduino i otworzyć monitor szeregowy.

Krok 5: Przesyłanie kodu Arduino i rozwiązywanie problemów

Przesyłanie kodu Arduino i rozwiązywanie problemów
Przesyłanie kodu Arduino i rozwiązywanie problemów

Teraz wgraj kod do arduino nano, otwórz monitor szeregowy, powinieneś zobaczyć coś takiego jak w powyższym przykładzie. Arduino resetuje się po otwarciu monitora szeregowego, więc ESP8266 zostanie zresetowany w tym samym czasie. monitor szeregowy zacznie odliczać sekundy od północy 1 stycznia 1970 roku, aż ESP8266 wyśle mu aktualny czas uniksowy. Kiedy tak się stanie, powinieneś zobaczyć to:

Może to potrwać od 3 do 15 sekund, więc bądź cierpliwy. Rzadko widziałem, żeby trwało to dłużej niż 10 sekund, ale daj mu 15, zanim zaczniesz rozwiązywać problemy.

Jeśli twój ESP8266 nie wysyła czasu do arduino, wypróbuj następujące kroki:

· Upewnij się, że wszystko jest podłączone DOKŁADNIE tak, jak powinno

· Dokładnie sprawdź, czy wpisałeś poprawny identyfikator SSID i hasło wifi do ESP8266, jeśli nie, będziesz musiał podłączyć go z powrotem do programatora FTDI, aby przesłać prawidłowe informacje, a następnie ponownie podłączyć go do arduino. (bardzo długi identyfikator SSID lub hasło mogą powodować pewne problemy, ale moja sieć Wi-Fi ma ponad 20 znaków w obu polach, więc większość sieci domowych powinna być w porządku)

· Sprawdź stronę administratora routera (jeśli możesz) pod kątem podłączonego urządzenia, które pojawia się tylko wtedy, gdy ESP8266 jest włączony. Aby upewnić się, że pozostaje włączony, gdy to sprawdzasz (arduino go wyłącza), ponownie podłącz przewód prowadzący do pinu resetującego ESP8266 bezpośrednio do 3,3 V, utrzymywanie go na wysokim poziomie utrzyma ESP8266 włączony. Pamiętaj, aby cofnąć to po sprawdzeniu.

Krok 6: Dostosowywanie kodu Arduino

Po podłączeniu ESP8266 i wysłaniu czasu do arduino, zaprogramowane arduino po prostu policzy czas i wyświetli kilka innych informacji o debugowaniu, takich jak wschód i zachód słońca. Możemy dostosować niektóre z tych wartości w kodzie arduino, reszta jest po prostu tam, abym mógł debugować cały system.

Aby lepiej zrozumieć, w jaki sposób arduino oblicza wschody i zachody słońca, przeczytaj dokumentację w bibliotece Dusk2Dawn. Będziesz musiał wprowadzić szerokość i długość geograficzną (jeśli zmienisz nazwę swojej lokalizacji, upewnij się, że jest ona zmieniona wszędzie w kodzie!) Dusk2Dawn używa twoich współrzędnych GPS (które można znaleźć na mapach Google) i czasu lokalnego, aby określić, kiedy słońce wschodzi i zachodzi w ciągu kilku minut od północy. Zmienna minfromMid jest bieżącą minutą od północy i jest porównywana ze wschodem i zachodem słońca, porami karmienia i zmierzchem, aby poinformować arduino, kiedy ma robić. Pamiętaj, aby zaktualizować również swoją strefę czasową, domyślna to EST.

Po ustawieniu lokalizacji ustaw czas zmierzchu, aby poinformować arduino, jak długo ma trwać zmierzch. Kontroluje to, jak długo trwa okres między dniem a nocą i jest podawany w minutach. Wartość domyślna to 90 minut, więc światła RGBW będą zanikać z dnia na noc lub na odwrót w tym czasie.

Następnie ustaw żądane godziny karmienia. Rzeczywiste godziny karmienia są ustawiane w metodzie getTime(), aby zapewnić synchronizację karmienia z dniem/nocą. Jeśli zamiast tego chcesz, aby Twoje ryby były karmione codziennie o tej samej porze, skomentuj odpowiednie ustawienia i użyj ustawień początkowych na początku kodu. Pamiętaj, że te czasy są w minutach od północy. Używanie początkowych, zakodowanych na sztywno czasów karmienia może zakłócać oświetlenie, jeśli czas karmienia spadnie podczas zanikania między zmierzchem a światłem dziennym (o wschodzie i zachodzie słońca). Domyślny kod to odpowiednio 15 minut przed i po zachodzie słońca i wschodzie słońca. Jeśli chcesz, możesz dodać dodatkowe czasy karmienia.

Następnie ustaw czas, w którym chcesz zresetować arduino. Gwarantuje to, że żaden z taktowania nie przepełni się i nie zsynchronizuje zegara. Zalecam, aby stało się to w środku dnia, gdy jesteś poza domem, ponieważ proces resetowania powoduje, że światła przechodzą na pełną jasność. W dzień nie będzie to problemem dla ryb, ale w nocy lub rano/wieczorem błysk światła może niepokoić rybę lub zepsuć wygląd zbiornika na kilka sekund, gdy się nim cieszysz.

Na koniec sprawdź liczbę diod LED w pasku, który masz, Mój pasek ma 60, ale powinieneś zaktualizować tę wartość w kodzie konfiguracji dla liczby używanych diod LED.

Krok 7: Oświetlenie

Oświetlenie
Oświetlenie

Podłącz pasek LED, jeśli jeszcze tego nie zrobiłeś.

Zasilanie (czerwony) do 5V, masa (biały) do masy, sygnał (zielony) do pinu 6 (lub cokolwiek to ustawisz). Po zresetowaniu arduino światła będą miały pełną jasność, dopóki ESP8266 nie wyśle czasu do arduino i określi, gdzie znajduje się w cyklu świecenia. Najlepiej ustawić to wieczorem lub w nocy, ponieważ zmiana światła będzie bardziej drastyczna. Jeśli światła nie zmienią się w ciągu 30 sekund, zresetuj arduino. Mój kod resetowania powinien działać, ale nie jestem programistą z zawodu, więc może być jeszcze kilka błędów tu i tam. Możesz sprawdzić, czy reset działa, ustawiając czas resetowania na minutę po ponownym przesłaniu kodu i odczekaniu (sekunda resetowania jest losowa, więc zresetowanie może zająć 1-2 minuty) Możesz zrobić tę samą sztuczkę później aby upewnić się, że serwo działa, zmieniając czas karmienia. Tylko pamiętaj, aby cofnąć te czasy przed pozostawieniem go w ruchu.

Domyślny harmonogram oświetlenia jest dość prosty:

W nocy wszystkie światła są wyłączone z wyjątkiem niebieskiego, który ma najniższe ustawienie (2/255). W miarę zbliżania się do wschodu słońca błękit wzrasta do pełnej intensywności (255), którą osiąga na początku zmierzchu. O zmierzchu czerwony i zielony wzrastają do 255. O wschodzie słońca czerwony, niebieski i zielony są na 255, ale światło dzienne jest białe, więc w ciągu następnych 2 minut czerwony, niebieski i zielony zanikają, a biel zanika in. Przez resztę dnia biel ma pełną intensywność, do 2 minut przed zachodem słońca, kiedy znika i zostaje ponownie zastąpiona przez czerwony, niebieski i zielony. O zachodzie słońca światło ponownie przechodzi w zmierzch, z tym że tym razem czerwone i zielone zaczynają się z pełną intensywnością i gasną, pozostawiając niebieskie z pełną intensywnością, gdy nadejdzie noc. Odtąd błękit powoli blednie z powrotem do swojej najniższej wartości, którą osiąga o północy.

Inny kod znajduje się na końcu szkicu arduino dla innych trybów oświetlenia, więc możesz swobodnie bawić się matematyką, aby zmienić oświetlenie lub zmienić kolory w różnych porach dnia. Pamiętaj, że matematyka jest wykonywana w formacie float, ale wartości kolorów muszą być intami, więc konieczna jest konwersja między nimi w przypadku każdej nowej matematyki oświetlenia, którą zaimplementujesz.

Krok 8: Drukowanie części

Jeśli nie wydrukowałeś jeszcze części dla tego poziomu, zrób to. Obudowa ma mniej więcej taki sam rozmiar jak średniej wielkości filtr, a wydrukowanie zajęło mi całą noc. Oczyść części, włóż przegrodę grodziową rowkiem skierowanym do góry i zaokrągloną krawędzią skierowaną na zewnątrz. Serwo jest instalowane w taki sam sposób jak w Tier 1, a jeśli wymieniasz system Tier 1, zbiornik, pokrywa i koło podające są identyczne, więc nie będziesz musiał ich ponownie drukować, jeśli działają.

Folder.zip zawiera dwa zestawy plików STL, jeden dla oryginalnego serwomotoru SM22, którego użyłem, a drugi dla znacznie bardziej popularnego serwo SG90. Oba zawierają pliki Fusion 360, jeśli chcesz/musisz zmodyfikować dowolną część. STL SM22 zdecydowanie do siebie pasują, bo to właśnie z nich korzystałem. Nie drukowałem ani nie testowałem części SG90.

W przypadku materiałów zalecam używanie plastiku bezpiecznego dla żywności. Użyłem Raptor PLA od makegeeków, który jest dostępny w wielu kolorach i jest super mocny po wygrzewaniu przez 10 minut. Można to zrobić przez gotowanie części, co polecam zrobić tylko dla koła, jeśli nie pasuje, ponieważ wyżarzanie zmniejsza części o około 0,3%.

Wydrukowałem obudowę na boku (góra skierowana do boku i otwarta strona skierowana do góry). Wykorzystuje to znacznie mniej materiału podporowego niż inne orientacje. Zasobnik można wydrukować do góry nogami, aby uniknąć na nim wszelkiego materiału podporowego. Wieko leja również powinno być zadrukowane do góry nogami, jednak duża pokrywa powinna być zadrukowana prawą stroną do góry.

Istnieje również element „endstop” zapewniający wsparcie dolnej części obudowy. Po pozostawieniu podajnika na miejscu przez kilka tygodni zauważyłem, że zaczął uginać się i wyginać pod ciężarem zasilacza, co wpływało na zdolność podajnika do podawania pokarmu do koła. Wystarczy przykleić na gorąco 1-2 ograniczniki do dolnej części obudowy, aby wszystko było poziomo.

Krok 9: Montaż

montaż
montaż
montaż
montaż
montaż
montaż
montaż
montaż

Użyj płyty prototypowej, aby wszystko połączyć. Użyłem zworek, więc nie musiałem tyle lutować, ale tutaj będziesz lutował najwięcej. Dopóki wszystkie połączenia są takie same, system będzie działał tak, jak na płytce prototypowej. Przylutowałem do siebie kołki rozgałęźne, aby utworzyć "szyny" zasilania dla masy, 5 V, 3,3 V, a także porty sygnałowe serwo i sygnały 3,3 V bez zasilania do ESP8266 (RX, CH_PD i RST). Zorientowałem wszystkie szpilki w kierunku dolnej części płyty prototypowej, z komponentami na górze.

Po wykonaniu płyty prototypowej włóż ją do górnej wnęki obudowy i podłącz serwomotor. Kable oświetleniowe wychodzą przez wycięcie w pokrywie obudowy, a zasilacz mieści się w dolnej wnęce. Dolna wnęka jest zaokrąglona i lekko nachylona, aby odprowadzić wodę, która w jakiś sposób przedostanie się do obudowy z dala od elektroniki. Podłącz dodatnie i ujemne zaciski zasilacza do systemu i dodaj boczną pokrywę.

Jeśli jeszcze tego nie zrobiłeś dla swojego zasilacza, odetnij koniec kabla zasilającego, który nie jest podłączony do ściany i usuń przewody na tyle, aby można było umieścić je we właściwych zaciskach zasilacza. Jeśli masz zaciskane końcówki, które możesz założyć na końcówki, sugeruję ich stosowanie, jeśli nie goła miedź będzie w porządku, tylko upewnij się, że nic nie zwiera! PAMIĘTAJ, że będzie on podłączony do gniazdka ściennego w Twoim domu, BĄDŹ BEZPIECZNY I NIGDY NIE PRACUJ Z PODŁĄCZONYM SYSTEMEM.

Następnie do zbiornika należy dodać pasek świetlny. Zdejmij pokrywę zbiornika i całkowicie go wysusz. Przed dodaniem lampek upewnij się, że powierzchnia pokrywy jest czysta i sucha. Pasek, który otrzymałem, ma podkład samoprzylepny, to nie zadziała, aby zabezpieczyć pasek świetlny, ale zadziała, aby umieścić je wzdłuż krawędzi pokrywy (lub gdziekolwiek je umieścisz) Moja pokrywa zbiornika miała odpowiedni rozmiar dla mojego paska, więc nie musiałem przedłużać żadnych przewodów. Tylko upewnij się, że wszystkie odsłonięte przewody są pokryte wodoodpornymi materiałami, zanim założysz pokrywę z powrotem na zbiornik. Użyłem kleju na gorąco, aby pokryć końce, ale może to nie zadziałać na dłuższą metę. Gdy światła zostaną ustawione tak, jak lubisz, przyklej je na swoim miejscu. Musiałem użyć dodatkowego kleju w rogach, ponieważ pasek LED uniósł się tam. Pozostaw klej do wyschnięcia na kilka minut, zanim ponownie założysz pokrywkę na zbiornik, aby upewnić się, że nic nie kapie. Gdy pokrywka zostanie ponownie założona, po prostu podłącz przewody do arduino.

Zespół podajnika jest dokładnie taki sam jak podajnik Tier 1. Serwo mieści się we wnęce z przyklejonym do niego kołem podajnika. Kieszeń koła podajnika powinna być skierowana w górę leja zasypowego, gdy serwo jest w pozycji 0 (i obracać się w kierunku zbiornika w pozycji 180). Jeśli używasz opcjonalnego silnika wibracyjnego, przylutuj do niego kilka przewodów i włóż go do leja, we wnęce serwomechanizmu znajduje się na to wnęka. Przeprowadź przewody silnika tą samą ścieżką, co przewody serwa i podłącz je do masy i pinu silnika na arduino. Zasobnik przyklej na gorąco do podstawy.

Gdy wszystko jest już podłączone, możesz podłączyć zasilacz do ściany. Arduino powinno przejść przez sekwencję startową, a światła zmienią się, gdy nadejdzie czas. Jeśli nie, zresetuj tablicę, aż nadejdzie czas. Przykleiłem pokrywę obudowy na gorąco, ale pozostawiłem odklejoną pokrywę boczną, abym mógł uzyskać dostęp do arduino w celu zresetowania lub przeprogramowania.

Gratulacje! Twój karmnik do ryb Tier 2 jest gotowy! Podziwiaj ładne oświetlenie i możliwość karmienia ryb, gdy Cię nie ma! Pamiętaj, aby monitorować system przez kilka następnych dni, aby upewnić się, że wszystko działa prawidłowo i że twoje ryby są rzeczywiście karmione.

Krok 10: Rzeczy, na które należy zwrócić uwagę na początku:

Rzeczy, na które należy zwrócić uwagę na początku
Rzeczy, na które należy zwrócić uwagę na początku
Rzeczy, na które należy zwrócić uwagę na początku
Rzeczy, na które należy zwrócić uwagę na początku
Rzeczy, na które należy zwrócić uwagę na początku
Rzeczy, na które należy zwrócić uwagę na początku

Kiedy po raz pierwszy ustawiałem swoją, przypadkowo podłączyłem serwo do niewłaściwego pinu sygnałowego, więc ryby nie były karmione przez kilka dni, dopóki nie zdałem sobie sprawy z błędu (karmiłem je ręcznie w nocy w odpowiedzi na kolejny błąd). Spróbuj ustawić pory karmienia na najbardziej prawdopodobne, że będziesz w pobliżu, aby potwierdzić, że twoje ryby zostały nakarmione.

Kolejnym błędem, na który należy zwrócić uwagę, jest reset. Jeśli na przykład wrócisz do domu po zachodzie słońca, a twój czołg nadal świeci w dzień, prawdopodobnie funkcja resetowania nie powiodła się, a arduino nigdy nie otrzymał czasu z ESP8266. Oznacza to również, że twoje ryby nie były karmione od czasu resetowania, więc prawdopodobnie powinieneś je nakarmić samodzielnie, naciskając przycisk resetowania na arduino. Jestem na 99% pewien, że to wyeliminowałem, ale kodowanie nie jest moim zawodem, więc uważaj na to.

Pamiętaj również o sprawdzaniu żywności w zasobniku co tydzień lub dwa, uzupełniaj je w razie potrzeby i upewnij się, że nic się nie zepsuje.

Jeśli wyjeżdżasz na wakacje, upewnij się, że przed wyjazdem dokonałeś wymiany wody i innych podstawowych czynności konserwacyjnych. Karmnik zapewnia tylko, że jedzenie i oświetlenie nie będą końcem twojej ryby, jeśli nie będzie cię zbyt długo. Nigdy więcej nie powinieneś już używać wakacyjnych podajników!

Zalecana: