Sterownik do akwarium z dostępem przez internet

Wiesz jak samemu wykonać pokrywy, filtry lub masz inne ciekawe pomysły, to jest dział dla ciebie. Zrób to sam czyli Adam Słodowy radzi :) Zrobiłeś coś ciekawego ? Pochwal się, nie kryj talentu przed światem....
ODPOWIEDZ

Autor
Karolus
Zapaleniec
Posty: 379
Rejestracja: wt sty 09, 2018 7:55 pm
Lokalizacja: Marki
Płeć:

Sterownik do akwarium z dostępem przez internet

#1

Post autor: Karolus »

Od pewnego czasu majstruję i majstruję w domku (zanim pierwszy pomysł udaje się zrealizować to kolejny przychodzi do głowy i robota od nowa ;))
ale w końcu udało mi się dociągnąć budowę sterownika do końca (jestem na etapie kończenia zabudowy gratów w obudowie)

Postanowiłem nie chować wiedzy pod poduszkę, może komuś się przyda.

Założenia:
Budowa sterownika ma być uniwersalna, tzn ma się dać łatwo adaptować w zależności od potrzeb konkretnego zbiornika (ilość kanałów on/off, ilość kanałów PWM, ilość punktów pomiaru temperatury itp, itd)
Sterownika ma ogarnąć akwarium całościowo w przypadku mojego zbiornika na którym go testuje od pewnego czasu ma on następujące funkcje:
sterowanie ON/OFF - dwa kanały światła, filtr, grzałka
sterowanie PWM - wentylatory
pomiar temperatury
funkcje dodatkowe: - "karmienie" (wyłączenie wentylatorów/filtra na ~ 5min)
- "serwis" (prace techniczne w zbiorniku)
możliwość zdalnego sterowania wszystkimi funkcjami przez internet z telefonu lub przez stronę www z dowolnego komputera
wyświetlenie podstawowych informacji ze zbiornika (plus zegarek ;)) na lokalnym wyświetlaczu

Co do tego potrzebowałem:
1. arduino pro mini
2. NRF24
3. wyświetlacz LCD 16x2
4. moduł przekaźników x4
5. DS18B20
6. trochę pierdułek (obudowa, płytki prototypowe, IRF520, złącza, rezystorki itp)

Dodatkowo do zdalnego dostępu potrzebowałem skonfigurowaną bramkę sensorgate oraz skonfigurowanego domoticza (domoticz do serwer automatyki domowej) oraz w celu zabezpieczenia dostępu do swojej sieci lokalnej mam uruchomionego VPNa
VPN i domoticz posadzone są na raspberry do niego też podłączona jest bramka sensorgate

ogólnie sterownik akwarium jest u mnie tylko jednym z elementów całego systemu IoT jaki tworze w domu (pomiar temperatury, sterowanie urządzeniami itp)

Podstawowe założenie było takie że ma być w miarę prosto (budowa na łatwo dostępnych modułach), bez nadmiernego klepania kodu (cały system powstał w oparciu o domoticza i mysensors) oraz bezpiecznie i to w dwóch aspektach: bezpieczeństwo sieci domowej (VPN), bezpieczeństwo w zbiorniku (np w obwodzie grzania są trzy zabezpieczenia, filtr jest podłączony do styków NC przekaźnika itp)

System powstawał stopniowo (zaczynałem od pomiaru samej temperatury) więc trochę wiedzy przy okazji odświeżyłem/nabyłem (np to że watchdog to pożyteczne "zwierze" ;))

Chyba ten post wyszedł mi trochę chaotycznie, ale tematyka jest dosyć obszerna, więc wybaczcie (zresztą jak się wie o czym się pisze to niektóre rzeczy wydają się tak oczywiste że się o nich nie mówi)
Jeśli ktoś jest zainteresowany proszę o info, temat rozwinę i/lub dodam wyjaśnienia
Ostatnio zmieniony śr sie 08, 2018 12:18 pm przez Karolus, łącznie zmieniany 1 raz.
Ogólne 102L: 3x Gupik, 2x Molinezja, 5x Danio, 3x Platka, Otosek, 3x Bojownik, 5x Zbrojnik, 4x Amano, Ampularia, 3x Tylomelania Gold
Malawi 240L: 9x mphanga, 10x careuleus, 1x afra jalo, 6x Koningsi, 6x Hongi Red, 6x Redred

Wojtekxxx9
Fanatyk
Posty: 1927
Rejestracja: pn sty 29, 2018 5:06 pm
Lokalizacja: Warszawa Gocław
Na imię mam: Wojtekxxx9
Płeć:

Sterownik do akwarium z dostępem przez internet

#2

Post autor: Wojtekxxx9 »

Rozwijaj

Autor
Karolus
Zapaleniec
Posty: 379
Rejestracja: wt sty 09, 2018 7:55 pm
Lokalizacja: Marki
Płeć:

Sterownik do akwarium z dostępem przez internet

#3

Post autor: Karolus »

no to część pierwsza "rozwijania" ;)
najpierw rysunek który mam nadzieje potrafi lepiej zrozumieć cały sens funkcjonowania sieci IoT do której podpięte są sterowniki
Obrazek

drugi rysunek pokazuje schemat blokowy samego sterownika
Obrazek

Dla tych co potrzebują/chcą więcej teorii polecam następujące strony:
www.domoticz.com
www.mysensors.org
www.vpn.net
oraz poszukać haseł: arduino, nrf24, sensorgate, raspberry
Jest tego maaaaaaaaaasa, ale można sporo się dowiedzieć w miarę szybkim tempie.

W drugim odcinku tego serialu pojawią się fotki ;)
Ogólne 102L: 3x Gupik, 2x Molinezja, 5x Danio, 3x Platka, Otosek, 3x Bojownik, 5x Zbrojnik, 4x Amano, Ampularia, 3x Tylomelania Gold
Malawi 240L: 9x mphanga, 10x careuleus, 1x afra jalo, 6x Koningsi, 6x Hongi Red, 6x Redred

Wojtekxxx9
Fanatyk
Posty: 1927
Rejestracja: pn sty 29, 2018 5:06 pm
Lokalizacja: Warszawa Gocław
Na imię mam: Wojtekxxx9
Płeć:

Sterownik do akwarium z dostępem przez internet

#4

Post autor: Wojtekxxx9 »

Ogólnie bardzo ciekawy projekt. Jeszcze użył bym kontroler PWM po I2C jeszcze. 8 kanałów PWM dla światła jak znalazł a dodatkowo dla wentylatorów zostaje. Osobny dla lampy osobny dla akwarium.
Kontrola pH przy okazji :-)
I zamiast płytek uniwersalnych płytkę trawiona pod procesor ATmega2560. I masz kombajn.

Autor
Karolus
Zapaleniec
Posty: 379
Rejestracja: wt sty 09, 2018 7:55 pm
Lokalizacja: Marki
Płeć:

Sterownik do akwarium z dostępem przez internet

#5

Post autor: Karolus »

po I2C pracuje LCD, nie ma problemu żeby dostawić w razie potrzeby kolejne moduły (czy to PWM czy I/O czy co tam jeszcze kto wymyśli)
akurat w tym zbiorniku mam lampy LED Aquaella wiec i tak nie mam możliwości sterowania ich jasnością, dlatego tylko ON/OFF jest dla światła.
Natomiast do malawi jak będę robił drugi sterownik to na pewno światło będzie na PWMie, wtedy 6-8 kanałów PWMa przyda się (ale chińczyk już pakuje 16to kanałowy sterownik, więc jest szansa że starczy ^^)
Płytki uniwersalne maja swoje wady ale i zalety (w kilka minut można zmontować układ z gotowych modułów), płytka "trawiona" to bardziej eleganckie rozwiązanie, ale i bardziej czasochłonne (trzeba zaprojektować druk, dać do wykonania itd) no i parę groszy więcej tez kosztuje.

No i żeby nie było że jakieś bajki opowiadam to poniżej aktualne zdjęcie działającego prototypu
Obrazek

