Skocz do zawartości

Wielokanałowy sterownik akwarium jako element automatyki domowej


Karolus

Pomocna odpowiedź

Witajcie

Chciałbym przedstawić tu swój projekt Sterownika do akwarium pracującego w systemie automatyki domowej opartej na Domoticzu.

Pomysł i historia projektu
Ponad rok temu wpadliśmy z żoną na pomysł założenia akwarium, pomysł jak pomysł, ale im więcej czytałem tym więcej kombinowałem, a jako że jestem elektronikiem to i pomysłów przybywało mi z każdym dniem 🙂
Pierwsza próba budowy sterownika polegała na wykorzystaniu Arduino nano i stworzeniu samodzielnego układu pracującego lokalnie. Tyle że już w trakcie pisania kodu stwierdziłem że sterowanie sterowaniem, ale fajnie by było móc zrobić coś zdalnie, a przede wszystkim móc sprawdzić zdalnie co dzieje się w akwarium (temperatura, stan lamp itp). Tak zaczęła się moja przygoda z Domoticzem i szeroko pojętym IoT.

Opis projektu
Sam sterownik zbudowany jest na Arduino Pro mini, natomiast do komunikacji z serwerem wykorzystana jest platforma Mysensors zbudowana na modułach NRF24L01. Jak wcześniej pisałem sterownik pracuje w systemie mojej domowej automatyki opartej o serwer Domoticza, pracujący na RaspberryPi 3B.

Na chwile obecną sterownik realizuje następujące funkcje:

  1. cztery kanały ON/OFF (przekaźniki 10A 250V), sterowanie: grzałka, filtr, falownik, chłodzenie (wentylatory w pokrywie). Z uwagi na bezpieczeństwo mieszkańców akwarium filtr podpięty jest pod styki NC przekaźnika, tzn, domyślnie jest on włączony, a możemy go wyłączyć.
  2. 16 kanałów PWM (z tranzystorami IRF520 jako elementy wykonawcze), sterowanie lampami LED, ściemnianie podświetlenia wyświetlacza, sterownie pracą falownika, rezerwa.
  3. funkcja "Karmienie" i "Serwis", załączane z lokalnej klawiatury, pierwsza umożliwia czasowe (5min) wyłączenie filtra, falownika i wentylatorów, druga umożliwia wyłączenie trybu automatyki i przejście w tryb serwisowy (przydatne przy pracach porządkowych w zbiorniku).
  4. pomiar temperatury w akwarium (czujniki DS18B20), układ zrobiony jest tak że może obsłużyć nieskończenie wiele termometrów, w praktyce w mniejszym zbiorniku mam 2 w większym 3 i to wystarcza. Dodatkowo można wybrać czy automatyka sterowania grzaniem/chłodzeniem korzysta z jednego z termometrów czy z wartości średniej wszystkich wskazań.
  5. zabezpieczenie przed przegrzaniem i wychłodzeniem wody (bezwarunkowe wyłączenie/włączenie grzania/chłodzenia w temperaturach skrajnych)
  6. pomiar temperatury zewnętrznej
  7. pomiar poziomu oświetlenia zewnętrznego

Schemat blokowy sterownika przedstawiam na poniższym rysunku

Rysunek1.thumb.jpg.5c2a31c84d9e522af68d8d12e47fd21f.jpg
Jak widać większość układów pracuje na magistrali I2C, sprawia to że całość jest projektem rozwojowym, a wszelkie możliwe dodatkowe funkcje ograniczone są tylko wyobraźnią i.... pojemnością pamięci wykorzystanego Arduino 😉
Kanały PWM zrealizowane są na module PCA 9685, a jako elementy wykonawcze służą tranzystory IRF520 (oczywiście można zastosować inne MOSFETy), moduł z przekaźnikami podłączony jest do magistrali I2C poprzez expander PCF8574.

Zarządzanie sterownikiem
Podstawowe sterowanie pracą sterownika możliwe jest z lokalnej klawiatury, natomiast i informacje o pracy sterownika (temperatura, czas, poziom światła poszczególnych kanałów LED, stan urządzeń wykonawczych itp) wyświetlane są bezpośrednio na wyświetlaczu LCD 20x4.
Pełne sterownie możliwe jest poprzez serwer Domoticza, za pośrednictwem strony www (poniżej przykładowy zrzut ekranu) i/lub aplikacji na androida.

domo.thumb.jpg.661593e8bb7cba2f789a1e55a4b2c9ac.jpg

Teraz czas na kilka zdjęć elementów sterownika:
Moduł arduino z przetwornica 3,3V, expanderem PCF 8574 i modułem NRF24L01 zmontowane są na płytce uniwersalnej, która osadzona jest na module przekaźników tworząc "kanapkę"

sterownik.thumb.jpg.6187f15f3fb9119228e64c52e663fe7c.jpg       z_gory.thumb.jpg.d943cf34cbd1391337c13555f2e4929c.jpg

Widok "kanapki" płytki uniwersalnej z arduino i modułu z przekaźnikami

pwm.thumb.jpg.baf66d1e4197221d0d326f736a359896.jpg

Moduł wykonawczy na tranzystorach IRF (sześć kanałów do sterowania lampami LED)

przek.thumb.jpg.e65d51be03f3b9b185fbf371f8f3ed04.jpg

Moduł przekaźników

lcd.thumb.jpg.ebbcd0b9c32a4f15948ae94e4f20c6fc.jpg

Wyświetlacz LCD

Problemy napotkane przy realizacji projektu

  1. konieczne było wymuszenie niższej częstotliwości pracy platformy mysensors z powodu zegara jakim taktowane jest zastosowane arduino
  2. niestabilna praca modułów NRF, konieczne było dodanie elektrolitów (dałem 330u bo takie miałem :)) jak najbliżej pinów zasilających modułu (lutowałem bezpośrednio na tych pinach)
  3. okresowe zawieszanie i/lub przekłamanie odczytu temperatury z termometrów DS18B20, nie doszedłem przyczyny, wiec dodałem możliwość zdalnego resetu arduino (wiem że to tylko zaleczenie problemu a nie rozwiązanie, ale tymczasowo zdaje egzamin)
  4. zbyt małą pamięć programu zastosowanego modułu arduino, zastanawiam się czy nie przejść na ESP8266 z EasyESP
  5. konieczność zbudowania obudowy 😉

 

 

Edytowano przez Karolus
  • Lubię! 1
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

zrobiłem podobne na ESP8266. ESP ma wystarczającą ilość flash, że dało się postawić pełną stronę WWW, dodałem jeden patent czyli licznik CO2 bąbelków na diodach IR i regulacje mikro zaworu CO2 opartą o silnik krokowy. Niestety akwarium już zlikwidowane. Miał być jeszcze pH metr ale nie doszło do budowy. fajny ten portal html. mój był tekstowy, a parametry akwarium były zapisywane w pamięci flash do pliku csv. zapisywałem pomiar temperatury, pomiar bąbli co2 i dane. w przypadku zbyt dużej ilości bąbli co2 układ wyłączał elektrozawór. esp rozszerzałem o dodatkowe porty na i2c. programista i elektronik ze mnie żaden, ale jak to zaczęło działać to frajda była. chodziło 3 lata bez problemów. 

  • Lubię! 1
Link do komentarza
Share on other sites

Rozbudowa w oparciu o i2c jest banalna, dlatego pisałem że ograniczeniem jest wyobraźnia i wielkość pamięci procesora. Z tym  ze podłączając całość do środowiska IoT "przewalamy" spora część roboty na serwer. U mnie sprzętowo (poprzez arduino) obsługiwane są jedynie urządzenia w sensie interfejsu I/O wszelkie reguły zarządzania, kolejnością włączania, czy ściemnieniem/rozjaśnieniem oświetlenia "tworzone" są na serwerze i po radiu przesyłane do arduino.

Niestety mam wrażenie że Mysensors nie jest zbyt stabilne, może to wina modułów NRF, może samego środowiska, a może.... moja (programistą to ja się na pewno nie czuje) 😉
Co jakiś czas pojawiają mi się błędy w transmisji, których przyczyny nie jestem w stanie namierzyć, nie mówiąc już o rozwiązaniu. Dlatego myślę przeniesieniu sterownika na ESP z EasyESP, na pierwszy rzut oka takie przeniesienie, dzięki obsłudze przez domoticza, powinno być banalne.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

moje rozwiązanie było niezależne od serwera. działało samodzielnie na esp. dziś pewnie bym sprzęgał stm32 z esp, bo odkryłem timery 😉 zresztą dzięki forbotowi. miałem jedynie opcje wysyłania danych na serwer, ale nie korzystałem z tego. miałem też zrobione dozowanie 5 nawozów, ale element wykonawczy szwankował - był oparty o serwa i strzykawki, był to błąd bo sole mineralne krystalizowały w strzykawkach i sie tłoczki zacinały. sterować wszystkim można było przez neta, bo było podpięte po wifi. faktycznie ogranicza tylko wyobraźnia, no i umiejętności C. jak patrze na mój kod do tego sterownika, to masakra..... jak by to pisał Kali. dziś jestem niewiele lepszy, ale czasem coś tam dłubne. Obecnie robie sobie starowanie silnikami do lego technic, silniki też własne. lepiłem enkodery samodzielnie oparte na diodach IR, fajna zabawa. Ja jestem zachwycony mikrokontrolerami. teraz mam dosyć ciekawe zadanie bo padło mi sterowanie temperaturą w lodówce i będę robić własny termostat - proste jak budowa cepa, ale czasu brak. Robiłem też sterowanie kolejki lego na IR, miał być duży projekt sterowanie zwrotnicami, rozpoznawanie wagonów po NFC, sterowanie rozłączaniem wagonów itp. no i polutowałem część druciarstwa i leży, a już nie pamiętam co miało być jak....

znalazłem na yt mój stary film jak to działało, sorry że Ci demoluje wątek

tu jak pompowało wodę, przy solach już nie było tak różowo 😞

 

 

Edytowano przez adam1004a
  • Lubię! 1
Link do komentarza
Share on other sites

fiuuuuuu ładna cena, owszem możliwości dużo więcej, ale nie ma też części tego co ma mój 🙂

Więc po za zabawą i odkrywaniem świata IoT, doszło mi jeszcze poczucie oszczędności 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

no gotowe rozwiązania są zawsze droższe. nasze DIY jest rozwojowe, otwierasz obudowe i dolepiasz 😉 forbot za przewodnika - dla mnie był, bo o mikrokontrolerach nie miałem zielonego pojęcia. droga jest sąda pH dobrej jakości - polska. No i nasz sytem ma wifi 😉 powiadamianie SMS też miałem w planach, ale na tanim module GSM, nawet testowałem. 

Edytowano przez adam1004a
  • Lubię! 1
Link do komentarza
Share on other sites

niby fajnie, ale menu sterowane klawiszami i ustawienia to niezbyt jest wygodne pobaw się wifi i esp. na nim można postawić całkiem duży serwis www, wygoda konfigurowania dużo wygodniejsza niż klawiszologia no i możliwość zdalnego podglądu. ale sterownik klasa wykonanie, mój to było druciarstwo do potęgi. ja miałem ustawioną synchronizację zegara z netem co 24h, bo moduł zegara miałem mocno niedokładny. taki sterownik akwarium to jest całkiem skomplowany projekt.

ja doszedłem do wniosku że w moim projekcie wyświetlacz i klawisze są zbędne bo wszystko jest na www. Ale, że projekt zakładał klawiszologie i wyświetlacz, a dopiero później rozbudowałem o www, to miałem te dwie opcje. arduino jest fajne, ale ja wole esp, a ostatnio jestem zakochany w stm32. arduino ma dla mnie wadę 5V, a stm32 i esp to 3.3V i łatwo to spiąć. Jak by esp miało ze 4 timery to była by bajeczka. mam nawet w swoich zbiorach esp32 bo chińczyk się pomylił i mi to przysłał, ale jeszcze się tym nie bawiłem. stm32 i arduino ma bogatą dokumentację, a esp średniawo. tandem stm32 i esp to jest mega zestaw

  • Lubię! 1
Link do komentarza
Share on other sites

Obydwa rozwiązania mają swoje wady i zalety.
Sterownik "lokalny" daje moim zdaniem większą niezawodność, kosztem braku możliwości "zdalnej" ingerencji.
Sterownik z dostępem przez www, daje dużo większe możliwości kontroli, ale.... wystarczy żeby w domu padł net, router, serwer czy coś innego i już mamy problem. Co gorsze jeśli padnie net to nawet nie mamy możliwości próby ratowania systemu. Każdy kto ma/miał akwarium łatwo może sobie wyobrazić co się stanie jak podczas 2 tyg nieobecności światło zapali się na stałe (o grzałce to już nie wspominam) 😉
Dlatego u siebie podstawowe funkcje ochrony wsadziłem do arduino, zawsze wtedy pozostaje jeszcze kwestia zawieszenia samego arduino... ale jeśli nie pomoże biblioteka WDT to zawsze można dodać funkcje zdalnego resetu i/lub możliwość krótkiego odpięcia zasilania.

 

Link do komentarza
Share on other sites

e nie zgadzam sie, sterownik na esp chodzi jako AP lub Client. jak traci dostęp do rutera to przechodzi na opcje AP i co parę godzin wymuszał próbę połączenia jako client, tak miałem zrobione. przez 3 lata użytkowania nie zawiesił sie ani razu, ale miałem zrobiony autoreset jak system nie wysyłał pakietu co jakiś tam czas (na drugim mikrokontrolerze, nie zrobił resetu ni razu). na esp działającym lokalnie jest poteżna możliwość ingerencji. można nawet wgrywać nowy firmware po wifi. przez pewien czas miałem nawet na ruterze przekierowane porty i był dostęp z neta bezpośredni, system prosił jednak o hasło dostępowe. jak padnie router to nie ma to znaczenia dla funkcjonowania sterownika. wszelkie nastawy miałem zapisywane do ROM, brak prądu, brak neta. system wstawał bez kłopotu. jak nie było znajomego routera to wchodził w tryb AP. nie wiem o jakiej możliwości zdalnej ingerencji piszesz?

nie wiem czemu myślisz, że bez neta sytem nie steruje. zobacz mój film. tam jest sterowanie lampami, sterowanie grzałką, co2, nawożeniem itd. zaszyte w esp. WWW służy jednynie do konfiguracji oraz podglądu warunków, ew. pobrania raportu np. miesięcznego z czujników itp.  ESP ma bardzo duże możliwości, brakuje mi jedynie timera (arduino ma), jego brak rozwiązywałem programowo. Również przerwania na esp nie są idealne podobnie jak na arduino, nie jest to stm32. ale timer przydałby się jedynie do zliczania bąbli CO2 w liczniku, reszta tego nie wymagała. ja myślę o esp na dużej płytce - NODE to się chyba nazywało. jedynie co zwiększałęm to ilość portów na i2c.

Link do komentarza
Share on other sites

sterowanie wifi / przez neta ma jedną wadę - kusi żeby coś zmieniać do chwilę i ryby oraz rośliny mają ciągle inne parametry - najlepsze sterowniki są typu "fire and forget" - uruchamiasz ustawiasz zapominasz o urządzeniu. Ale co kto lubi. W moim przypadku nie mogłem już więcej dołożyć do arduino ponieważ kod jest zajęty w 79% więc na granicy stabilności  (ale działa stabilnie i nie zawiesza się.

Link do komentarza
Share on other sites

(edytowany)

@adam1004aNie zrozumieliśmy się 🙂

Ty tak naprawdę Ty mówisz o sterowniku lokalnym który przy okazji ma dostępem poprzez www, w takim wypadku masz rację, tyle że to jednak wymaga dużo więcej czasu i  wiedzy.

Ja mówiłem o takim rozwiązaniu jak zrealizowałem u siebie, wszelkie decyzje o wysterowaniu urządzeń (wł/wył, ściemnij/rozjaśnij itp) są wypracowywane na serwerze domoticza, który jest postawiony na malince. Dlatego jeśli padnie net to zaczynają się problemy, co prawda same sterowniki przy banaikach łączą się z malinką poprzez moduły NRF, więc przynajmniej w teorii nadal wszystko powinno działać. Największą zaletą (jak dla mnie) mojego rozwiązania jest jego prostota, po stronie arduino są tylko zabezpieczenia i prezentacja elementów systemu, resztę załatwiam w skryptach na malince.

@mn-tech hehe, masz racje, już mi powoli przechodzi, ale jak uruchomiłem system, to co 1-2h sprawdzałem jaka jest temperatura i czy wszystko działa, miałem nawet pomysł żeby do domoticza podłączyć kamerę IP, żeby widzieć czy to co zmieniam zdalnie faktycznie działa w zbiornikach 😄

Edytowano przez Karolus
Link do komentarza
Share on other sites

10 minut temu, mn-tech napisał:

"fire and forget" - nie przy roślinach i nawożeniu r-r soli mineralnych, miałem jeszcze opcje wymiana wody, gdzie wyłączało grzałkę i filtry i zapalała się czerwona dioda na sterowniku

co do ilości wiedzy to forbot umożliwił mi zbudowanie tego rozwiązania. wcześniej nigdy nic nie zbudowałem i nie zaprogramowałem !!! C to była dla mnie 3 litera alfabetu 😉 Malinka mnie rajcuje opcjami rozpoznawania obrazu. ale to jest już wysoki level wtajemniczenia, no i cierpie na permanentny brak czasu na zabawę

 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.