Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
Это мой высокотехнологичный сейф 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В для некоторых из них. Я заметил, что когда мой сканер отпечатков пальцев мигал, экран слегка мигал вместе с ним, а сервопривод издавал шум. Когда сервопривод двигался, экран тускнел. Надеюсь, вам понравился проект! Если есть вопросы, оставляйте их в комментариях. Я нечасто участвую в инструктажах, но отвечу на них, как только смогу!
Рекомендуемые:
Corona Safe: автоматический водосберегающий кран: 6 шагов
Corona Safe: автоматический водосберегающий кран: мы все время от времени должны мыть руки, чтобы избавиться от вируса и бактерий, особенно для вируса Corona, нам нужно мыть руки в течение 20 секунд, чтобы полностью избавиться от него. Также дозатор мыла или ручка крана могут не быть гигиеничными или c
B-Safe, портативный сейф: 8 шагов (с изображениями)
B-Safe, портативный сейф: *** 4 сентября 2019 г .: я загрузил новый 3D-файл самого ящика. Казалось, что мой замок был на 10 мм выше для хорошего закрытия *** Проблема Представьте себе следующее: однажды утром вы просыпаетесь, а погода очень хорошая. Вы хотите пойти на пляж, потому что не
Заключительный проект Wearable Tech - шлем ди-джея: 6 шагов
Заключительный проект Wearable Tech - DJ Helmet: Цель этого проекта - сделать ди-джейский шлем со светодиодами, реагирующими на музыку для шоу и вау-фактора. Мы используем адресную светодиодную ленту с Amazon.com, а также мотоциклетный шлем, Arduino uno и провод
Простой способ использовать Makey Makey с Tech Deck: 5 шагов
Простой способ использовать Makey Makey с Tech Deck: Привет. Недавно я увидел в этом конкурсе программу создания технической колоды, которая была действительно крутой, но показалась мне сложной, поэтому я сделал простой способ играть в игры с технической колодой. Если вам понравился мой наставник, проголосуйте за него в конкурсе makey makey
Чехол для iPod Swiss Tech: 5 шагов
Swiss Tech Ipod Case: как сделать крутой и прочный чехол для iPod из швейцарской технической коробки