a dalej zrzuty ekranu z interfejsu www
zakładka z podglądem temperatury
Obrazek

zakładka z przełącznikami (sterowanie poszczególnymi urządzeniami/kanałami)
Obrazek

zakładka umożliwiająca tworzenie akcji/reakcji na zdarzenia
Obrazek

oczywiście mamy dostęp również do danych historycznych/statystycznych
Obrazek

To chyba na tyle tytułem bardziej rozwiniętego wstępu, oczywiście cały system ma dużo większe możliwości (np. wysyłanie info na maila/telefon o jakimś zdarzeniu), z ciekawostek mam podpięty system informacji o zagrożeniach pogodowych (burze/upał itp/itd), mogę się z niego dowiedzieć np ile piorunów walnęło w interesującej mnie okolicy i gdzie był najbliższy :)
Można do niego podczepić kamerę zarówno USB jak i IP i.... podglądać naszych ulubieńców podczas urlop :D
da się do niego podłączyć klimę i/lub system ogrzewania, nawet prostą instalację alarmową/monitoringu da się zrobić, w zasadzie można zrobić wszystko i podpiąć wszystko, część urządzeń IoT działa z marszu (wsparcie autorów systemu) innym trzeba "pomóc" dopisując trochę kodu.

Jakby co służę pomocą
Ogólne 102L: 3x Gupik, 2x Molinezja, 5x Danio, 3x Platka, Otosek, 3x Bojownik, 5x Zbrojnik, 4x Amano, Ampularia, 3x Tylomelania Gold
Malawi 240L: 9x mphanga, 10x careuleus, 1x afra jalo, 6x Koningsi, 6x Hongi Red, 6x Redred

Wojtekxxx9
Fanatyk
Posty: 1927
Rejestracja: pn sty 29, 2018 5:06 pm
Lokalizacja: Warszawa Gocław
Na imię mam: Wojtekxxx9
Płeć:

Sterownik do akwarium z dostępem przez internet

#6

Post autor: Wojtekxxx9 »

Płytka wychodzi taniej i szybciej. Ile ja się uwqrwialem puszczając kabelki na uniwersalnych :-)
Teraz jak już mam bazę projektów trochę rozbudowaną to kopiuje tylko poszczególne elementy. Niektóre połączenia znam na pamięć. Podoba mnie się ten projekt.
Ile czasu zejdzie dodanie 8 kanałów PWM sciemnianie i rozjaśnianych logarytmicznie?
Awatar użytkownika

JJP2
Noble
Posty: 642
Rejestracja: ndz sty 07, 2018 12:56 am
Lokalizacja: Ciupagi
Na imię mam: Piotr

Sterownik do akwarium z dostępem przez internet

#7

Post autor: JJP2 »

:offtopic:
Qna
Zaraz dojdzie do tego, że akwarium na odległość będziecie mieli i tylko przez kamerki patrzali. :razz:
W ... się poprzewracało od tej elektroniki...! :shoot: :shoot: :shoot:
Siadać na ... i pilnować dobrostanu a nie jakieś amerykańskie mechanizacje wprowadzaćI :bęc:

Boro1

Sterownik do akwarium z dostępem przez internet

#8

Post autor: Boro1 »

JJP2 pisze: śr sie 08, 2018 4:51 pmkamerki
ro jeszcze trzeba go pro kupić? Albo jakiegoś podwodnego drobna z kamerą :)
Awatar użytkownika

Lech-u
Admin
Posty: 21839
Rejestracja: ndz paź 30, 2011 10:22 pm
Lokalizacja: Warszawa-Piaseczno
Na imię mam: Lech-u
Płeć:

Sterownik do akwarium z dostępem przez internet

#9

Post autor: Lech-u »

Temat fajny.
Lubię wszelkie automaty.

To jest prawie jak Profilux.

Będę obserwował rozwój tematu.
I trzymam kciuki.

Wojtekxxx9
Fanatyk
Posty: 1927
Rejestracja: pn sty 29, 2018 5:06 pm
Lokalizacja: Warszawa Gocław
Na imię mam: Wojtekxxx9
Płeć:

Sterownik do akwarium z dostępem przez internet

#10

Post autor: Wojtekxxx9 »

Rzuć okiem na to
https://www.ferduino.com/about/

Pewnie właśnie to będzie moja następna plytka
Ostatnio zmieniony śr sie 08, 2018 8:18 pm przez Wojtekxxx9, łącznie zmieniany 1 raz.

Autor
Karolus
Zapaleniec
Posty: 379
Rejestracja: wt sty 09, 2018 7:55 pm
Lokalizacja: Marki
Płeć:

Sterownik do akwarium z dostępem przez internet

#11

Post autor: Karolus »

Pusto pisze: śr sie 08, 2018 4:08 pm Płytka wychodzi taniej i szybciej. Ile ja się uwqrwialem puszczając kabelki na uniwersalnych
Teraz jak już mam bazę projektów trochę rozbudowaną to kopiuje tylko poszczególne elementy. Niektóre połączenia znam na pamięć. Podoba mnie się ten projekt.
Ile czasu zejdzie dodanie 8 kanałów PWM sciemnianie i rozjaśnianych logarytmicznie?
dodanie 8miu kanałów to 4 kabelki, moduł rozszerzeniowy po I2C i 8 kanałów wykonawczych (np IRF520 do sterowania napięciowego lub drivery LED do sterowania prądowego), ale tego pewnie nie muszę Ci tłumaczyć.
Od strony programowej dodanie liniowego PWM to pryszcz, 5-10min na uruchomienie i 30 na dopieszczenie (zapisywanie wartości do EEPROM itp), natomiast nie ćwiczyłem nigdy logarytmicznego, ale jeśli masz jakiś prosty algorytm to pikuś, programujesz po prostu arduino
poniżej masz przykładowy kod jednego kanału PWM który rejestruje się w domoticzu, to taka najprostsza wersja bez zapisu wartości do pamięci

Kod: Zaznacz cały

// Enable debug prints to serial monitor
#define MY_DEBUG

// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

#include <MySensors.h>

#define SN "DimmableLED"
#define SV "1.1"

#define LED_PIN 3      // Arduino pin attached to MOSFET Gate pin
#define FADE_DELAY 10  // Delay in ms for each percentage fade Nudny ten mój wątek.../down (10ms = 1s full-range dim)

static int16_t currentLevel = 0;  // Current dim level...
MyMessage dimmerMsg(0, V_DIMMER);
MyMessage lightMsg(0, V_LIGHT);


/***
 * Dimmable LED initialization method
 */
void setup()
{
	// Pull the gateway's current dim level - restore light level upon node power-Nudny ten mój wątek...
	request( 0, V_DIMMER );
}

void presentation()
{
	// Register the LED Dimmable Light with the gateway
	present( 0, S_DIMMER );

	sendSketchInfo(SN, SV);
}

/***
 *  Dimmable LED main processing loop
 */
void loop()
{
}



void receive(const MyMessage &message)
{
	if (message.type == V_LIGHT || message.type == V_DIMMER) {

		//  Retrieve the power or dim level from the incoming request message
		int requestedLevel = atoi( message.data );

		// Adjust incoming level if this is a V_LIGHT variable update [0 == off, 1 == on]
		requestedLevel *= ( message.type == V_LIGHT ? 100 : 1 );

		// Clip incoming level to valid range of 0 to 100
		requestedLevel = requestedLevel > 100 ? 100 : requestedLevel;
		requestedLevel = requestedLevel < 0   ? 0   : requestedLevel;

		Serial.print( "Changing level to " );
		Serial.print( requestedLevel );
		Serial.print( ", from " );
		Serial.println( currentLevel );

		fadeToLevel( requestedLevel );

		// Inform the gateway of the current DimmableLED's SwitchPower1 and LoadLevelStatus value...
		send(lightMsg.set(currentLevel > 0));

		// hek comment: Is this really nessesary?
		send( dimmerMsg.set(currentLevel) );


	}
}

/***
 *  This method provides a graceful fade Nudny ten mój wątek.../down effect
 */
void fadeToLevel( int toLevel )
{

	int delta = ( toLevel - currentLevel ) < 0 ? -1 : 1;

	while ( currentLevel != toLevel ) {
		currentLevel += delta;
		analogWrite( LED_PIN, (int)(currentLevel / 100. * 255) );
		delay( FADE_DELAY );
	}
}
żeby mieć sterowanie logarytmiczne, trzeba by zmienić algorytm funkcji "fadeToLevel" i powinno działać

A tak z ciekawości, sam robisz płytki czy gdzieś dajesz do wykonania i ile to teraz kosztuje/trwa?

@Lechu do Profiluxa to temu daleko a jednocześnie blisko, Profilux to typowy sterownik sprzętowy, tu jednak w dużej mierze bazuje się na serwerze który gdzieś tam jest (a może kiedyś przestanie być ;)), natomiast pod względem możliwości to pewnie mocno profiluxa przewyższa. Ogólnie Prfilux to sprzęt typowo akwarystyczny, do tego zaprojektowany, dostosowany itd, to co ja zrobiłem to podpięcie akwarium do całego systemu IoT.
Prawdę mówiąc częściowo zrobiłem to żeby przekonać się czy jeszcze we mnie coś z elektronika zostało, czy tylko już "zarządzanie papierkami", okazało się że jeszcze coś umiem :)

poniżej jeszcze zrzuty z telefonu
zakładka z termometrami:
Obrazek

zakładka z przełącznikami sterującymi
Obrazek

PS: spokojnie filtr jest włączonym, jeszcze nie odwróciłem logiki działania, dlatego sygnalizacja jest odwrotna :)
Ostatnio zmieniony śr sie 08, 2018 8:39 pm przez Karolus, łącznie zmieniany 2 razy.
Ogólne 102L: 3x Gupik, 2x Molinezja, 5x Danio, 3x Platka, Otosek, 3x Bojownik, 5x Zbrojnik, 4x Amano, Ampularia, 3x Tylomelania Gold
Malawi 240L: 9x mphanga, 10x careuleus, 1x afra jalo, 6x Koningsi, 6x Hongi Red, 6x Redred

Wojtekxxx9
Fanatyk
Posty: 1927
Rejestracja: pn sty 29, 2018 5:06 pm
Lokalizacja: Warszawa Gocław
Na imię mam: Wojtekxxx9
Płeć:

Sterownik do akwarium z dostępem przez internet

#12

Post autor: Wojtekxxx9 »

Narazie sam robię. Ale ferduino już pójdzie do produkcji do fabryki. Nie wiem jeszcze jaki tam będzie format. Ale drożej przesyłka wyjdzie niż 10 płytek.
Takie 10x15 w Chinach po 0,02$ wychodzą. I transport 15$ :-)

Autor
Karolus
Zapaleniec
Posty: 379
Rejestracja: wt sty 09, 2018 7:55 pm
Lokalizacja: Marki
Płeć:

Sterownik do akwarium z dostępem przez internet

#13

Post autor: Karolus »

Samemu to chyba już mi się nie chce bawić, pamiętam jeszcze czasy gdy trawiłem płytki chlorkiem żelaza, smród w domu i od groma zabawy w malowanie druku, to już nie dla mnie :)
ciekawe jak z jakością tych chińczyków, może kiedyś przetestuje, tyle że zamawianie gotowych płytek ma sens tylko przy kilku/kilkunastu sztukach i to najlepiej już dopracowanego projektu, żeby potem nie ciąć druku.
Ogólne 102L: 3x Gupik, 2x Molinezja, 5x Danio, 3x Platka, Otosek, 3x Bojownik, 5x Zbrojnik, 4x Amano, Ampularia, 3x Tylomelania Gold
Malawi 240L: 9x mphanga, 10x careuleus, 1x afra jalo, 6x Koningsi, 6x Hongi Red, 6x Redred
ODPOWIEDZ