Automatyka domowa jest przyszłością - to już wiemy. Jej główną wadą na dziś jest brak kompatybilności między rozwiązaniami rożnych producentów oraz wygórowane ceny poszczególnych modułów. Jak zbudować taki system samemu niskim nakładem finansowym, w sposób bardzo prosty i bez dużej wiedzy? Dzisiaj zajmiemy się sterowaniem bramami garażowymi.

Na wstępie chciałem zaznaczyć, że będzie to jedyny moduł, którego nie będę sterował przez HomeKit. Powód jest prosty - rozwiązanie Apple wspiera tylko automaty posiadające dedykowane przyciski do otwierania i zamykania bram oraz informujące je o aktualnym stanie. Takie coś wymagałoby ingerencji w mój sterownik. Szukałem dla Was sposobu uniwersalnego i najprostszego w budowie. U mnie jeden przycisk na pilocie odpowiada bramie wjazdowej, a drugi garażowej.

Jak już wspomniałem w poprzednim wpisie, do wysterowania dowolnego pilota potrzebować będziemy następujących rzeczy:

  • pilot do bram, ja wykorzystałem stary zapasowy,
  • lutownica,
  • Raspberry PI, dowolny model (polecam najstarszy, nie potrzebujemy mocy obliczeniowej) z podłączeniem do internetu przez kabel lub Wi-Fi (odradzam, zależy nam na stabilności połączenia) oraz kartą SD,
  • kabelki do płytek prototypowych
  • tranzystory, u siebie zastosowałem BC337 - ilośc zależy od ilości przycisków na pilocie.

Większość pilotów jest zasilana przez baterię 12V, jednak zwykle mają one tolerancję od 5V co pozwoli na bezpośrednie zasilanie z RaspberryPI kosztem zasięgu. Polecam umieścić pilot z kontrolerem w garażu i podłączyć do sieci domowej kablem sieciowym, zależy nam na niezawodności, Wi-Fi tego nie zapewnia. Jeśli uporamy się z połączeniem sieciowym możemy zabrać się za pilota. Po rozebraniu obudowy zobaczycie małą płytkę, do której musimy przylutować kilka kabelków.

Pozwolę sobie szybko omówić schemat, linie czarne to kable, które podłączymy później do RaspberryPI: zasilanie i sterowanie dwoma tranzystorami. Czerwone zaś to połączenia tranzystora z przyciskiem. Jeśli wasz pilot różni się od mojego sprawdźcie jedną rzecz przed lutowaniem z wsadzoną baterią: po zwarciu dwóch nóżek przycisku powinniśmy zasymulować jego naciśnięcie. Z reguły nóżki są cztery, mogą być też tylko dwie - w moim przypadku jedna i druga strona działa dokładnie tak samo:

Jak uda wam się wszystko wlutować całość powinna wyglądać tak:

Kolejnym krokiem jest podłączenie pilota do Raspberry według schematu:

  • "+" do 5V(czerwone piny na schemacie)
  • "-" do uziemienia(czarne piny na schemacie)
  • sterowanie tranzystorami do pinów GPIO(zielone piny na schemacie, ja wybrałem GPIO 21 i 22)

Jeśli do tego momentu wszystko dobrze zrobiliście to "malinka" powinna się normalnie włączyć i na pilocie nie zapalą się żadne diody sygnalizujące naciśnięcie przycisków. W przeciwnym przypadku warto sprawdzić jak przylutowany jest tranzystor, jest tam mało miejsca i mogło wystąpić jakieś zwarcie tak jak u mnie na początku:

Teraz potrzebujemy prostego programu, który podając przez chwilę stan wysoki na środkowy pin tranzystora umożliwi przepływ prądu między nóżkami przycisku. Do sterowania GPIO będzie nam na RaspberryPi potrzebna biblioteka WiringPI. Zainstalujecie ją wklejając w konsoli następujące komendy:

sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Po zakończeniu procesu sprawdzamy czy wszystko działa:

gpio -v

Powinniście teraz zobaczyć coś podobnego:

Ostatnim ważnym krokiem do wykonania na RaspberryPI będzie skompilowanie dwóch małych programów, każdy z nich będzie przez chwilę naciskał przycisk na naszym pilocie. Kod jest bardzo krótki, każdy sobie z tym poradzi:

#include <wiringPi.h> //wczytujemy wiringPi
int main (void)
{
  wiringPiSetup () ;
  pinMode (**NUMERPINAGPIO**, OUTPUT) ; // gdzie NUMERPINAGPIO odczytujemy z schematu dla wiringPi
    digitalWrite (**NUMERPINAGPIO**, HIGH) ; delay (250) ; // naciskamy przycisk na 250ms, powinno starczyć dla każdego pilota 
    digitalWrite (**NUMERPINAGPIO**,  LOW) ; delay (250) ;
  return 0 ;
}

Kompilujemy:

gcc -Wall -o nazwaprogramu plikźródłowy.c -lwiringPi

Sprawdzamy czy działa:

sudo ./nazwaprogramu

Teraz powinna się zaświecić dioda na pilocie i otworzyć brama. Jeśli dioda się zapala, a brama się nie otwiera warto spróbować zmienić czas naciśnięcia przycisku na dłuższy niż 250ms. Połączenie SSH z RaspberryPI możemy już zamknąć, przejdziemy teraz na urządzenie z iOS.

Do zdalnego wykonania komendy w szybki i wygodny sposób z telefonu lub zegarka potrzebujemy aplikacji Workflow. Tworząc Workflow, wybieramy akcję SSH i konfigurujemy adekwatnie do adresu IP RaspberryPI i nazwy programu:

Skończone! Teraz jesteś w stanie otworzyć swój dom z swojego Apple Watcha lub iPhone'a i nie musisz zawsze pamiętać o kluczach.

Mój poradnik zakłada działanie modułu po podłączeniu się do sieci Wi-Fi, dostęp zdalny można skonfigurować przez podanie w Workflow zewnętrznego adresu IP naszego routera i otworzeniu portu SSH. Polecam jednak zmienić wtedy jego numer i ustawić silne hasło. W sieci znajdziecie pełno polskich poradników o zaawansowanej konfiguracji SSH w Raspbianie, jest to bardzo prosty i przyjemny proces.

W następnej części serii zajmiemy się gniazdkami radiowymi sterowanymi przez HomeKit, pełno gotowych zestawów znajdziecie na Allegro - ważne jest tylko, żeby każde gniazdko miało na pilocie włącznik i wyłącznik. Inne nie będą działać.