Arduino w służbie inteligentnego domu – koncepcja

Minęło już trochę czasu odkąd testuję Arduino Uno R3, więc pewnie pora zbudować koncepcję rozbudowy mojej niskobużetowej, amatorskiej instalacji inteligentnego domu, o której pisałem wcześniej. Chciałbym dołożyć dodatkowe funkcjonalności, a przy okazji pozbyć się jednej z kart przekaźnikowych na rzecz Arduino (skoro już jest, nie ma potrzeby mnożyć bytów). Nie chcę oczywiście odcinać się od routerów z OpenWRT i tego, co już osiągnąłem. Pora podsumować cały projekt, stan obecny i wizję przyszłości.

Stan obecny

Na początek małe podsumowanie (w skrócie) tego, jak system wygląda bez Arduino. Centralnym urządzeniem w środowisku automatyki domowej jest router TPlink TL-WR1043ND z zainstalowanym systemem OpenWRT. Dostarcza on Internet (sieć w ogólności) przewodowo do różnych punktów w domu i bezprzewodowo. Zlokalizowany jest w garażu, skąd rozchodzi się gwiaździście okablowanie do dużej części pomieszczeń w domu. Do routera podłączony jest dysk USB, który w przeszłości był źródłem dla odtwarzacza multimediów podłączonego do telewizora w salonie. W tej chwili z tej funkcji router został odciążony przez Iomega iConnect, stanowiący centrum składowania i serwowania danych. Do routera podłączona jest za to magistrala one-wire i kilkanaście termometrów w całym domu (w tym wiele w kotłowni do monitorowania kotła). Router gromadzi dane, rysuje wykresy i je udostępnia. Analizuje też temperatury z kotłowni i powiadamia smsem o różnych zdarzeniach, np. wygaśnięciu pieca. Router otwiera też bramę wjazdową, co opisywałem ostatnio i steruje ogrzewaniem (przełącza kocioł na ekogroszek w coś w rodzaju trybu bardzo oszczędnego).

Drugi router zlokalizowany jest dwa piętra wyżej i udostępnia sieć bezprzewodowo dla lepszego pokrycia zasięgu w domu. Podłączona jest do niego także drukarka atramentowa, której okresową konserwacją też zajmuje się router. Dodatkowo prowadzi ciągłą rejestrację danych monitoringu oraz wysyła obrazy z zarejestrowanym ruchem poza dom (dla bezpieczeństwa). Obraz dostarczany jest przez kamerę IP.

Trzeci router zajmuje się podlewaniem ogrodu. Mój system system nawadniania, oparty o router (z OpenWRT) i kartę przekaźnikową już był opisywany, więc nie ma sensu opisywać tego w tej chwili dokładniej. Można jedynie wspomnieć, że dołożony został amatorski czujnik deszczu. Router monitouje też zalanie jednego z pomieszczeń w piwnicy i fakt otwarcia drzwi, ale te funkcje przejmie system alarmowy.

Miejsce dla Arduino

Tyle udało się zrobić przy pomocy OpenWRT z dodatkami. Teraz pora zająć się rozbudową przy pomocy Arduino, który ma zapewnić większe możliwości integracji ze światem zewnątrznym. Dzięki cyfrowym wejściom/wyjściom i analogowym wejściom Arduino oraz możliwościom komunikacyjnym (standardowo przez USB, bez problemu przez Ethernet, ewentualnie bezprzewodowo), wydaje się idealne dla moich potrzeb.

Arduino w moim środowisku automatyki domowej ma pełnić kilka funkcji. Ma też być przynajmniej częściowo niezależne – ma rejestrować dane niezależnie od tego czy router jest włączony i odbiera dane czy nie. Jeżeli nie – ma przekazać informacje po nawiązaniu połączenia. Dlaczego Arduino a nie własny układ na mikrokontrolerze? Bo tak prościej dla kogoś, kto dopiero zaczyna uczyć się elektroniki. Bo tak szybciej można zacząć. Bo tak wygodnie, bez zabawy z programatorem, z gotową komunikacją. Bo w razie awarii wystarczy podmienić Arduino na nowe.

Funkcjonalności inteligentnego domu

Analizę dobrze jest rozpocząć od potrzeb. Część z nich wynika ze zwykłej wygody, część ma podnieść bezpieczeństwo, a część pojawiła się w trakcie użytkownia domu i ma rozwiązać różne, pojawiające się okresowo problemy. Funkcjonalności można podzielić na podstawowe obszary, o których krótko opowiem.

Ogrzewanie

Poza monitorowaniem temperatur przez router i powiadamieniem o różnych zdarzeniach (brak opału, zerwanie zawleczki od podajnika ślimakowego) zrealizowane jest jeszcze sterowanie ogrzewaniem. W każdej chwili mogę zdalnie obniżyć temperaturę wody podawanej na grzejniki o 40%. Jest to realizowane przez przekaźnik i funkcję termostatu pokojowego sterownika pieca (temperatura zaś zmienia się dzięki siłownikowi zaworu 4-drogowego; jest to funkcjonalność instalacji c.o.). Bardzo przydatna funkcja podczas wyjazdów, kiedy poza oczywistą zaletą, jaką jest możliwość oszczędności, dochdzi jeszcze częściowe rozwiązanie problemu konieczności dosypywania węgla do zasobnika i wyrzucania popiołu – można na dłużej wyjechać bez proszenia kogoś o doglądanie i obsługę pieca. Załączanie ogrzewania obsługiwane jest obecnie przez kartę przekaźnikową i wejście termostatu pokojowego w sterowniku pieca, natomiast funkcję tę przejmie Arduino (oczywiście także przez przekaźnik).

Do obszaru ogrzewania można też zaliczyć cyrkulację ciepłej wody użytkowej. Jest to funkcja, która powoduje, że po odkręceniu kranu dwa piętra nad kotłownią, od razu leci ciepła woda (nie trzeba czekać aż „zleci” zimna z rur). Bardzo fajna sprawa, natomiast dość kosztowna, szczególnie przy kiepskiej izolacji rur lub jej braku. Dlatego cyrkulację uruchamiam w tej chwili co jakiś czas – w okresach kiedy prawdopodobne jest jej użycie (do analizy bardzo pomocne były wykresy z kotłowni). Realizowane jest to przez zwykły programator czasowy na 230V, który uruchami pompkę cyrkulacyjną na 4 minuty co kwadrans w okresach prawdopodobngo zużycia wody.

Co tu można usprawnić? Nie uruchamiać cyrkulacji, gdy ktoś chwilę wcześniej używał wody, bo nie wystygła jeszcze w rurach. Uruchamiać ją na 3,5 minuty, zamiast 4 minut, bo tyle u mnie wystarcza, ale programator nie pozwala na tak dokładne sterownie. Nie uruchamiać cyrkulacji w czasie gdy nikogo nie ma w domu. Być może warto uruchomić cyrkulację rano w momencie zarejestrowania pierwszego ruchu (acz może to być nieco za późno, ale warto sprawdzić). Idelana byłaby interakcja z systemem alarmowym – można z niego pobrać informację o zarejestrowanym ruchu oraz czy ktoś jest w domu (czy alarm jest uzbrojony). Alarm musi jednak jeszcze poczekać, a na razie Arduino zajmie się cyrkulacją, sterując pompką przy pomocy zestawu do zdalnego sterowania gniazkami.

Przy piecu na ekogroszek niebagatelnymi pytaniem jest zwykle ile węgla jest jeszcze w podajniku i czy trzeba już wyrzucić popiół. Na te pytania pozwoliłby odpowiedzieć monitoring zużycia. Niestety sterownik mojego pieca (Klimosz Ling 15kW) na to nie pozwala. Mam nadzieję, że pomoże tu Arduino z czujnikiem cęgowym. Wiedząc, że silnik podajnika załącza się zawsze na 5 sekund, mogę policzyć ile takich załączeń wykonywanych jest przy zużyciu pełnego podajnika. Dzięki temu łatwo będzie policzyć ile statystycznie węgla podawane jest za jednym załączeniem podajnika. Pozwoli to oszacować ile ekogroszku jest zużywane w pewnym okresie, sprawdzić jaki jest stan podajnika i zasobnika popiołu. Oczywiście potrzebna będzie zapewne jakaś kalibracja przy zmianie ekogroszku, ale w moim przypadku to nie problem, bo kupuję opał na cały rok, a nawet dłużej i zwykle z jednego źródła. Zebrane dane będą też bezcenne dla analizy zużycia węgla przy ogrzewaniu w różnych warunkach i ogrzewania wody (a co za tym idzie liczeniu zysku przy różnych usprawnieniach).

Monitoring i kontrola dostępu

Z obecnego monitoringu jestem bardzo zadowolony. Możliwość sprawdzenia co się działo przed domem jest bardzo przydatna. Można sprawdzić, czy śmieciarze zabrali już śmieci i czy odstawili kosz na miejsce (zwykle nie). Niby po co to sprawdzać? Choćby po to, żeby poprosić kogoś, żeby wstawił kosz na posesję, gdy został na ulicy, a nikogo przez najbliższy tydzień nie będzie w domu. Poza tym można zerknąć z pracy czy był już listonosz lub kurier i przyniósł paczkę, na którą czekam. Można też sprawdzić czy niania wróciła już ze spaceru z dzieckiem. Zastosowań jest wiele, a dopóki nie uruchomi się rejestracji zdarzeń, często nie zdaje się z nich sprawy.

Podczas tegorocznego wyjazdu narciarskiego pojawił się jednak pewien problem – dostęp do koszy ze śmieciami. Można zostawić na cały wyjazd niezabezpieczoną furtkę, ale to kiepskie rozwiązanie. Zainspirowało mnie to do umożliwienia sterowania bramą przez sieć. Po otwarciu bramy, przy odrobinie chęci można zabrać śmieci, a ja potem mogę ją zdalnie zamknąć. Potem się okazało, że to nie jedyne zastosowanie, a otwieranie bramy przez telefon jest bardzo praktyczne.

Pojawił się jednak jeszcze jeden pomysł – współpraca z domofonem. Gdy ktoś zadzwoni, dobrze byłoby zrobić zdjęcie okolic furtki i jeżeli nikogo nie ma w domu – wysłać informację przez e-mail. Ponieważ w smartfonie używam klienta pocztowego K-9 mail z trybem imap idle, e-maile docierają do mnie prawie natychiast i zwykle przeglądam je zaraz po powiadomieniu. W takiej sytuacji, gdy na zdjęciu będzie ktoś znajomy, mógłbym do niego zadzwonić i powiedzieć, że będę za 5 minut, żeby poczekał. Dobrze byłoby móc mu przy okazji otworzyć furtkę, żeby chociaż na teren posesji wszedł.

Śmieciarze, gdy furtka jest zamknięta również dzwonią. Zamist otwierać wcześniej bramę, gdy jestem daleko, możnaby skonfigurować system tak, żeby otwierał furtkę po dzwonku (w okresie, gdy są spodziwani, rzecz jasna). Sam był używał tej funkcjonalności i otwierał sobie bramkę przez sekretną sekwencję naciśnień dzwonka, gdybym miał taką możliwość.

A złodziej? Czy nie zadzwoni wpierw, żeby upewnić się, że nikogo nie ma w domu? Może nie, a może tak, może dzień wcześciej. Dobrze by było mieć zdjęcia osób dzwoniących składowane gdzieś poza domem.

W tej chwili mam zainstalowany wideodomofon Orno SD880D6 z unifonem R19S (lub coś zbliżonego, bo niestety dokumentacji nie mam, a w domu był jak się wprowadziłem). Co więcej, z powodu awarii, prawdopodobnie w jego miejsce zainstaluję Orno lub Eura SD720D6 (żeby zachować zgodność okablowania i takie same okablowanie bramofonu). Jest to o tyle istotne, że to tzw. domofon cyfrowy, a co za tym idzie ma tylko dwa przewody. Jak można się domyślić, nie ma więc osobnego sygnału dzwonienia. Trzeba więc będzie badać napięcia na tych przewodach, w nadziei na znalezienie sposobu na wykrycie faktu dzwonienia. Co więcej, dobrze by było odseparować galwanicznie układ domofonu od Arduino. Z pewnością o efektach napiszę jeszcze. Na szczęście kable do rygla w furtce idą osobno, więc będę mógł nim łatwo sterować. Zrezygnuję natomiast na zasilaniu go z domofonu, bo w tej chwili otwiera się bezgłośnie – nie ma charakterystycznego buczenia, mówiącego, że teraz należy popchnąć bramkę, żeby ją otworzyć. To całkiem naturalne, gdy do rygla dochodzi napięcie stałe, a nie zmienne, natomiast dość uciążliwe w użytkowaniu.

Dodatki

Co jeszcze można zrobić? Czujnik parkowania – nie w samochodzie, w garażu. Jako, że przy remoncie garażu zrezygnowałem z betonowego ogranicznika pod koło, mówiącego gdzie się zatrzymać, warto pomyśleć o jakimś innym narzędziu. Może nim być czujnik parkowania zawieszony na ścianie i pokazujący kiedy samochód jest w idealnej pozycji. Póki co nie ma to wielkiego znaczenia, ale jak kupię większy samochód lub wymienię bramę garażową, która zmniejszy powierzchnię garażu, może być istotne. Dodatkowo da systemowi informację, czy wprowadziłem samochód (nie wiem po co, ale znając życie przyda się kiedyś).

Mając sterowanie bezprzewodowe gniazdkami (jedno zajęte na cyrkulację, dwa wolne) mogę bez problemu w miarę okresowych potrzeb sterować świąteczną iluminacją lub symulować obecność domowników podczas wyjazdu. Zastosowań na pewno znajdzie się wiele.

To plany na najbliższy czas. Realizację powoli rozpoczynam i z pewnością będę pisał na blogu o postępach. Co dalej? Pewnie znajdą się kolejne potrzeby. Na pewno zainstaluję alarm i połączę go z istniejącą instalacją.

Czy warto? Tak – to drobiazgi, ale ułatiwają życie i pozwalają trochę zaoszczędzić. Poza tym trzeba mieć hobby 😉

Arduino z dodatkowymi akcesoriami do moich testów dostarczył Nettigo.

Advertisements

16 Responses to Arduino w służbie inteligentnego domu – koncepcja

  1. fpaliuc says:

    Interresting post with great ideas. Keep it this way !!!

  2. janek says:

    W powiedz jak rozwiązałeś przeglądanie zdjęć z detekcji ruchu lub z tych co 3 sek? O ile pamiętam Twoja kamera jest skierowana na podwórko i ulicę, w ciągu dnia pewnie przechodzi tam dużo osób, jeżdżą samochody… gdy np na wieczór chcesz przejrzeć co się działo to możesz mieć setki zdjęć i co wtedy? Przelatujesz przez wszystkie? Ja się trochę bawię w ten monitoring i już na moim odludnym podwórku sporo zdjęć się generuje a co dopiero u Ciebie…

    • techniczny says:

      Interfejs dzieli obrazki na godziny. Po kliknięciu na miniaturkę zdjęcia (ostatnią z danej godziny) otwiera się lista miniatur z danego czasu. Nie ma problemu, żeby coś oznaleźć.

      Monitoringu rejestrowanego w trybie ciągłym nie przeglądam – jest na wszelki wypadek. W razie potrzeby, żeby można było wyciągnąć i prześledzić.

  3. Ja jestem dopiero na etapie planowania wszystkiego i jeszcze długa droga przede mną. Tak, czy siak, za realizację inteligentnego domu zabiorę się dopiero przy okazji generalnego remontu.

    Ale zgadzam się z tym, że trzeba mieć hobby 😉 Całość robię w zasadzie nie ze względów praktycznych, ale żeby po prostu to zrobić, czerpiąc z tego czystą satysfakcję 😉

    Pozdrawiam!

  4. zlecony says:

    A ja mam pytanie odnośnie 1-wire. Czy to jest w miarę niezawodne przy dłuższych kablach? Mam położone pod tynkami w domu 1-piętrowym sporo kabli (standardowych 3-żyłowych telekomunikacyjnych) i właśnie się przymierzam do realizacji inteligentnego domu. Na jakie odległości i z iloma urządzeniami 1-wire działa poprawnie? W necie różne opinie czytałem, a Ty piszesz że twój system mierzy temperatury w całym domu. Więc może nie jest tak źle?

    • techniczny says:

      Jest w dużej mierze niezawodne. W ciągu 2 lat miałem co prawda problemy ze stykiem przy dwóch czujnikach, co skutkowało zanikiem pomiarów co jakiś czas, natomiast była to kwestia złego styku. Było to natomiast proste do zlokalizowania.

      Co do przewodów, to przede wszystkim muszą być cienkie (żeby miały małą pojemność). Ja mam zwykłą skrętkę komputerową (ekranowany drut, 0,5mm2).

      Jeżeli chodzi o odległość to przy wariancie z 2 przewodami zamiast 3 (czyli teoretycznie gorszym) u mnie działa w architekturze mieszanej (gwiazda z odnogami), najdłuższe przewody mają po dobre kilkanaście metrów albo nawet więcej, a całość ma pewnie kilkadziesiąt metrrów i działa.

  5. ne7runner says:

    [quote]Czujnik parkowania [ciach] Dodatkowo da systemowi informację, czy wprowadziłem samochód (nie wiem po co, ale znając życie przyda się kiedyś).[/quote]

    Jak to po co? Kiedy wyjezdzasz zeby otworzyl brame i zamknal ja kiedy zaparkujesz po przyjezdzie 🙂

  6. ludek says:

    żeby sprzęgnąć UNO z OpenWRT wystarczy zwykłe UNO czy musi być R3?

  7. Dudzio says:

    Witam. Kiedy można się spodziewać następnych wpisów na temat andruino oraz sterowania bo już mi ślinka cieknie i nie mogę się doczekać 🙂

    • techniczny says:

      Zapewne jak domofon wróci z naprawy gwarancyjnej, to zabiorę się do dalszych testów i wtedy będą kolejne wpisy.

  8. mlody says:

    Witam. Realizuję podobny projekt. Może warto wymienić się doświadczeniami. Bardzo proszę o kontakt bezpośredni.

  9. hertzh1 says:

    Witam
    projektuję właśnie pewne usprawnienia przy pomocy Arduino, do pieca na ekogroszek, może warto wymienić doświadczenia.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: