Było już na elektrodzie prezentowanych wiele zamków szyfrowych – z pełną klawiaturą, dwoma przyciskami i jednym też. Mój projekt z serii pchełka zrealizowałem na Attiny13 i jednym przycisku. Potrzebne mi było rozwiązanie nieco inne – coś co nie będzie chronić sejfu w banku ale coś prostego i malutkiego co zabezpieczy układ przed np. zabawą dzieci (dorosłych też) we włączanie/wyłączanie jakiegoś urządzenia. Może też spełniać rolę włącznika gdzie wymagana jest trzeźwość umysłu lub po prostu immobilizer dla auta czy motoru. Pomyślałem, że może się komuś przyda taki gadżet więc umieszczam tu kompletny opis. Zdjęcie przedstawia jeszcze prototyp na płycie stykowej. Układ docelowy jest na kostce w wersji SMD. Myślę, że moderator przymknie oko, na brak gotowego układu - w końcu wartość intelektualna (program) to też coś co sam zrobiłem
Schemat jest bardzo prosty:
Program napisałem w BASCOM i po kompilacji zajmuje dokładnie 1024 bajty
Działanie szyfrowego przycisku przypomina nieco alfabet Morse'a gdzie kodem jest krótkie i długie przyciskanie w odpowiednim czasie. Do dyspozycji mamy w sumie tylko ...256 kombinacji. Może to i nie dużo ale jak wspomniałem banku toto chronić nie będzie, a dodatkowym utrudnieniem jest właśnie czas wprowadzania kodu. Uwierzcie naprawdę należy się z tym oswoić ale jak już chwilkę poćwiczymy to problemu nie ma.
Po włączeniu zasilania w ciągu 1,5s układ robi wewnętrzne porządki i jest gotowy do pracy. Posiada dwa tryby i wszelkie flagi konfiguracyjne są nieaktywne.
Tryb OFF - przekaźnik wyłączony i oczekiwanie na kod. W zasadzie to jedyna funkcja w tym trybie...
Przycisk włącza urządzenie (przechodzi w tryb ON) po wprowadzeniu 8-o bitowego kodu (podobnie jak w transmisji szeregowej).
Czasy dla przycisku:
- "0" krótki impuls 25ms - 150ms
- "1" długi impuls 150ms - 1s
- maksymalny czas przerwy między impulsami przy wprowadzaniu kodu 1,5s. - po tym czasie kod należy wprowadzać od nowa
Przez cały czas trzymania przycisku aktywna jest czerwona dioda (dla wygody i pewności, że przycisk jest wciśnięty).
Tryb ON - przekaźnik załączony. Wyłączenie (przejście do OFF) następuje po krótkim wciśnięciu przycisku (na długi nie zareaguje).
W trybie tym możliwa jest też wszelka konfiguracja przycisku:
- [A] przytrzymanie przycisku przez 2s do 3,5s - jednorazowe żądanie kodu warunkiem aby przejść do trybu OFF (czyli wyłączyć przekaźnik). Miga wtedy cały czas dioda zielona co 0,5s (moment wejścia w tą funkcję niewidoczny). Teraz jeśli nie wprowadzimy kodu to nie wyłączymy urządzenia.
- [B] przytrzymanie przycisku przez 4s do 5,5s - wyłączenie żądania kodu. Przycisk wtedy działa jak zwykły ...przycisk (bez kodu). Włączenie bądź wyłączenie przekaźnika odbywa się prze krótkie (na długie brak reakcji) wciśnięcie przycisku. Tryb jest aktywny do momentu ponownego przytrzymania przycisku w trybie ON przez 4s do 5,5s lub do momentu wyłączenia zasilania (moment wejścia w tą funkcję niewidoczny).
- [C}przytrzymanie przycisku przez 6s - wejście do zmiany kodu. Po tym czasie zaczyna szybko migać zielona dioda co 75ms i miga tak do momentu wyjścia z opcji zmiany kodu.
Procedura zmiany kodu wygląda następująco:
Wprowadzamy nowy kod z zachowaniem czasów dla przycisku, o których pisałem wcześniej. Po wprowadzeniu ostatniego ósmego stanu, wciskamy znowu przycisk i trzymamy przez 6s aż przestanie migać dioda. Czas przerwy od wprowadzenia kodu do przycisku zatwierdzającego nie może być dłuższy niż 1,5s - po tym czasie następuje automatyczne wyjście z trybu zmiany kodu bez jego zmiany. Wyjść z tego trybu można też przez przytrzymanie przez 6s przycisku po wprowadzeniu niepełnego kodu (program bada czy było 8 znaków).
Wprowadzony kod jest zapamiętywany w pamięci EEPROM więc po wyłączeniu urządzenia i jego ponownym włączeniu będzie aktualny.
Dodatkowe warunki:
jeśli aktywna jest opcja [A] wtedy niemożliwe jest wejście w opcje [B] i [C] oraz dezaktywowana jest opcja [B] jeśli była aktywna,
przy aktywności [C] nie możliwe jest wejście w opcje [A] i [B] oraz dezaktywowana jest opcja [B] jeśli była aktywna,
A co się stanie jeśli zapomnieliśmy kodu? Odłączamy zasilanie, przytrzymując przycisk ponownie włączamy i mamy chwilowy kod "00000000" - w pamięci EEPROM jednak cały czas siedzi ten zapomniany więc dobrze jest wejść w tryb ON i go zmienić...
Myślę, że jak na Attiny13 i BASCOM to sporo udało mi się upchać. Jeśli Wam się podoba to... klik FAJNE
Fajne? Ranking DIY