- Необхідні компоненти
- Опис проекту:
- Модуль FingerPrint:
- Працює система відвідуваності на основі відбитків пальців
- Принципова схема та опис проекту "Система відвідуваності відбитків пальців"
- Пояснення коду:
Системи відвідуваності - це загальновживані системи для позначення присутності в офісах та школах. Починаючи з ручного позначення відвідуваності в реєстрах відвідувачів до використання високотехнологічних програм та біометричних систем, ці системи значно вдосконалились. У наших попередніх проектах ми розглянули декілька інших проектів електронної системи відвідування з використанням мікроконтролера RFID та AVR, 8051 та малинового Pi. У цьому проекті ми використовували модуль відбитків пальців та Arduino для збору та ведення даних про відвідуваність та записів. Використовуючи датчик відбитків пальців, система стане більш безпечною для користувачів. У наступних розділах пояснюються технічні деталі створення біометричної системи відвідування на основі відбитків пальців за допомогою Arduino.
Необхідні компоненти
- Ардуїно -1
- Модуль відбитків пальців -1
- Кнопка - 4
- Світлодіоди -1
- Резистор 1К -2
- Резистор 2,2 К -1
- Потужність
- Підключення проводів
- Коробка
- Зуммер -1
- РК-дисплей 16x2 -1
- Хлібна дошка -1
- Модуль RTC -1
Опис проекту:
У цій схемі системи відвідування відбитків пальців ми використовували модуль датчика відбитків пальцівдля автентифікації справжньої людини або працівника, ввівши пальцем в систему. Тут ми використовуємо 4 кнопки для реєстрації, Видалити, Вгору / Вниз. Клавіша ENROLL та DEL має потрійні функції. Клавіша ENROLL використовується для реєстрації нової особи в системі. Отже, коли користувач хоче зареєструвати новий палець, тоді йому / їй потрібно натиснути клавішу ENROLL, тоді РК-дисплей запитує ідентифікатор, де користувач хоче зберігати зображення відбитка пальця. Тепер, якщо в цей час користувач не хоче продовжувати далі, тоді він / вона може знову натиснути клавішу ENROLL, щоб повернутися назад. Цього разу клавіша ENROLL поводиться як клавіша Назад, тобто клавіша ENROLL має як реєстрацію, так і функцію повернення. Крім того, клавіша реєстрації також використовується для завантаження даних про відвідуваність через послідовний монітор. Так само клавіша DEL / OK також має ту саму подвійну функцію, як коли користувач реєструє новий палець,тоді йому / їй потрібно вибрати ідентифікатор пальця, використовуючи ще дві клавіші, а саме ВГОРУ та ВНИЗ. Тепер користувачеві потрібно натиснути клавішу DEL / OK (цього разу ця клавіша поводиться як ОК), щоб продовжити роботу з обраним ідентифікатором. А клавіша Del використовується для скидання або видалення даних з EEPROM Arduino.
Модуль FingerPrint:
Модуль датчика відбитків пальців фіксує зображення відбитка пальця, а потім перетворює його в еквівалентний шаблон і зберігає у свою пам'ять відповідно до вибраного ідентифікатора Arduino. Весь процес командується Arduino, як фотографування відбитка пальця, перетворення його в шаблони та зберігання як ідентифікатор тощо. Ви можете перевірити ще кілька проектів за допомогою модуля відбитків пальців:
Система безпеки на основі відбитків пальців
Біометрична машина для голосування на основі відбитків пальців
Тут ми додали жовтий світлодіод, який вказує на те, що модуль відбитків пальців готовий зробити знімок пальця. Зумер також використовується для різних показань. Arduino - головний компонент цієї системи, він відповідає за контроль всієї системи.
Працює система відвідуваності на основі відбитків пальців
Працює цей проект системи відвідування відбитків пальцівдосить просто. Перш за все, користувачеві потрібно реєструвати відбитки пальців користувача за допомогою кнопок. Для цього користувачеві потрібно натиснути клавішу ENROLL, а потім РК-дисплей запитує введення ідентифікатора відбитка пальця, щоб зберегти його в пам'яті за іменем ідентифікатора. Отже, тепер користувачеві потрібно ввести ідентифікатор за допомогою клавіш «ВГОРУ / ВНИЗ». Після вибору ідентифікатора користувачеві потрібно натиснути клавішу OK (клавіша DEL). Тепер РК-дисплей попросить розмістити палець над модулем відбитків пальців. Тепер користувачеві потрібно навести палець на модуль друку пальця, після чого модуль робить зображення пальця. Тепер РК-екран скаже витягнути палець з модуля відбитків пальців і знову попросить помістити палець знову. Тепер користувачеві потрібно знову покласти палець, і модуль робить зображення, перетворює його на шаблони і зберігає за вибраним ідентифікатором у пам’яті модуля відбитків пальців.Тепер користувач буде зареєстрований, і він / вона може годувати відвідувачів, поклавши пальцем на модуль відбитків пальців. Таким же способом усі користувачі будуть зареєстровані в системі.
Тепер, якщо користувач хоче видалити або видалити будь-який із збережених ідентифікаторів або відбитків пальців, йому / їй потрібно натиснути клавішу DEL. Після натискання клавіші видалення РК-дисплей запропонує вибрати ідентифікатор, який потрібно видалити. Тепер користувачеві потрібно вибрати ідентифікатор та натиснути клавішу OK (та сама клавіша DEL). Тепер РК-дисплей повідомить вас про те, що відбитки пальців успішно видалено.
Як працює "Відвідуваність" у цьому проекті системи відвідування відбитків пальців:
Щоразу, коли користувач розміщує палець на модулі відбитків пальців, тоді модуль відбитків робить зображення пальця та здійснює пошук, чи в системі пов’язаний будь-який ідентифікатор. Якщо виявлено ідентифікатор відбитка пальця, на РК-дисплеї відображатиметься Присутність зареєстровано, і в той же час зуммер подасть один звуковий сигнал, а світлодіод вимкнеться, доки система не буде готова знову приймати введення.
Разом із модулем відбитків пальців ми також використовували модуль RTC для часу та дати. Час і дата постійно працюють у системі. Тож Arduino бере час і дату, коли справжній користувач кладе палець на відбиток пальця, і зберігає їх у EEPROM у виділеному слоті пам’яті.
Тут ми створили 5 користувацьких просторів у цій системі протягом 30 днів. Натиснувши кнопку RESET у Arduino, а потім негайно зареєструвавши клавішу, буде відповідати за завантаження даних про відвідуваність через послідовний монітор з пам'яті Arduino EEPROM.
Управління пам'яттю:
Ми маємо 1023 байт пам'яті в Arduino UNO, з яких у нас 1018 байт для зберігання даних, і ми взяли 5 даних про відвідуваність користувачів протягом 30 днів. І кожна відвідуваність реєструватиме час і дату, тому це стане 7-байтовими даними.
Отже, загальна пам’ять потрібна
5 * 30 * 7 = 1050, тому тут нам потрібно більше 32 байт
Але якщо ми будемо використовувати 4 користувачів, тоді ми вимагали
4 * 30 * 7 = 840
Тут ми продемонстрували цей проект, зайнявши пам’ять 5 користувачів. Таким чином, ми не зможемо зберігати 32 байти або 5 записів відвідуваності 5- го користувача.
Ви можете спробувати це 4 користувачами, змінивши рядки коду. Я зробив коментарі в коді, де потрібні зміни.
Принципова схема та опис проекту "Система відвідуваності відбитків пальців"
Схема цього проекту системи відвідування на основі відбитків пальців, як показано на наведеній вище схемі, досить проста. У ньому є Arduino для керування всім процесом проекту, кнопка для реєстрації, видалення, вибору ідентифікаторів та для відвідування, зумер для попередження, світлодіоди для індикації та РК-дисплей для вказівки користувачеві та відображення отриманих повідомлень.
Як показано на принциповій схемі, кнопка безпосередньо підключена до контактів A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) Arduino відносно землі. Жовтий світлодіод підключений до цифрового контакту D7 Arduino щодо землі через резистор 1к. Модулі Rx і Tx модуля відбитків пальців безпосередньо підключені на послідовних виводах D2 і D3 (програмний серійний) Arduino. Блок живлення 5 В використовується для живлення модуля відбитків пальців, взятого з плати Arduino. На контакт A5 також підключений зумер. РК-дисплей 16x2 налаштований у 4-розрядному режимі, а його RS, EN, D4, D5, D6 та D7 безпосередньо підключені до цифрових виводів D13, D12, D11, D10, D9 та D8 Arduino.
Пояснення коду:
Код системи відвідування відбитків пальців для arduino наведено в наступних розділах. Хоча код добре пояснюється коментарями, ми обговорюємо тут кілька важливих частин коду. Ми використовували бібліотеку відбитків пальців для взаємодії модуля друку пальців з платою Arduino.
Перш за все, ми включаємо файл заголовка та визначаємо вхідний та вихідний штифт та визначаємо макрос та оголошені змінні. Після цього, у функції налаштування, ми даємо напрямок визначеному штифту та ініціюємо РК-модуль та модуль друку пальців
Після цього ми повинні написати код для завантаження даних про відвідуваність.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (реєстрація, INPUT_PULLUP); pinMode (вгору, INPUT_PULLUP); pinMode (вниз, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (збіг, INPUT_PULLUP); pinMode (зумер, ВИХІД); pinMode (indFinger, OUTPUT); digitalWrite (зумер, LOW); if (digitalRead (enroll) == 0) {digitalWrite (зумер, HIGH); затримка (500); digitalWrite (зумер, LOW); lcd.clear (); lcd.print ("Будь ласка, почекайте"); lcd.setCursor (0,1); lcd.print ("Завантаження даних");
Після цього ми повинні написати код для очищення даних про відвідуваність з EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Будь ласка, почекайте"); lcd.setCursor (0,1); lcd.print ("Скидання….."); для (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); для (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Скидання системи"); затримка (1000); }
Після цього ми ініціюємо модуль друку пальців, показуючи привітальне повідомлення на РК-дисплеї, а також ініційований модуль RTC.
Після цього, у функції циклу, ми прочитали час RTC і відобразили його на РК-дисплеї
недійсний цикл () {зараз = rtc.now (); lcd.setCursor (0,0); lcd.print ("Час->"); lcd.print (now.hour (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Дата->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Після цього, чекаючи, поки відбиток пальця зробить введення, і порівняти ідентифікований знімок із збереженими ідентифікаторами. Якщо відбувається обстріл, перейдіть до наступного кроку. А також перевірка клавіш реєстрації del
int результат = getFingerprintIDez (); if (результат> 0) {digitalWrite (indFinger, LOW); digitalWrite (зумер, HIGH); затримка (100); digitalWrite (зумер, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (результат); lcd.setCursor (0,1); lcd.print ("Будь ласка, зачекайте…."); затримка (1000); відвідуваність (результат); lcd.clear (); lcd.print ("Відвідуваність"); lcd.setCursor (0,1); lcd.print ("Зареєстровано"); затримка (1000); digitalWrite (indFinger, HIGH); повернення; }
Дана функція void checkKeys () використовується для перевірки, натиснута клавіша або не натиснута клавіша DEL, і що робити, якщо натиснути. Якщо натиснута клавіша ENROLL, натиснута функція Enroll () , а натиснута клавіша DEL, тоді викликається функція delete () .
Функція void delet () використовується для введення ідентифікатора, який потрібно видалити, та виклику функції uint8_t deleteFingerprint (uint8_t id), яка видалить палець із записів.
Дана функція використовується для зйомки відбитків пальців та перетворення їх у шаблон, а також збереження за вибраним ідентифікатором в пам'яті модуля відбитка пальця.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ідентифікатор пальця:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Розмістіть палець"); затримка (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Дана функція використовується для зберігання часу та дати відвідуваності у виділеному слоті EEPROM
недійсне відвідування (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; користувач = користувач1 ++; } ще if (id == 2) {eepLoc = 210; користувач = користувач2 ++; } інакше якщо (id == 3)………….
Дана функція використовується для отримання даних з EEPROM і надсилання на послідовний монітор
скасувати порожнечу (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); якщо (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); якщо (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….