Оглавление:

Arduino High Tech Safe: 6 шагов
Arduino High Tech Safe: 6 шагов

Видео: Arduino High Tech Safe: 6 шагов

Видео: Arduino High Tech Safe: 6 шагов
Видео: Amazing arduino project 2024, Июль
Anonim
Высокотехнологичный сейф Arduino
Высокотехнологичный сейф Arduino

Это мой высокотехнологичный сейф Arduino. Вы должны отсканировать свой палец, отсканировать свою карту, а затем ввести четырехзначный пароль, чтобы разблокировать ящик. Этот проект не рекомендуется новичкам, потому что он очень продвинутый. Код длинный, но я поделюсь им в этом проекте. Стоимость около 75 долларов, если вы построите такой же сейф, как я. Этот проект также может занять 1-3 дня. Итак, приступим!

Запасы

Чтобы построить такой же сейф, как мой, вам понадобятся:

Arduino (рекомендуется Uno, потому что у меня нет шагов для Arduino Mega или nano. Но вы все равно можете их использовать)

макет

сервопривод

перемычки

джойстик

20 * 4 (вы можете использовать 16 * 4, но вам придется изменить код)

Сканер отпечатков пальцев

mfrc522 rfid сканер карт

ведро лего

Шаг 1: создание коробки

Создание коробки
Создание коробки

Сначала вам понадобится коробка, в которую вы поместите свою электронику. Вы можете использовать лего, коробку, напечатанную на 3D-принтере, или даже картон! (Хотя это может быть сложнее) Не забудьте проделать в нем отверстия для ящика и вашей электроники. Если вы используете сканер RFID-карт, вам не нужно делать для этого отверстие, если у вас тонкие стены. Карты по-прежнему работают, но вы должны закрыть связки ключей, чтобы сеньор RFID-карты мог их прочитать. Также оставьте место для вашего Arduino и проводов внутри. ПРИМЕЧАНИЕ. Когда вы собираете ящик, оставьте в нем отверстие, чтобы сервопривод мог повернуться и заблокировать ящик.

Шаг 2: Подключение

Подключение!
Подключение!

Этот шаг может быть сложным, потому что вам нужно подключить провода в точном месте, иначе электроника не будет работать. У меня нет схемы подключения, но я расскажу, все ли идет. Проводка предназначена только для arduino uno. Если вы используете Arduino Mega или Nano, вам придется искать места для подключения проводов. Если вы не используете всю имеющуюся у меня электронику, можете просто пропустить эту проводку.

Сканер отпечатков пальцев: зеленый провод: белый провод D2: черный провод D3: красный провод GND: 5 В

Джойстик: 5 В = 3,3 В GND = GND X = A2 Y = A3 Переключатель = D4

Сканер RFID-карт: 3,3 В = 3,3 В rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

ЖК-экран: 5 В = 5 В GND = GND sda = A4 sck = A5

Сервопривод: красный провод: 5 В Коричневый провод: GND желтый провод: D6

ПРИМЕЧАНИЕ. НЕ ПОДКЛЮЧАЙТЕ СКАНЕР КАРТ RFID К 5 В. ЕСЛИ ВЫ ДЕЛАЕТЕ, ЭТО РАЗРЕШЕТСЯ !!!

Вам может быть интересно, почему я сказал подключить джойстик к напряжению 3,3 В, когда на боковой стороне указано 5 В. Это потому, что сервопривод, экран и сканер отпечатков пальцев нуждаются в 5В. Если вы добавите к нему джойстик, электроника может не работать, потому что все требует 5 В. Джойстик по-прежнему будет работать с напряжением 3,3 В. Просто максимальное значение будет не 1023, а ~ 670.

Шаг 3. Загрузка библиотек

В этом проекте вам понадобится 6 библиотек для использования всей электроники. 1 для сервопривода, 1 для датчика отпечатков пальцев, 2 для сканера RFID-карт и 2 для экрана. Для джойстика библиотека не нужна. Итак, что такое библиотека? По сути, это файл, содержащий много кода, который вы можете использовать в своем проекте с помощью простых команд. Чтобы получить эти библиотеки, вам нужно перейти в место под названием GitHub. Если вы знаете, как загружать и распаковывать библиотеки, просто перейдите по ссылкам ниже для загрузки. Если вы не знаете, как это сделать, вы можете перейти к моей инструкции, в которой рассказывается о том, как загрузить библиотеку на шаге 3:

или найдите видео на YouTube о том, как загрузить библиотеку Arduino с GitHub

ССЫЛКИ НА ЛИРАРИИ:

Серво

датчик отпечатков пальцев:

spi

датчик карты RFID

библиотека экрана 1

библиотека экрана 2

Шаг 4: Настройка датчика отпечатков пальцев и датчика карты RFID

На этом шаге рассказывается, как настроить датчик отпечатков пальцев и датчик RFID-карты. Если вы еще не использовали датчик отпечатков пальцев, вам нужно будет показать ему, как выглядит ваш отпечаток пальца, чтобы он мог сохранить его в своей памяти. Даже если вы использовали его раньше, вам, вероятно, все равно стоит сделать этот шаг. Я расскажу вам, как это сделать вкратце, но если это не имеет смысла, перейдите по той же инструктивной ссылке на последнем шаге. Это проходит очень хорошо. Просто откройте arduino ide. Перейдите в файл> примеры> датчик отпечатков пальцев adafruit> зарегистрируйтесь. Загрузите код в Arduino, откройте последовательный монитор и следуйте инструкциям, которые он вам скажет. Когда он говорит вам дать ему номер. Введите 1 #.

Теперь для RFID-карты этот шаг довольно прост. Откройте arduino ide. Зайдите в файл> примеры> mfrc522> прочтите личные данные. Загрузите в Arduino и откройте монитор последовательного порта. Отсканируйте карту или брелок, которые вы хотите использовать, которые поставляются с вашим датчиком. Затем он предоставит вам некоторую информацию. Ищите ID карты, это будет 4 набора по 2 цифры. Примерно так: AB 45 2Y 45, но ваш код будет другим. Запишите это на листе бумаги. Он понадобится вам позже. Вот и все на этом этапе.

Шаг 5: КОД

Это будет самый трудный шаг для большинства из вас, но он довольно простой. Сначала скопируйте и вставьте код в arduino ide снизу. Во-вторых, отредактируйте 2 раздела, где написано ИЗМЕНИТЬ КОД. 1 секция для сканера карт, 1 для джойстика. Эти шаги нельзя пропустить. После этого загрузите код в Arduino!

#include #include Fingerprint.h>

#включают

#включают

#включают

#включают

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, ПОЛОЖИТЕЛЬНО);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Серво сервопривод;

char d1;

char d2;

char d3;

char d4;

void setup () {

сервопривод (6);

серво. запись (170);

lcd.begin (20, 4);

Serial.begin (9600);

в то время как (! серийный);

SPI.begin ();

mfrc522. PCD_Init ();

задержка (4);

mfrc522. PCD_DumpVersionToSerial ();

задержка (100);

Serial.println ("\ n / n Тест определения пальца Адафрута");

finger.begin (57600);

задержка (5);

if (finger.verifyPassword ()) {

Serial.println ("Все системы работают");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print («Отсканируйте палец»);

} еще {

Serial.println («ОШИБКА: датчик отпечатка пальца не найден!»);

lcd.setCursor (0, 0);

lcd.print («ОШИБКА: отпечаток пальца»);

lcd.setCursor (1, 1);

lcd.print («датчик не найден!»);

в то время как (1) {задержка (1); }

}

finger.getTemplateCount ();

Serial.print («Датчик содержит»); Serial.print (finger.templateCount); Serial.println («шаблоны»); Serial.println («Ожидание действительного пальца…»); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

задержка (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

switch (p) {

case FINGERPRINT_OK:

Serial.println («Изображение снято»);

перерыв;

case FINGERPRINT_NOFINGER:

Serial.println («Палец не обнаружен»);

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println («Ошибка связи»);

return p;

case FINGERPRINT_IMAGEFAIL:

Serial.println («Ошибка изображения»);

return p;

дефолт:

Serial.println («Неизвестная ошибка»);

return p;

}

p = finger.image2Tz ();

switch (p) {

case FINGERPRINT_OK:

Serial.println («Изображение преобразовано»);

перерыв;

case FINGERPRINT_IMAGEMESS:

Serial.println («Изображение слишком грязное»);

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println («Ошибка связи»);

return p;

case FINGERPRINT_FEATUREFAIL:

Serial.println («Не удалось найти функции отпечатка пальца»);

return p;

case FINGERPRINT_INVALIDIMAGE:

Serial.println («Не удалось найти функции отпечатка пальца»);

return p;

дефолт:

Serial.println («Неизвестная ошибка»);

return p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println («Найдено совпадение печати!»);

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Ошибка связи");

return p;

} иначе, если (p == FINGERPRINT_NOTFOUND) {

Serial.println («Не найдено совпадений»);

return p;

} еще {

Serial.println («Неизвестная ошибка»);

return p;

}

Serial.print («Найден ID #»); Серийный отпечаток (finger.fingerID);

Serial.print («с уверенностью»); Serial.println (finger.confidence);

вернуть finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

если (p! = FINGERPRINT_OK) вернуть -1;

p = finger.image2Tz ();

если (p! = FINGERPRINT_OK) вернуть -1;

p = finger.fingerFastSearch ();

если (p! = FINGERPRINT_OK) вернуть -1;

Serial.print («Найден ID #»); Серийный отпечаток (finger.fingerID);

Serial.print («с уверенностью»); Serial.println (finger.confidence);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Палец принят");

lcd.setCursor (2, 0);

lcd.print («теперь сканировать карту…»);

lcd.setCursor (0, 3);

lcd.print ("===================>");

а (! mfrc522. PICC_IsNewCardPresent ());

а (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== ИЗМЕНИТЬ КОД ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Возьмите лист бумаги с идентификатором на нем, там было 4 набора по 2 цифры

mfrc522.uid.uidByte [2] == 0x90 && // Посмотрите по коду, посмотрите, где написано 0x92, 0xAB, 0x90, 0x1c? Введите каждый

mfrc522.uid.uidByte [3] == 0x1C) {// 2-значного раздела после 0x. Например, в разделе идентификатора написано

lcd.clear (); // 3E, затем введите 3E после 0x, чтобы получилось 0x3E. Сделайте это для каждого раздела

lcd.setCursor (3, 0);

lcd.print («Наконец-то войдите»);

lcd.setCursor (1, 1);

lcd.print («пароль джойстика»);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); if (analogRead (A2) <= 100) {

d1 = L;

}

if (analogRead (A2)> = 670) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

задержка (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d2 = L;

}

if (analogRead (A2)> = 670) {

d2 = R;

}

if (analogRead (A3) <= 100) {

d2 = U;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

задержка (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d3 = L;

}

if (analogRead (A2)> = 670) {

d3 = R;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

задержка (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d4 = L;

}

if (analogRead (A2)> = 670) {

d4 = R;

}

if (analogRead (A3) <= 100) {

d4 = U;

}

if (analogRead (A3)> = 670) {

d4 = D;

}

задержка (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= ИЗМЕНИТЬ КОД ====== ================

lcd.clear (); // В этом разделе вы можете изменить пароль с помощью джойстика

lcd.setCursor (2, 0); // пароль установлен влево, вверх, влево, вправо. Если вы хотите изменить

lcd.print («Доступ разрешен!»); // это, поместите L для левого, R для правого, U для вверх или D для вниз в любом из

lcd.setCursor (2, 1); // 4 раздела с буквой после знака ==.

lcd.print («Ящик разблокирован.»);

lcd.setCursor (2, 2);

lcd.print («Когда закончите, двигайтесь»);

lcd.setCursor (1, 3);

lcd.print («джойстик для повторной блокировки»);

серво. запись (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

серво. запись (170);

lcd.setCursor (3, 0);

lcd.print («Ящик заблокирован»);

задержка (3000);

resetFunc ();

}еще{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («В ДОСТУПЕ ЗАПРЕЩЕНО !!!»);

lcd.setCursor (0, 2);

lcd.print («Перезапуск системы…»);

задержка (3000);

resetFunc ();

}

}еще{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («В ДОСТУПЕ ЗАПРЕЩЕНО !!!»);

lcd.setCursor (0, 2);

lcd.print («Перезапуск системы…»);

задержка (3000);

resetFunc ();

}

}еще{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print («В ДОСТУПЕ ЗАПРЕЩЕНО !!!»);

lcd.setCursor (0, 2);

lcd.print («Перезапуск системы…»);

задержка (3000);

resetFunc ();

}

вернуть finger.fingerID; }

Шаг 6: Готово

Одна вещь, которую я забыл вам сказать, ну, две вещи - это то, что я построил это до того, как сделал снимки, поэтому я не мог показать вам, как я построил коробку. Во-вторых, рекомендуется навинтить серво часть на вращающуюся часть. Если вы этого не сделаете, кто-то может вытащить ящик, когда он заблокирован, и вытащить кусок. Но прежде чем прикручивать его, найдите правильное место, где его надеть, потому что сервопривод поворачивается до определенной степени. Или вы можете просто изменить это в коде. Если какая-то электроника работает странно, вы можете найти другой способ получить 5В для некоторых из них. Я заметил, что когда мой сканер отпечатков пальцев мигал, экран слегка мигал вместе с ним, а сервопривод издавал шум. Когда сервопривод двигался, экран тускнел. Надеюсь, вам понравился проект! Если есть вопросы, оставляйте их в комментариях. Я нечасто участвую в инструктажах, но отвечу на них, как только смогу!

Рекомендуемые: