Zamek szyfrowy Arduino - schemat

click fraud protection

Arduino to najlepszy system do kopiowania dowolnego sprzętu. Większość pomysłów nie byłaby możliwa bez niej. Od dawna pojawiła się taka myśl: stworzyć specjalny zamek szyfrowy na arduino. Aby go otworzyć, musisz przytrzymać określony klawisz. W takim przypadku zamek nie powinien się otwierać, nawet jeśli znasz żądany przycisk. Aby go otworzyć, konieczne jest utrzymanie określonych interwałów za pomocą pamięci mięśniowej. Taki przestępca nie może tego zrobić. Ale to wszystko tylko teoria.

Aby go zebrać, musisz użyć specjalnego urządzenia do prostokątnych impulsów, a także kilku liczników i stosu. Ale gotowe urządzenie miałoby duże wymiary i byłoby niewygodne w użyciu. Z reguły takie myśli nie dają odpoczynku. Pierwszym krokiem w realizacji tego marzenia było stworzenie programu dla Arduino. To ona posłuży jako zamek szyfrowy. Aby go otworzyć, musisz nacisnąć nie jeden klawisz, ale kilka i zrobić to jednocześnie. Gotowy obwód wygląda tak:

Jakość obrazu nie jest najlepsza, ale połączenia są wykonane z uziemieniem, D3, D5, D7, D9 i D11.

Kod znajduje się poniżej:

const int ina = 3; const int inb = 5; const int przyr = 9; const int ledPin = 13; int i = 1000; bajt a = 0; bajt b = 0; bajt c = 0; bajt d = 0; długi czas bez znaku = 0; // nie zapomnij o wszystkim, co millis() przyjmuje unsigned long temp = 0; // przechowuj w długim bajtach bez znaku keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // koduje właściwy bajt keyb [] = {1, 1, 1, 1, 0, 1, 0, 0}; klucz bajtowyc [] = {1, 0, 1, 0, 1, 1, 1, 0}; bajt k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 wejścia podłączone do przycisków pinMode (inb, INPUT_PULLUP); pinMode (włącznie, INPUT_PULLUP); pinMode (ledPin, WYJŚCIE); // wbudowana dioda LED na pinie 13 pinMode (7, OUTPUT); pinMode (11, WYJŚCIE); digitalWrite (7, LOW); // wymień uziemienie digitalWrite (11, LOW); czas = milis (); // potrzebne do odliczenia czasu} void blinkdwukrotnie () {// dwukrotne mignięcie diody digitalWrite (ledPin, HIGH); opóźnienie (100); digitalWrite (ledPin, LOW); opóźnienie (100); digitalWrite (ledPin, HIGH); opóźnienie (100); digitalWrite (ledPin, LOW); opóźnienie (200); } void loop () {if (k == 0) {mrugnijdwukrotnie (); // monit o wprowadzenie kodu} if (k == 8) {digitalWrite (ledPin, HIGH); opóźnienie (3000); k = 0; } a = digitalRead (ina); // poziomy sygnałów są odczytywane z przycisków - wciśnięty / nie wciśnięty b = digitalRead (inb); c = odczyt cyfrowy (włącznie); opóźnienie (100); // next if - zabezpieczenie przed fałszywymi alarmami, nie trzeba używać if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = kluczc [k]) {k++; }}}} if (k == 1) {if (d == 0) {czas = milis (); d++; }} temp = mili (); temp = temp - czas; jeśli (temp> 10000) {k = 0; d = 0; czas = milis (); } } 


Aby uniknąć niepotrzebnych pytań dotyczących kodu, należy wyjaśnić niektóre punkty. Funkcja konfiguracji służy do przypisywania portów. Kolejna funkcja to Input_Pullup, która jest potrzebna do zwiększenia napięcia pinów o 5 V. Odbywa się to za pomocą rezystora. Z tego powodu nie wystąpią różne zwarcia. Dla większej wygody zaleca się korzystanie z funkcji blinkdwukrotnie. Ogólnie rzecz biorąc, tworząc różne programy, musisz wypróbować inne funkcje.

Po przypisaniu funkcji sygnał jest odczytywany z portów. Jeśli przycisk zostanie naciśnięty, będzie to oznaczone cyfrą 1, a jeśli nie - 2. Ponadto analizowane są wszystkie wartości. Na przykład pojawiła się kombinacja taka jak 0,1,1. Oznacza to, że pierwszy klawisz jest wciśnięty, a pozostałe dwa nie. Jeśli wszystkie wartości są prawdziwe, warunek 8 również jest prawdziwy. Świadczy o tym podświetlona dioda LED na przednim panelu. Następnie musisz wprowadzić konkretny kod, który posłuży do otwarcia drzwi.

Ostatnie elementy kodu służą do resetowania wartości liczników. Ta funkcja jest wykonywana, jeśli od ostatniego naciśnięcia klawisza minęło więcej niż 10 sekund. Bez tego kodu udało się wyliczyć wszystkie możliwe opcje, choć jest ich sporo. Po utworzeniu tego urządzenia musisz je przetestować. Już Projekty Arduino.

Lubić(0)nie lubię(0)

instagram viewer