Od dłuższego czasu chodzi mi po głowie pomysł zbudowaniu systemu, który będzie w stanie sterować wymarzonym domem. Na dom na razie zbieram, ale między czasie postanowiłem już pomyśleć o tym systemie :) Może kogoś z Was to zaciekawi :)
Założenia
Gdy myślę o inteligentnym domu przed oczami mam wiele funkcjonalności, które chciałbym by system przez mnie zrobiony posiadał. Niestety wiele z nich jest na razie dla mnie abstrakcją ze względu na to, że jestem prostym elektrykiem i na studiach nie bardzo przykładałem uwagę do mikroprocesorów, sterowania i języków programowania. Dopiero teraz postanowiłem się za to zabrać i powoli przekuwać plany w rzeczywistość. Dlatego też zaczynam bardzo powoli. Chciałbym aby mój system sterowania domem posiadał następujące funkcje:
- odczyt temperatury w pokojach i na zewnątrz (przydatne do sterowania ogrzewaniem)
- pomiar nasłonecznienia (żebym wiedział, czy solary dadzą radę nagrzać wodę do kąpieli czy jednak będę musiał dogrzać ją za pomocą prądu/gazu/pieca)
- sygnalizacja zamknięcia drzwi i okien (żebym wiedział wychodząc do pracy czy aby na pewno przekręciłem kluczykiem w drzwiach)
- sterowanie oświetleniem w sypialni (rzucanie kapciami w wyłącznik światła by nastała noc w pokoju nie jest wygodne)
- sterowanie roletami w oknach (powiązane z czujnikiem nasłonecznienia i temperatury tak by system wiedział czy ma wpuścić słońce do pokoju by nagrzać w pomieszczeniu czy wręcz przeciwnie gdyż jest już wystarczająco ciepło!)
itp… itd..
Jest tego trochę, wydaję się to bardzo skomplikowane i pewnie tak jest. Mniejsza z tym. Damy radę to rozkminić :)
Hardware
Czyli tak zwany sprzęt. Najważniejsze to przygotować coś, co wszystkimi tymi rzeczami będzie zarządzać. Będzie zamieniać odczyt z czujnika temperatury z Voltów na stopnie Celsiusza, dodawać bądź odejmować te wartości i podejmować decyzję co dalej robić. Przekazywać komunikaty do silników aby te obróciły się o tyle żeby ustawić rolety w odpowiednim położeniu, bądź nastawić panele fotowoltaiczne tak by słoneczko maksymalnie je oświecało.
Sprzętem tym będzie musiał być komputer. Rozeznałem się trochę, jest tego na rynku sporo. Od najbardziej popularnych Rasberry, przez Beaglebone po Intel Edisony i inne podobne urządzenia. Osobiście celuję w Malinkę,
natomiast na chwilę obecną udało pożyczyć mi się Beaglebone w wersji B. Na nim też zacznę pierwsze testy.
Jest to mini komputer, który dorównuje malince pod względem parametrów. Ma również kilka zalet względem Rasberry. Powiem o nich innym razem, wszak to tylko zajawka serii :)
Początkowo myślałem jeszcze o wykorzystaniu mikrokontrolera z serii STM32, w moim przypadku Nucleo:
Jednak po dłuższej rozkminię wyszło na to, że STMik może nie dać sobie rady z tym wszystkim co sobie wymyśliłem. Poza tym chciałem by efekty pracy (a także względne sterowanie całym układem) było możliwe z poziomu telefonu/komputera. A tutaj minikomputer z Linuxem na pokładzie poradzi sobie lepiej niż mały mikroprocesor. Tak mi się przynajmniej wydaje :)
Software
Czyli po ludzku tak zwane oprogramowanie. Tutaj wszystko rozbija się na dwie części:
a) komunikacja z peryferiami, to jest odczyt temperatury czy sterowanie silnikami
b) odebranie poleceń od użytkownika i zaprezentowanie mu danych
Pierwsza część to typowe programowanie systemów wbudowanych (embedded), drugie natomiast więcej ma wspólnego z aplikacjami sieciowymi. Uznałem bowiem, że łatwiej będzie mi wykonać aplikację, która będzie zainstalowana na wewnętrznym serwerze, do której dostęp będę miał z poziomu wszystkich urządzeń zalogowanych do sieci poprzez przeglądarkę internetową – niż tworzyć aplikację oddzielnie na Windowsa, androida i nie wiadomo czego jeszcze.
Do obydwu części software’u postanowiłem zaprzęgnąć język programowania, który nazywa się Python. W miejscach, gdzie nie da rady on poskromić systemów wbudowanych, będę ratował się językiem C, wktórym co nieco programowałem mikroprocki. Jeśli chodzi o część, którą będzie widział użytkownik końcowy, postanowiłem nauczyć się frameworka (kolejne dziwne słowo) Django i o niego oprzeć swoją „domową” stronę. Czas pokażę co uda mi się z tego zrobić.
Kolejne etapy mojej walki z poskramianiem Pythona i systemów wbudowanych już wkrótce! :)
Za każdego upvota i komentarz z góry dziękuję. :)