Skocz do zawartości
dexter

Sterownik automatyki domowej + układ zamka szyfrowego

Pomocna odpowiedź

Witam wszystkich, w poniższym opisie zaprezentuję Wam „wspomagacz lenia”.

Głównym celem opisanej konstrukcji jest umożliwienie użytkownikowi zdalnej lub automatycznej kontroli nad urządzeniami w danym pomieszczeniu, w uproszczeniu jest to prosty sterownik do automatyki domowej. Na wstępie uprzedzam że nie jest to uniwersalny projekt a przygotowany konkretnie pod mój pokój i do innych zastosowań będzie wymagał przeprojektowania dlatego też dodaję tylko plik hex do mikrokontrolera. Gdyby ktoś chciał go wykonać proszę śmiało pisać, chętnie pomogę. Sterownik powstał kilka lat temu więc wygląda można powiedzieć dość nieprofesjonalnie i zapewniam że teraz zrobiłbym go lepiej, ale skoro działa to nie ruszam 😃

Funkcje sterownika to:

- Kontrola ładowania akumulatorów i blokada niektórych funkcji w przypadku rozładowania

- Włączanie / wyłączanie oświetlenia LED z pilota

- Włączanie / wyłączanie oświetlenia LED z przycisku ściennego

- Zmiana położenia rolety okiennej z pilota

- Zmiana położenia rolety okiennej automatycznie (dzień/noc)

- Włączanie / wyłączanie dwóch odbiorników 230V (router i sprzęt audio)

- Włączanie / wyłączanie odbiornika 230V (router) z zamka szyfrowego na drzwiach

- Otwieranie drzwi pokoju z pilota

- Włączanie / wyłączanie oświetlenia LED RGB pokoju

- Wyprowadzenie gniazd do ładowania urządzeń mobilnych

- Włączanie / wyłączanie dwóch dowolnych odbiorników 12V 1A z pilota, w tym jedno wyjście może pracować automatycznie (dzień/noc) jako oświetlenie zewnętrzne domu.

Podkreślone funkcje współpracują z zamkiem szyfrowym opisanym na końcu tego artykułu

Instalacja fotowoltaiczna

Dużo wcześniej przed powstaniem tego projektu miałem w pokoju zbudowaną prostą instalację fotowoltaiczną której jedynym odbiornikiem było oświetlenie LED pokoju i sporo energii było nie wykorzystane. Często bywało tak że w słoneczne dni kontroler ładowania przeładowywał akumulatory i musiałem ręcznie go odłączać. Niestety tak jest jak się kieruje głównie kosztem podzespołów. Instalacja solarna to panel 50W, kontroler ładowania oraz dwa akumulatory żelowe 12V 12Ah połączone równolegle.

Mechanizm rolety

Roleta którą posiadam jest duża i ciężka dlatego wymagała silnego mechanizmu napędowego. Nawet najmocniejsze serwomechanizmy z dodatkowymi przekładniami miały problem z podniesieniem jej gdy była maksymalnie rozwinięta, a dodatkowo brak hamulca komplikował wszystko.

W końcu po kilkunastu próbach różnych napędów wykorzystałem silnik z samohamowną przekładnią ślimakową od szyberdachu jakiegoś samochodu. Silnik jest mocny i cichy a serwa potwornie piszczały. Po usunięciu fabrycznej elektroniki sterującej i wycięciu zbędnych części obudowy udało się go dopasować do mocowania.

Mocowanie silnika jest trochę przesadzone ale chciałem mieć pewność że nic po czasie nie odpadnie, zwłaszcza że ściany mam strasznie kruche i żadne kołki nie chcą się tego pewnie trzymać.

Przerobiłem też mocowanie samej rolety bo wisiała na kołku rozporowym i kawałku plastikowego uchwytu a naciąg sznurka spokojnie zerwał by ją ze ściany.

Całość może wygląda strasznie ale jest ukryta za szafą i niczego nie widać.

Położenie rolety sprawdzane jest tylko w dwóch pozycjach, maksymalnie zwinięta i maksymalnie rozwinięta. Kontrola położenia zrealizowana jest na dwóch kontaktronach zagipsowanych w ścianie, a na listwie rolety przyklejony jest magnes neodymowy.

Na filmie widać jak całość pracuje z pilota. Roletę można zatrzymać dowolnie albo zaczekać aż dojedzie nad kontaktron i sama się zatrzyma. Światło które włączam z pilota to dwie żarówki LED.

Sterownik

Zbudowany został w oparciu o mikrokontroler Atmega8 pracujący z oprogramowaniem napisanym w BASCOM. Do kontroli poszczególnych funkcji wykorzystałem znaleziony pilot nadający w standardzie RC5.

Co do zasady działania to nie ma tu za bardzo czego opisywać bo większość funkcji to po prostu włącz / wyłącz z pilota z wyjątkiem kilku funkcji automatycznych.

Jedną z nich jest kontrola napięcia akumulatorów polegająca na okresowym pomiarze napięcia kanałem ADC przez odpowiedni dzielnik i wypadku przeładowania akumulatora 14,5V odłączenie panelu fotowoltaicznego. Przy spadku do 11V na akumulatorze panel ponownie jest włączany. Poniżej 11V następuje blokada wszystkich funkcji z wyjątkiem otwierania drzwi z pilota oraz włączania routera.

Kolejna to pomiar pory dnia do sterowania roletą czy oświetleniem, a wykonałem go na dzielniku z fotorezystorem wystawionym za okno, następnie na sztywno określiłem progi dzień/noc więc zimą trochę się to nie trzyma realiów, ale i tak zwykle używam pilota 😉

Wyjścia włączane są przez przekaźniki aby nie było problemów z każdym rodzajem obciążenia.

Płytka z przekaźnikami załączającymi 230V została dla bezpieczeństwa wykonana jako osobny moduł i odsunięta od głównego sterownika. Dodatkowo do strony 230V połączone są gniazda z bezpiecznikami szybkimi 2A.

Wspomniane na początku oświetlenie RGB zasilane jest przez moduł stabilizatora LDO Link ustawionego na 12V aby uniknąć uszkodzenia sterownika zbyt wysokim napięciem zasilania. Do taśmy kolorowej led zakupiłem tani i popularny kontroler.

(Zdjęcie znalezione w sieci ponieważ mój kontroler jest zabudowany w ścianie i nie mam możliwości zrobienia fotografii)

Cała elektronika została wciśnięta w pudełko po śledziach 😋 bo najbardziej pasowało mi wymiarami do wnęki pod biurkiem. Panel przedni to wydruk atramentowy zalaminowany. Puste okienko było wypełnione amperomierzem ale uszkodził się mechanicznie przy montażu i musiałem z niego zrezygnować. Większość przewodów wychodzących z kostek wpuściłem w giętki peszel i zabudowałem w ścianie więc nie ma takiego bałaganu jak w obudowie.

Podsumowując wszystko działa tak jak planowałem już dobre trzy lata. W słoneczne dni energii mam aż nadmiar i panel w godzinach popołudniowych jest odłączany. Pobór mocy samego sterownika jest minimalny, największym prądożercą jest roleta (około 4A), później oświetlenie (około 1A). Gorzej jeśli słońca nie ma dwa dni wtedy ograniczam zużycie energii a czasem muszę podłączyć prostownik więc wniosek na przyszłość to dorobienie ładowarki sieciowej.

Prosty zamek szyfrowy

Zapewne większość forumowiczów ceni sobie prywatność, a może nawet ma młodsze rodzeństwo które niczym siostra Dextera sieje spustoszenie w jego wynalazkach i za nic ma wszelkie zakazy grzebania w nie swoich rzeczach. Tak właśnie zrodził się pomysł stworzenia prostego zabezpieczenia pokoju, w którym najczęściej tworzę coś nowego.

Pomysłów było od groma i po długich przemyśleniach wybór padł na zamek szyfrowy.

Schemat powstał dość szybko w programie KiCAD natomiast płytkę zaprojektowałem dopiero po skompletowaniu wszystkich części.

Idea wstępnie została nakreślona więc należało rozejrzeć się po warsztacie za elementami które można jakoś wykorzystać. Po przekopaniu piwnicy wygrzebałem podświetlaną klawiaturę oporową dzięki której wprowadzanie cyfr zrealizowalem na tylko jednym pinie mikrokontrolera, a tym samym mikrokontroler mógł mieć zaledwie osiem wyprowadzeń.

Kolejna wyprawa w czeluści mojej piwnicy zaowocowała niezwykłym znaleziskiem, a był to rygiel elektromagnetyczny z jakiejś starej furtki. Przeczyszczony i nasmarowany otwiera się bez problemu już przy napięciu 10V i pobiera niecały 1A.

Do pełni szczęścia brakowało mi tylko drobnicy elektronicznej i mikrokontrolera, jednak takie elementy trzymam odpowiednio posegregowane wiec nie musiałem długo szukać.

Jako „mózg” urządzenia wybrałem Attiny85 ponieważ posiada dużo pamięci i mało wyprowadzeń, a na tym etapie jeszcze nie wiedziałem że kod zajmie tak niewiele 😉

Przyszła więc pora na oprogramowanie, które powstało na szybko w BASCOM.

W czasie kombinowania nad kodem, wpadł mi do głowy pomysł aby wprowadzić możliwość włączania / wyłączania routera z zewnątrz pokoju. Router często wyłączam gdy jest nie używany albo gdy wyjeżdżam na dłużej, a żeby umożliwić innym domownikom korzystanie z Internetu trzeba było dołożyć taką funkcję do zamka. Ponieważ posiadałem już sterownik zajmujący się prostą automatyką w pokoju umożliwiający kontrolowanie pracy routera wystarczyło połączyć go przewodem z zamkiem i odpowiednio oprogramować. Przewód znalazłem dwu żyłowy, a w Attiny były jeszcze wolne wyjścia postanowiłem więc wprowadzić możliwość odblokowywania zamka z poziomu sterownika pokojowego, po to abym nie musiał za każdym razem wstawać do drzwi żeby wpuścić kogoś kto nie zna kodu, teraz mogłem to robić z pilota.

'żeby otworzyć drzwi naciśnij 0 a następnie wpisz kod w ciągu 10 sekund
'żeby włączyć router naciśnij 9 a następnie 1 w ciągu 2 sekund aby wyłączyć potwórz to
'w razie zapomnienia kodu naciśnij 9 a następnie 7 i trzymaj aż do otwarcia zamka (około 8 sekund)
'blokada zamka naciśnij 9 a następnie 8, odblokowanie powtórz sekwencję



$regfile = "attiny85.dat"
$crystal = 8000000


Config Adc = Single , Prescaler = Auto , Reference = Avcc

Config Timer0 = Timer , Prescale = 256

Wdtcr = &B00101001                                          'konfiguracja watchdoga na 8 sekund


Config Pinb.2 = Output                                      'buzzer
Buzzer Alias Portb.2

Config Pinb.3 = Output                                      'przekaźnik zamka
Zamek Alias Portb.3

Config Pinb.0 = Output                                      'wyjscie sterujace routerem
Router Alias Portb.0



Buzzer = 0                                                  'zerowanie wyjsc
Zamek = 0
Router = 1


Dim Cyfra As Byte                                           'zmienna klawiszy
Dim Wartosc As Word                                         'zmienna klawiatury
Wartosc = 0
Cyfra = 0

Dim Kod(4) As Byte                                          'zmienne pamiętające kod
Kod(1) = 2
Kod(2) = 6
Kod(3) = 8
Kod(4) = 4

Dim Numer1 As Bit , Numer2 As Bit , Numer3 As Bit , Numer4 As Bit       'bity kontrolne kodu
Numer1 = 0
Numer2 = 0
Numer3 = 0
Numer4 = 0

Dim Ster As Bit                                             'zmienna pomocnicza
Ster = 0

Dim R As Bit                                                'zmienna sterowania routerem

Dim Enter As Bit                                            'bit entera
Enter = 0

Dim Blokada As Bit                                          'bit blokady zamka
Blokada = 0

Dim Sekundy As Byte                                         'licznik sekund
Sekundy = 0
Dim Licz_8ms As Byte                                        ' zmienna licznika
Licz_8ms = 0

On Timer0 Licznik
Enable Interrupts
Enable Timer0
Load Timer0 = 250


Start Adc

Zamek = 1                                                   'przy resecie otwiera drzwi na 3 sekundy
Wait 3
Zamek = 0
Start Watchdog

Do
Reset Watchdog


Wartosc = Getadc(2)                                         'odczyt ADC

If Wartosc > 270 And Wartosc < 290 Then                     'klawisz 0
Enter = 1
Cyfra = 0
Buzzer = 1
Sekundy = 0

Elseif Wartosc > 295 And Wartosc < 315 Then                 'klawisz 1
Cyfra = 1
Buzzer = 1
Elseif Wartosc > 320 And Wartosc < 340 Then                 'klawisz 2
Cyfra = 2
Buzzer = 1
Elseif Wartosc > 355 And Wartosc < 375 Then                 'klawisz 3
Cyfra = 3
Buzzer = 1
Elseif Wartosc > 395 And Wartosc < 415 Then                 'klawisz 4
Cyfra = 4
Buzzer = 1
Elseif Wartosc > 445 And Wartosc < 465 Then                 'klawisz 5
Cyfra = 5
Buzzer = 1
Elseif Wartosc > 505 And Wartosc < 525 Then                 'klawisz 6
Cyfra = 6
Buzzer = 1
Elseif Wartosc > 590 And Wartosc < 610 Then                 'klawisz 7
Cyfra = 7
Buzzer = 1
Elseif Wartosc > 705 And Wartosc < 725 Then                 'klawisz 8
Cyfra = 8
Buzzer = 1
Elseif Wartosc > 875 And Wartosc < 895 Then                 'klawisz 9
Cyfra = 9
Buzzer = 1
End If



If Wartosc > 270 Then                                       'czekanie na puszczenie
Do
Wartosc = Getadc(2)
Reset Watchdog
Loop Until Wartosc < 270
End If


If Enter = 1 Then                                           'kontrola kodu

If Cyfra = Kod(1) Then
Numer1 = 1
End If
If Cyfra = Kod(2) And Numer1 = 1 Then
Numer2 = 1
End If
If Cyfra = Kod(3) And Numer1 = 1 And Numer2 = 1 Then
Numer3 = 1
End If
If Cyfra = Kod(4) And Numer1 = 1 And Numer2 = 1 And Numer3 = 1 Then
Numer4 = 1
End If

If Cyfra <> Kod(1) And Cyfra <> Kod(2) And Cyfra <> Kod(3) And Cyfra <> Kod(4) Then       'jeśli wciśnięto inną cyfrę to zeruj wszystko
Numer1 = 0
Numer2 = 0
Numer3 = 0
Numer4 = 0
End If


If Numer1 = 1 And Numer2 = 1 And Numer3 = 1 And Numer4 = 1 And Blokada = 0 Then       'jeśli kod poprawny otwiera zamek
Sekundy = 0
Zamek = 1
Numer1 = 0
Numer2 = 0
Numer3 = 0
Numer4 = 0
Cyfra = 0
Enter = 0
End If
Reset Watchdog
End If


If Enter = 0 Then                                           'umożliwia włączenie routera lub lamp

If Cyfra = 9 Then
Sekundy = 0
Ster = 1
Cyfra = 0
Reset Watchdog
End If

End If

Buzzer = 0

If R = 1 Then
Router = 0
R = 0
End If


Waitms 200
Router = 1


Loop

End


Licznik:
Load Timer0 = 250
Incr Licz_8ms

If Licz_8ms = 125 Then
Licz_8ms = 0
Reset Watchdog
If Enter = 1 Then                                           'czas na wpisanie kodu
Zamek = 0
Incr Sekundy
If Sekundy = 10 Then
Sekundy = 0
Enter = 0
Numer1 = 0
Numer2 = 0
Numer3 = 0
Numer4 = 0
Cyfra = 0


End If
End If



If Zamek = 1 Then                                           'otwarcie zamka
Incr Sekundy
Reset Watchdog
If Sekundy = 3 Then
Zamek = 0
End If
End If

If Ster = 1 Then                                            'umozliwia zmianę stanu routera lub lamp przez 2 sekundy
Incr Sekundy


If Cyfra = 1 Then                                           'zmienia stan routera
R = 1
Cyfra = 0
Ster = 0
End If


If Cyfra = 7 Then                                          'awaryjne otwieranie drzwi watchdogiem
Do
Wartosc = Getadc(2)
Loop Until Wartosc < 270
Cyfra = 0
End If

If Cyfra = 8 Then
Toggle Blokada
Cyfra = 0
Ster = 0
End If

If Sekundy = 2 Then
Sekundy = 0
Ster = 0
Cyfra = 0
End If
End If

End If
Return

Po skompletowaniu wszystkiego pozostało tylko zrobić płytkę i zamontować zamek na drzwiach.

Było to najtrudniejsze zadanie bo przewody nie mogą być widoczne a dodatkowo drzwi muszą być ruchome. Ostatecznie przewody puściłem listwą przypodłogową do drzwi, a następnie wyfrezowałem w drzwiach kanały na przewody i wszystko zaszpachlowałem i pomalowałem. Jedynym widocznym elementem jest biała puszka przykrywająca elektronikę zamka bo nie było gdzie jej schować.

Zamek zasilany jest z instalacji solarnej więc nie ma problemu z brakiem prądu, dodatkowo jest możliwość otwarcia drzwi po odkręceniu gałki. W przypadku jakiejkolwiek awarii przewód zasilania rygla przebiega w jednym miejscu tak aby umożliwić do niego dostęp i podanie zasilania z zewnątrz.

Na zdjęciach jeszcze widoczne przewody bo układ był w fazie testów, teraz wszystko jest ukryte wewnątrz drzwi i listew. Niestety nie mam zdjęć efektu końcowego.

Poniżej jeszcze krótkie filmiki z testów. Brzęczyk w rzeczywistości jest ledwo słyszalny.

Schematy (wiem tragicznie narysowane) i PCB zrobione w programie KiCAD.

Dziękuję wszystkim którzy dotrwali do końca, pozdrawiam i zapraszam do dyskusji Tomek.

Zamek.rar

Zamek.pdf

Sterownik.rar

Schemat_sterownika.pdf

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

dexter, dzięki za opis konstrukcji!

Udostępnij ten post


Link to post
Share on other sites

Mam nadzieję że kogoś to zainspiruje do działania i stworzy coś kreatywnego 🙂 Mnie na ten temat nakręcił przedmiot omawiający właśnie automatykę domową i wszelkie systemy które się tym zajmują.

Metod jest naprawdę wiele i można wykorzystać praktycznie dowolne układy, ja osobiście użyłem procesora bo skoro się da to bez sensu pakować jakiś zaawansowany układ 😉

Udostępnij ten post


Link to post
Share on other sites

Po obejrzeniu ostatniego filmu "siostra Dextera" dalej może siać spustoszenie... 🙂

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...