- Використані матеріали
- Модуль зчитування RFID EM18
- Дізнайтеся унікальний 12-значний код тегу RFID за допомогою Arduino
- Кругова діаграма
- Модуль датчика відбитків пальців
- Програмування для безключового запалювання RFID
На сьогоднішній день більша частина автомобіля оснащена системою запалювання без ключа та кнопковою системою запалювання, в якій вам потрібно лише носити ключ у кишені, а пальцем торкнутися ємнісного датчика на дверній ручці, щоб відкрити двері автомобіля. У цьому проекті ми додаємо ще кілька функцій безпеки до цієї системи за допомогою RFID та датчика відбитків пальців. Датчик RFID підтверджує ліцензію користувача, а датчик відбитків пальців дозволить лише авторизованій особі в транспортному засобі.
Для цієї системи запалювання автомобіля на основі відбитків пальців ми використовуємо Arduino з датчиком відбитків пальців R305 та зчитувачем RFID EM18.
Використані матеріали
- Arduino Nano
- R305 Датчик відбитків пальців
- Зчитувач RFID EM18
- 16 * 2 буквено-цифровий РК-дисплей
- Двигуни постійного струму
- L293D Схема драйвера двигуна
- Вероборд або макет (що доступно)
- Підключення проводів
- Акумулятор постійного струму 12 В
Модуль зчитування RFID EM18
RFID означає Радіочастотна ідентифікація. Це стосується технології, коли цифрові дані кодуються в RFID-мітках, і їх може декодувати RFID-зчитувач за допомогою радіохвиль. RFID схожий на штрих-кодування, при якому дані з мітки декодуються пристроєм. Технологія RFID використовується в різних додатках, таких як система безпеки, система відвідування співробітників, блокування дверей RFID, система голосування на основі RFID, система збору мита тощо.
Зчитувач EM18 - це модуль, який може зчитувати інформацію про ідентифікатор, що зберігається в тегах RFID. Теги RFID зберігають 12-значний унікальний номер, який можна декодувати за допомогою модуля зчитування EM18, коли тег потрапляє в діапазон із пристроєм зчитування. Цей модуль працює на частоті 125 кГц, яка має вбудовану антену, і він працює за допомогою джерела живлення постійного струму 5 вольт.
Він дає послідовний вихід даних і має діапазон 8-12 см. Параметри послідовного зв'язку складають 8 біт даних, 1 стоп-біт і 9600 бод.
EM18 Особливості:
- Робоча напруга: від + 4,5 В до + 5,5 В постійного струму
- Споживання струму: 50 мА
- Робоча частота: 125 кГц
- Робоча температура: 0-80 градусів С
- Швидкість передачі даних у зв'язку: 9600
- Відстань зчитування: 8-12 см
- Антена: Вбудована
Розпіновка EM18:
Опис штифта:
VCC: 4,5 - 5 В постійної напруги
GND: штифт заземлення
Зуммер: зумер або світлодіодний штифт
TX: Штифт передавача послідовних даних EM18 для RS232 (вихід)
SEL: Це має бути ВИСОКО для використання RS232 (НИЗЬКО, якщо використовується WEIGAND)
Дані 0: дані WEIGAND 0
Дані 1: дані WEIGAND 1
Щоб дізнатись більше про RFID та теги, перегляньте наші попередні проекти на основі RFID.
Дізнайтеся унікальний 12-значний код тегу RFID за допомогою Arduino
Перш ніж програмувати Arduino для системи запалювання автомобіля Arduino, по-перше, нам потрібно з’ясувати унікальний код 12-значного тегу RFID. Як ми вже обговорювали раніше, теги RFID містять 12-значний унікальний код, і його можна декодувати за допомогою зчитувача RFID. Коли ми проводимо тегом RFID біля Reader, Reader видає унікальні коди через вихідний послідовний порт. Спочатку підключіть Arduino до зчитувача RFID відповідно до схеми, а потім завантажте нижче вказаний код до Arduino.
int count = 0; char card_no; void setup () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; в той час як (Serial.available () && count <12) {card_no = Serial.read (); рахувати ++; затримка (5); } Serial.print (card_no); }}
Після успішного завантаження коду відкрийте послідовний монітор і встановіть швидкість передачі на 9600. Потім проведіть картою біля пристрою Reader. Тоді 12-значний код почне відображатися на послідовному моніторі. Виконайте цей процес для всіх використовуваних тегів RFID і запишіть його для подальших довідок.
Кругова діаграма
Принципова схема цієї системи запалювання на основі відбитків пальців наведена нижче:
У моєму випадку я припаяв повну схему на платі, як показано нижче:
Модуль датчика відбитків пальців
Модуль датчика відбитків пальців або сканер відбитків пальців - це модуль, який фіксує зображення відбитка пальця, а потім перетворює його в еквівалентний шаблон і зберігає у своїй пам'яті на вибраному ідентифікаторі (розташуванні) Arduino. Тут усім процесом керує Arduino, наприклад, знімання відбитка пальця, перетворення його на шаблони, зберігання місцезнаходження тощо.
Раніше ми використовували той самий датчик R305 для створення голосувальної машини, системи відвідування, системи безпеки тощо. Ви можете перевірити всі проекти, що базуються на відбитках пальців, тут.
Запис відбитків пальців на датчик:
Перш ніж продовжувати програму, нам потрібно встановити необхідні бібліотеки для датчика відбитків пальців. Тут ми використали “ Adafruit_Fingerprint.h ” для використання датчика відбитків пальців R305. Отже, перш за все завантажте бібліотеку за посиланням, наведеним нижче:
- Бібліотека датчиків відбитків пальців Adafruit
Після успішного завантаження в середовищі IDE Arduino перейдіть у меню Файл > Інструменти> Включити бібліотеку> Додати бібліотеку.zip, а потім виберіть розташування zip-файлу, щоб встановити бібліотеку.
Після успішної інсталяції бібліотеки, виконайте наведені нижче дії, щоб записати новий відбиток пальця в пам’ять датчика.
1. В середовищі IDE Arduino перейдіть у меню Файл > Приклади > Бібліотека датчиків відбитків пальців Adafruit > Реєстрація.
2. Завантажте код на Arduino і відкрийте послідовний монітор зі швидкістю передачі даних 9600.
Важливо: Змініть послідовний штифт програмного забезпечення в програмі на SoftwareSerial mySerial (12, 11).
3. Вам слід ввести ідентифікатор відбитка, в якому ви хочете зберігати свій відбиток. Оскільки це мій перший відбиток пальця, я набрав 1 у верхньому лівому куті, а потім натисніть кнопку Надіслати.
4. Потім світло на датчику відбитків пальців блиматиме, що вказує на те, що слід покласти палець на датчик, а після цього виконувати вказівки на послідовному моніторі, доки він не підтвердить вас за успішну реєстрацію.
Програмування для безключового запалювання RFID
Повний код цієї біометричної системи запалювання наведено в кінці підручника. Тут ми пояснюємо кілька важливих частин коду.
Перше, що потрібно - включити всі необхідні бібліотеки. Тут у своєму випадку я включив “ Adafruit_Fingerprint.h ” для використання датчика відбитків пальців R305. Потім налаштуйте послідовний порт, до якого буде підключений датчик відбитків пальців. У моєму випадку я оголосив 12 як RX-штифт, а 11 як TX-штифт.
# включити # включити
На наступному кроці оголосіть усі змінні, які будуть використовуватися в коді. Потім визначте штифти підключення РК з Arduino з наступним оголошенням об’єкта класу LiquidCrystal .
введення символу; int count = 0; int a = 0; const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; Рідинний кристал LiquidCrystal (rs, en, d4, d5, d6, d7);
Далі всередині циклу () пишеться код, щоб отримати унікальні 12-значні коди тегів RFID, і вони зберігаються в масиві. Тут елементи масиву будуть узгоджуватись із збереженими унікальними кодами в пам'яті, щоб отримати дані про автентифіковану особу.
кол = 0; while (Serial.available () && count <12) { input = Serial.read (); рахувати ++; затримка (5); }
Потім отриманий масив порівнюється із збереженими кодами тегів. Якщо код відповідає, то ліцензія вважається дійсною, що дозволяє користувачеві надати дійсний відбиток пальця. В іншому випадку він буде показувати недійсну ліцензію.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Діє ліцензія"); lcd.setCursor (0, 1); lcd.print ("Ласкаво просимо"); затримка (1000); a = 1; відбиток пальця (); }
На наступному кроці записується функція getFingerprintID , яка повертає дійсний ідентифікатор відбитка для вже зареєстрованого відбитка.
int getFingerprintID () { uint8_t p = finger.getImage (); if (p! = FINGERPRINT_OK) return -1; p = finger.image2Tz (); if (p! = FINGERPRINT_OK) return -1; p = finger.fingerFastSearch (); if (p! = FINGERPRINT_OK) return -1; повернути finger.fingerID; }
Усередині функції fingerprint () , яка викликається після успішного збігу RFID, функція getFingerprintID викликається, щоб отримати дійсний ідентифікатор відбитка пальця. Потім його порівнюють, використовуючи цикл if-else, щоб отримати інформацію щодо автентифікованих даних особи, і якщо дані збігаються, тоді транспортний засіб запалюється, інакше він запитає про неправильний відбиток пальця.
int fingerprintID = getFingerprintID (); затримка (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Доступ надано"); lcd.setCursor (0, 1); lcd.print ("Автомобіль запущений"); digitalWrite (9, HIGH); digitalWrite (10, LOW); в той час як (1); }
Так працює ця система запалювання автомобіля RFID, яка додає два шари безпеки вашому автомобілю.
Повний код та демонстраційне відео наведено нижче.