Spisu treści:

Cryptap: zamek do drzwi oparty na rytmie: 5 kroków
Cryptap: zamek do drzwi oparty na rytmie: 5 kroków

Wideo: Cryptap: zamek do drzwi oparty na rytmie: 5 kroków

Wideo: Cryptap: zamek do drzwi oparty na rytmie: 5 kroków
Wideo: CrypTap Bitcoin Maden Kazarak Para Kazanma 2024, Listopad
Anonim
Cryptap: zamek do drzwi oparty na rytmie
Cryptap: zamek do drzwi oparty na rytmie
Cryptap: zamek do drzwi oparty na rytmie
Cryptap: zamek do drzwi oparty na rytmie
Cryptap: zamek do drzwi oparty na rytmie
Cryptap: zamek do drzwi oparty na rytmie

Zainspirowany kilkoma mechanizmami odblokowującymi drzwi, które widziałem na hackaday.com, postanowiłem stworzyć taki sam. Ten ma interfejs z dwoma przyciskami; jeden, aby rozpocząć i zakończyć przesyłanie hasła, a drugi, aby wbić się w rytm, który jest Twoim hasłem. Jest też lampka stanu. Udało mi się zbudować to naprawdę tanio, używając części, które wygrzebałem w ciągu ostatnich kilku miesięcy. Jedyne, za co musiałem zapłacić, to sam mikrokontroler, który kosztował 21 USD (https://www.pjrc.com/teensy/) i jakiś przewód do zawieszania obrazów, który miałem wcześniej.

Fajnie jest stukać w motyw Gwiezdnych wojen lub coś, aby wejść do mojego pokoju. Teraz nie muszę się martwić, że znowu zamknę się z pokoju! Poza tym czuje się dobrze i geekowo.

Krok 1: Części i narzędzia

Części i narzędzia
Części i narzędzia
Części i narzędzia
Części i narzędzia

Wybrałem Teensy, ponieważ jest to mój pierwszy mikrokontroler, a nie mam jeszcze programatora. Teensy wymaga tylko kabla USB A-miniB i darmowego oprogramowania do zainstalowania, kompatybilne z Mac/Windows/Linux. Ponadto bardzo łatwo jest przesłać plik szesnastkowy; po prostu skompiluj i naciśnij przycisk na Teensy.

Koszt tego projektu wyniósł dla mnie 21 dolarów plus drut do zawieszania obrazów. Części z ulicy pochodziły z ekspresu do kawy (przekaźnik, dioda LED, kondensator) i routera (LED, gniazdo modułowe, gniazdo zasilania, kondensatory). Darmowe próbki to 7805 5-woltowy regulator, przyciski i przełącznik. Znalazłem też wiele rzeczy w pudełku z uszkodzonymi częściami w moim laboratorium EE: złącza bananowe i kabel, drut, sterownik sn754410, czteropinowe złącze i rezystory. Miałem dodatkową ładowarkę do laptopa, której używałem do zasilania, i kabel modemowy Apple, którego zakładka była zepsuta. Inny sprzęt: płyta ścienna. Użyłem pistoletu do klejenia na gorąco, lutownicy, pilnika igłowego i wiertarki, które są dość standardowe. Najbardziej niezwykłą rzeczą, której użyłem, był długi, elastyczny chwytak.

Krok 2: Wcześniej istniejący sprzęt

Istniejący sprzęt
Istniejący sprzęt
Istniejący sprzęt
Istniejący sprzęt
Istniejący sprzęt
Istniejący sprzęt
Istniejący sprzęt
Istniejący sprzęt

Miałem szczęście, że zainstalowano już tak wiele. Mój pokój jest dostępny dla ADA i były już zainstalowane różne rury, skrzynki elektryczne i elektrozaczep. Po zdjęciu zaczepu z ciekawości stwierdziłem, że nie jest on podłączony. W moim pokoju była rura od drzwi do pustej płyty ściennej, a stamtąd do pustej płyty ściennej na zewnątrz.

Zaczep do drzwi mówi, że do działania potrzebuje 24V@3A, ale udało mi się poradzić sobie z zasilaczem 19V, 7,9A, który miałem. Zaczep drzwiowy był spolaryzowany, więc upewnij się, że masz prawidłową polaryzację!

Krok 3: Obwody

Obwody
Obwody
Obwody
Obwody
Obwody
Obwody
Obwody
Obwody

Do sterowania zaczepem drzwi użyłem przekaźnika, który znalazłem w ekspresie do kawy. Ten przekaźnik potrzebował więcej niż 5 V TTL do sterowania, więc sn754410 został użyty do przełożenia TTL na 19 V, które sterowało przekaźnikiem. Sn754410 to tak naprawdę sterownik quad half-H, więc marnowałem 3/4 chipa, ale nie miałem tranzystorów mocy, więc tego użyłem.

Układ sn754410 ma dwa piny VCC, jeden na 5V, drugi na napięcie, które chcesz wyprowadzić, co dla mnie było 19V. To naprawdę fajny chip. Możesz go użyć do bezpośredniego sterowania silnikami i przekaźnikami, ponieważ może przełączać 1 A na ćwiartkę układu i ma wbudowane diody zabezpieczające. Spójrz na arkusz danych. W moim obwodzie podłączyłem sn754410 bezpośrednio do pinu wyjściowego mojego Teensy. Przyciski są połączone jako aktywny-niski, co jest bardzo powszechne w przypadku mikrokontrolerów. Są bezpośrednio połączone z Teensy, co oznacza, że muszę wykonać debouncing w oprogramowaniu. Lampka stanu jest podłączona do Teensy przez rezystor 1 kΩ; nic specjalnego. Układ działał bez kondensatorów, ale i tak je włożyłem na wszelki wypadek. Na szynach zasilających 19 V i 5 V do uziemienia znajdują się zaślepki ochronne. Podczas programowania Teensy 5V pochodziło z USB, ale gdy działa samodzielnie, zasilanie pochodzi z kostki zasilającej laptopa. Gdy podłączyłem regulator 7805 bezpośrednio do 19V, zrobiło się NAPRAWDĘ gorąco, więc wstawiłem sieć rezystorów, aby ograniczyć napięcie wejściowe i prąd do regulatora. To był kłopot, ale teraz wszystko jest w rozsądnej temperaturze.

Krok 4: Połączenie razem

Połączenie razem
Połączenie razem
Połączenie razem
Połączenie razem

Teensy nie stanowił problemu. Jest wyposażony w piny, dzięki czemu można go podłączyć bezpośrednio do płytki stykowej.

Postanowiłem oznaczyć kolorami przewody do elektrozaczepu czerwonymi (+) i czarnymi (-) kablami bananowymi z laboratorium z uszkodzonymi częściami. Z ich przewodów odcięto kilka wtyczek, więc odkleiłem trochę plastiku, aby odsłonić punkt lutowniczy. Bardzo podoba mi się, jak laboratoryjne wtyki bananowe mogą się ze sobą łączyć. Użyłem kabla telefonicznego Apple, aby podłączyć przyciski i lampkę stanu na zewnątrz pokoju do Teensy w środku. Ponieważ jedna strona była złamana, odciąłem ten koniec i przylutowałem czteropinową listwę, uszczelniając ją gorącym klejem. To ładnie podłączyło się do mojej płytki stykowej. Strona, na której zostawiłem wtyczkę, trafiła do gniazda modułowego, które uratowałem z routera. Użyto wszystkich czterech przewodów (GND, lampka stanu, przycisk start/stop, przycisk kodu). Na wypadek, gdybyście nie zauważyli, lubię wtyczki i złącza. Klocek zasilający podłączony do gniazda zasilania, które wyciągnąłem z routera. Przeciąganie przewodów przez rury ścienne nie było zbyt trudne ze względu na elastyczny chwytak. To naprawdę uratowało mi dzień.

Krok 5: Kod

Kod
Kod
Kod
Kod

Próbowałem skomentować mój kod. Należy pamiętać, że jest to oprogramowanie w wersji 1.0, co oznacza, że nie jest wolne od błędów. ## OBSŁUGA ## 1. Naciśnij przycisk start/stop, aby zasygnalizować gotowość do rozpoczęcia wprowadzania kodu. Lampka stanu zaczyna powoli migać. 2. Stuknij w swój kod w przycisk kodu. Lampka stanu będzie migać z prędkością 120 BPM, więc możesz użyć tego jako metronomu, jeśli chcesz. Jednak program cryptap mierzy proporcjonalnie długości impulsów względem siebie, więc możesz również użyć własnego tempa. Tylko upewnij się, że są wystarczająco dokładne! 3. Po zakończeniu wprowadzania kodu ponownie naciśnij przycisk start/stop. Program zdecyduje, czy cię wpuścić. Ponieważ ludzie nie są zbyt dokładnymi strażnikami czasu (twój naprawdę nie jest), ustawiłem współczynnik tolerancji na +/- 30%. Oznacza to, że długość rytmu może być niedokładna o tę wartość, a mimo to przejść zbiórkę. To wystarczająco dobre, aby odróżnić całkiem podobne utwory. Występuje niewielka ilość trudno dostępnych nakładek między bitami o podwójnej i potrójnej długości, ale kod nadal jest trudny do złamania. Aby odblokować drzwi, uderzenia muszą być we właściwych proporcjach względem siebie (+/- stosunek tolerancji), a liczba uderzeń musi być prawidłowa. W przypadku wprowadzenia nieprawidłowego hasła program czeka kilka sekund, ignorując wszelkie dane wprowadzone przez użytkownika. Będzie również szybko migać lampką stanu. Jeśli zostanie wprowadzony prawidłowy kod, lampka stanu zaświeci się na stałe, a drzwi odblokują się na 8 sekund.## KONFIGURACJA UŻYTKOWNIKA ## Klucz jest przechowywany w tablicy w następujący sposób: #define keylength 5 const int key = { 2, 1, 3, 3, 3}; // "Wszystkiego najlepszego z okazji urodzin" Tablica przechowuje ilość czasu, która ma miejsce MIĘDZY uderzeniami. Więc jeśli twoje hasło zawiera SZEŚĆ notatek, takich jak „Wszystkiego najlepszego”, w tablicy powinno być PIĘĆ elementów. Jeśli twoje hasło jest naprawdę długie i masz w nim więcej niż 16 bitów (naprawdę trudne, nie polecam), musisz zwiększyć liczbę zdefiniowaną w tej linii: #define inputCodeLength 16## RESZTA KODU # # Byłem ciekaw przerwań, więc moje przyciski wyzwalały przerwania. Aby uczynić te przerwania łatwymi w użyciu, moje programy obsługi przerwań sprawdzały pewne wskaźniki funkcji. Jeśli wskaźnik nie jest ustawiony na NULL, wywoływana jest funkcja, na którą wskazuje. Są one ustawiane za pomocą różnych funkcji „ustawiania trybu” wewnątrz cryptap.c. Starałem się uniknąć przepełnienia bufora, ustawiając maksymalną liczbę wprowadzanych impulsów. W przypadku wprowadzenia maksymalnej liczby impulsów program natychmiast rozpoczyna analizę hasła i decyduje, czy otworzyć drzwi. Mam nadzieję, że moje komentarze w kodzie pomogą. ## BŁĘDY ## Próbowałem usunąć kod debugowania USB, ale kod nie zadziała, jeśli to zrobię. Więc zostawiłem w usb_init() i różnych instrukcjach print(). Byłbym wdzięczny, gdyby ktoś mógł je usunąć, a program nadal działał. Jeszcze lepiej, jeśli potrafią wyjaśnić, dlaczego to nie zadziałało dla mnie. Natychmiast po zaprogramowaniu Teensy czasami nie akceptuje wprowadzania kodu. Aby rozwiązać ten problem, wyłącz i włącz obwód.

Zalecana: