Napisz do mnie

Wyślij prywatną wiadomość

AUTOMATYKA DOMOWA PO MOJEMU

opublikowano: 6 paź 2014 wyświetleń: 2608 komentarzy: 0

#automatyka domowa #home automation #arduino #dom #dom inteligentny #plc #CAN BUS #avr

Temat automatyki domowej krąży po mojej głowie już od paru lat. Nadeszła pora aby wdrożyć taki system we własnym mieszkaniu ;). Garść informacji o moich poszukiwania, systemie który zacząłem tworzyć, oraz jak to się skończyło... ekhm, zaczęło.

Automatyka domowa czy inteligentny dom?

Charakter tej strony, a więc w pewnym sensie mój charakter ;), nakazuje poszukać alternatywnych rozwiązań w stosunku do gotowych systemów automatyki domowej. Myślę, że ceny systemów oferowanych na rynku nie jedną osobę zwaliły z nóg. Niby są nowoczesne, uniwersalne, w pełni konfigurowalne, ale co z tego, skoro za wątpliwą przyjemność włączenia telefonem światła w łazience trzeba zapłacić grube tysiące, a w przypadku instalacji w domkach są to i dziesiątki tysięcy. Przeszukując Internet natknąłem się na wiele systemów "inteligentnych" domów budowanych przez entuzjastów. Niestety 90% z nich kończy jako włącznik lampki biurkowej uruchamiany telefonem.
Chyba nie o to jednak chodzi w tym wszystkim. Mój punkt widzenia jest taki, że automatyka domowa ma ułatwiać pewne zadania, podwyższać komfort życia, ale gdy widzę człowieka, który przez 15 sekund szuka w telefonie włącznika oświetlenia zamiast podejść do ściany i go pstryknąć to nie dziwię się, że niektórzy patrzą na tą całą fascynację automatyką dosyć sceptycznie.

Takim rozwiązaniom z pewnością daleko do automatyki domowej, a obok inteligentych domów to to nawet nie stało. Większość systemów inteligentnych to w istocie systemy automatyki domowej. Mają one z góry zaprogramowane zachowania. System inteligentny w mojej ocenie posiada zdolność uczenia się i podejmowania działań na podstawie wcześniejszych doświadczeń. Swoje boje zacznę zatem od zautomatyzowania mieszkania, w którym pomieszkuję, a czy system będzie miał jakieś przebłyski inteligencji... to zobaczę jak już będzie działać światło :).

Trudna droga wyborów, kompromisów i wyrzeczeń

Ceny gotowych systemów zabijają. Najłatwiej zobrazować je na najprostszym module przycisku i sterownika żarówki. W systemach typu KNX ceny te kształtują się na poziomie 300-500 PLN. Czujnik temperatury, kolejne 150PLN. Jako osoba ogarnięta nieco w elektronice nie mogę zaakceptować takiej ceny, zważywszy na to, że cyfrowy czujnik temperatury kosztuje 4PLN ;). Oczywiście, do tego trzeba doliczyć jeszcze trochę innego hardłeru... ale ten również można zrealizować o wiele taniej.
Inna sprawa, że moduły zazwyczaj są uniwersalne. Aby stworzyć system realizujący pokrętne zadanie trzeba zaopatrzyć się w wiele modułów - a to podnosi znów koszty.

Zatem wiedziałem już, że muszę znaleźć system tani, rozszerzalny, abym mógł dodawać do niego własne moduły z pokrętną logiką, lub stworzyć ten system samemu od podstaw. Na początku zafascynowałem się sterownikami PLC. Jest w sieci kilka takich projektów. Problem w tym, że system jest scentralizowany, no i też wcale najtańszy nie jest (około 2000 za sterownik). Nie miałem również żadneg doświadczenia w programowaniu PLC, co stanowi pewną przeszkodę, zwłaszcza czasową.

W międzyczasie przewinęło się kilka projektów opartych o zwykły komputer PC. O ile możliwości są olbrzymie, o tyle system cechuje relatywnie duża zawodność, zwłaszcza, że chciałem go oprzeć o system Windows ;). Dodatkowo ralizację czujników i komunikację z komputerem w obu powyższych przypadkach musiałbym również sam zapewnić. Nie miałem na to pomysłu.

W fazie trzeciej, zacząłem się bliżej interesować mikrosterownikami ATMEL AVR. Są to programowalne mikroprocesory zawierające na pokładzie cały niezbędny osprzęt aby stworzyć bardzo prosty komputerek. Problem jaki tu się pojawia, to konieczność zaprojektowania modułów (płytek PCB), obeznania się z samym AVRem, w końcu stworzenie sieci w której urządzenia mogłyby się ze sobą komunikować. Było to jednak zbyt duże zadanie, zwłaszcza dla osoby pracującej - a ja dodatkowo jestem dosyć leniwy ;).

Poszukiwania zaprowadziły mnie do sieci Ethernet. Postanowiłem, że każde urządzenie będzie posiadało mała kartę sieciową (są gotowe moduły do kupienia), każde urządzenie będzie wpięte w ruter i będzie można sterować każdym modułem w sieci LAN.

Wtedy znalazłem dosyć tanie sterowniki PLC softwareowe firmy Array . Koszty około połowę niższe niż proste sterownik PLC a samo programowanie odbywało się na zasadzie rysowania schematu w dołączonym darmowym oprogramowaniu a następnie skompilowaniu programu i wgraniu do urządzenia. W ostatniej chwili, minuty przed zakupem systemu jednak się rozmyśliłem ;).

Postanowiłem sprawdzić czymże jest popularne Arduino, bo jakoś nie miałem okazji zerknąć na to wcześniej. Okazało się, że jest to bardzo fajna platforma z AVRem na pokładzie, ale odpada tutaj konieczność tworzenia i projektowania samodzielnie płytek. Do arduino można dokupić gotowe moduły przekaźników, czujników itp. Odpadają zatem zadania związane z projektowaniem i wykonaniem PCB. Do tego ceny pojedynczych modułów mieszczą się w granicach 5-50 zł.

Platforma automatyki oparta na Arduino

Arduino ma swoje wady (w tym okrutne środowisko programowania), zwłaszcza jeśli siada do niego programista przyzwyczajony do Visual Studio i C++. Przebrnąłem jednak przez te niedoskonałości i kod tworzyłem w VS. Napisałem kilka podstawowych modułów (klas), które miały posułatwić budowę logiki systemu. Między innymi menadżer zadań wykonywanych cyklicznie (task manager), automat skończony (Finite State Machine), który miał pomóc w ogarnięciu procesów i czytelnym zapisie logiki wykonywanej przez dany moduł. Zrealizowałem też programowy moduł przycisku i wyjścia.

Takie podejście umożliwia w jednym arduino umieścić kilka potrzebych funkcji poprzez żąglowanie podstawowymi blokami kodu realizującymi zadania. Do rozpatrzenia pozostała sieć. Urządzenia muszą się komunikować. Postanowiłem pociągnąć temat sieci Ethernet. Okazało się jednak, że proste moduły ethernetowe oparte o układ enc28j60 mają dosyć poważne ograniczenia, np do liczby obsługiwanych połączeń jednocześnie. O ile pamiętam są to okolice 1-4 połączeń, zależnie od modułu. Do tego znane problemy z zawieszaniem się interfejsu, spowodowowały, że zacząłem szukać dalej.

Wykluczyło to zatem Ethernet jako nośnik informacji. Zainteresowałem się magistralą RS485. Ta jednak bardziej nadaje się do architektury master-slave. W moim systemie każde urządzenie miało być równoważne (interfejs multimaster).

Ostatecznie zdecydowałem się na magistralę CAN. Magistrala stosowana w samochodach, jest bardzo odporna na zakłócenia, obsługuje architekturę multimaster, obsługuje wykrywanie i obsługę kolizji na linii - więc wszystko czego mi trzeba. Do arduino są rónież gotowe moduły sterownika magistrali CAN. Zamówiłem kilka do testów.

moduły CAN do arduino

Zabrałem się zatem za projektowania protokołu komunikacji pomiędzy modułami CAN.

moduł CAN projektowanie

Zbudowałem i uruchomiłem działający model pracujący w sieci CAN. Każde Arduino podpięte pod USB, obsługiwane przez osobne instancje Visual Studio.

prototyp sieci arduino

Poniżej krótki film prezentujący system w działaniu. Składa się z trzech modułów Arduino, do jednego z nich podłączone są przyciski dotykowe, do drugiego moduł wykonawczy z przekaźnikami, trzeci robi za monitor tego co dzieje się na magistrali CAN i wysyła wiadomości do komputera.

Pomimo, że Arduino ma gotowe moduły wykonawcze i czujniki do kupienia za nieduże pieniądze to niestety za każdą górką była kolejna. Pojawiły się problemy zasilania modułów, zwłaszcza oddalonych od zasilacza (odpowiednik PoE - Power Over Ethernet), napięcia, ich spadki na przewodach, grzanie sie stabilizatorów napięcia w Arduino, które lubi mieć zasilanie w okolilcah 8-9V.
Ostatecznie problemy z montażem modułów w rozdzielnicy. Nie są one przystosowane do szyny TS-35, zatem albo montaż na kołeczkach, albo poszukiwania pasującej obudowy na szynę. A to tylko kilka problemów natury sprzętowej.

Istotną sprawą jest też programowanie systemu. Bootloader Arduino fabrycznie umożliwia programowanie go za pomocą kabla USB. Jeśli system miałby być rozproszony to raczej słabym rozwiązaniem jest bieganie z laptopem do każdego urządzenia aby zaktualizować firmware lub zmienić jakieś parametry. O ile parametry można jeszcze przesłać przez magistralę CAN do modułu a ten zapisze je sobie w pamięci EEPROM o tyle ze zmianami w kodzie urządzenia jest gorzej. Trzeba by przerobić bootloader Arduino i dostosować go do pracy z magistralą CAN. Po krótkiej analizie problemu stwierdziłem, że nie mam na to czasu. Dla potomnych podlinkuję artykuł na blogu człowieka, który taki bootloader dostosował do magistrali CAN http://www.kreatives-chaos.com/artikel/can-bootloader - niestety artykuł jest po niemiecku ;).


Biorąc pod uwagę, że w części mieszkania mamy prowizoryczne oświetlenie od paru miesięcy gdy odbywał się tam remont oraz wizję spędzenia długich dni, tygodni czy miesięcy(?) na dopieszczaniu szczegółów stwierdziłm ostatecznie, że nie idę tą drogą. Wybieram gotowy system.

Haha ha. Ale nie do końca taki gotowy ;).

HAPCAN Home Automation

Strona poświecona systemowi znajduje się pod adresem http://hapcan.com. Jest on oparty o magistralę CAN. W jego skład wchodzą proste moduły wejścia i wyjścia i co najważniejsze.. jest to system otwarty, a przy tym KITy czy nawet gotowe moduły są relatywnie niedrogie. Autor systemu zrobił doskonałą robotę. W zasadzie wszystkie moje problemy zniknęły ;), nie muszę się martwić o PCB, obudowy, oprogramowanie, programowanie samych modułów, testy, bo to wszystko już jest. Dodatkowo otwartość systemu powoduje, że mogę do niego dołączać kolejne moduły, zaprojektowane samodzielnie. W tej chwili najważniejsze jest ogarnięcie podstawowych scenariuszy automatyki, czyli włączniki, światła i rolety. Żeby jednak nie było zbyt łatwo i nieco taniej ;), zamówiłem KITy do samodzielnego montażu - zatem trochę brudnej roboty też uświadczyłem ;).

Pisząc ten artykuł spoglądam na zmontowane już moduły HAPCAN leżące na biurku oraz na oprogramowanie i dokumentację systemu i już wiem, że samodzielne wykonanie tego wszystkiego od podstaw potrwało by jeszcze dobry rok... Zatem nie będę kontynuował rozwoju mojego systemu. Podejmę raczej próbę podpięcia się z modułami Arduino do systemu HAPCAN, tak aby zrealizować bardziej fikuśne urządzenia. Same moduły HAPCAN mają spore możliwości, jednak skomplikowanej logiki na nich nie osiągnę.

Już niebawem opis moich przebojów z tymże systemem.

 


Comments (0)


Allowed tags: <b><i><br>


PODZIEL SIĘ

PODZIEL SIĘ