dexter Napisano Sierpień 13, 2015 Udostępnij Napisano Sierpień 13, 2015 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 1 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Sierpień 13, 2015 Udostępnij Sierpień 13, 2015 dexter, dzięki za opis konstrukcji! Link do komentarza Share on other sites More sharing options...
dexter Sierpień 13, 2015 Autor tematu Udostępnij Sierpień 13, 2015 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 😉 Link do komentarza Share on other sites More sharing options...
AE Sierpień 18, 2015 Udostępnij Sierpień 18, 2015 Po obejrzeniu ostatniego filmu "siostra Dextera" dalej może siać spustoszenie... 🙂 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »