- Потребне компоненте
- Шема и објашњење
- Рад сензора отиска прста са ПИЦ микроконтролером
- Објашњење програмирања
Сензор за отисак прста, који смо раније гледали у научно-фантастичним филмовима, постао је врло уобичајен за верификацију идентитета особе у разне сврхе. У данашње време системе засноване на отисцима прстију можемо видети свуда у свакодневном животу, попут присуства у канцеларијама, верификације запослених у банкама, подизања готовине или полога на банкоматима, верификације идентитета у владиним канцеларијама итд. Већ смо то повезали са Ардуином и са Распберри Пи, данас ћемо повезати Фингер Принт Сенсор са ПИЦ микроконтролером. Користећи овај ПИЦ микроконтролер ПИЦ16ф877А систем за отисак прста, можемо да упишемо нове отиске прстију у систем и да избришемо већ уложене отиске прстију. Комплетан рад система приказан је у видеу дато на крају чланка.
Потребне компоненте
- ПИЦ16ф877А Микроконтролер
- Модул отиска прста
- Тастери или тастатура
- ЛЦД 16к2
- 10к пот
- Кристални осцилатор 18.432000 МХз
- Даска за хлеб или ПЦБ (поручено од ЈЛЦПЦБ)
- Жице краткоспојника
- ЛЕД (опционално)
- Отпорник 150 охм -1 к охм (опционално)
- 5в напајање
Шема и објашњење
У овом пројекту повезивања сензора отиском прста ПИЦ микроконтролера користили смо 4 тастера: ови тастери се користе за вишенаменско функционисање. Тастер 1 се користи за подударање отиска прста и повећање ИД отиска прста током складиштења или брисања отиска прста у систему. Тастер 2 се користи за упис новог отиска прста и за смањење ИД отиска док чувате или бришете отисак прста у систему. Тастер 3 служи за брисање сачуваног прста из система, а тастер 4 користи се за ОК. Лед користи се за индикацију да је отисак прста откривен или да се подудара. Овде смо користили модул за отиске прстију који ради на УАРТ-у. Дакле, овде смо повезали овај модул отиска прста са ПИЦ микроконтролером при подразумеваној брзини преноса података која износи 57600.
Дакле, пре свега, морамо да успоставимо све потребне везе како је приказано на доњем круговном дијаграму. Везе су једноставне, управо смо повезали модул отиска прста на УАРТ микроконтролера ПИЦ. ЛЦД 16к2 користи се за приказивање свих порука. 10к лонац се такође користи са ЛЦД екраном за контролу контраста истог. 16к2 ЛЦД подаци за контакт су повезани ПОРТА пинови. Прикључци д4, д5, д6 и д7 ЛЦД-а повезани су са Пин РА0, РА1, РА2 и РА3 ПИЦ микроконтролера. Четири тастера (или тастатура) повезана су на ПОРТД пин РД0, РД1, РД2 и РД. ЛЕД је такође повезан на пин ПОРТЦ пин РЦ3. Овде смо користили спољни кристални осцилатор од 18,432000 МХз за усмеравање микроконтролера.
Рад сензора отиска прста са ПИЦ микроконтролером
Руковање овим пројектом је једноставно, само пренесите хек датотеку, генерисану из изворног кода, у ПИЦ микроконтролер уз помоћ ПИЦ програмера или пламеника (ПИцкит2 или Пицкит3 или други), а затим ћете видети неке уводне поруке преко ЛЦД-а, а затим и корисника биће затражено да унесе избор за операције. Да бисте се подударали са корисником отиска прста, потребно је да притиснете тастер 1, а затим ће ЛЦД затражити Поставите прст на сензор отиска прста. Сада стављањем прста преко модула за отиске прстију можемо да проверимо да ли су наши отисци већ ускладиштени или не. Ако је ваш отисак прста сачуван, на ЛЦД-у ће се приказати порука са ИД-ом за чување отиска прста попут ' ИД: 2', у супротном ће се приказати 'Нот Фоунд' .
Сада да би уписао отисак прста , корисник треба да притисне дугме за регистрацију или тастер 2 и следи упутства са порука на ЛЦД екрану.
Ако корисник жели да избрише било који од отисака прстију, тада треба да притисне тастер за брисање или тастер 3. Након тога, ЛЦД ће тражити ИД отиска прста који се жели избрисати. Сада помоћу дугмета за повећање или тастера 1 (одговарајуће дугме или тастер 1) и дугмета за смањивање или тастера 2 (дугме за регистрацију или тастер 2) за повећање и смањење, корисник може да изабере ИД сачуваног отиска прста и притисне ОК дугме за брисање тог отиска прста. За више разумевања погледајте видео запис дат на крају пројекта.
ФингерПринт повезивање Напомена: Програм овог пројекта је мало сложен за почетнике. Али његов једноставан код за повезивање направљен је коришћењем читања листа података модула отиска прста р305. Сва упутства за функционисање овог модула за отиске прстију дата су у техничком листу.
Овде смо користили формат оквира за разговор са модулом отиска прста. Кад год пошаљемо наредбу или оквир захтева за податке модулу за отисак прста, он нам одговара истим форматом оквира који садржи податке или информације повезане са примењеном командом. Сви формати података и оквира за наредбе дати су у корисничком приручнику или у техничком листу модула отиска прста Р305.
Објашњење програмирања
У програмирању смо користили доњи формат оквира.
Програм започињемо постављањем конфигурационих битова и дефинирањем макронаредби и пинова за ЛЦД, тастере и ЛЕД диоде, које можете проверити у комплетном коду датом на крају овог пројекта. Ако сте нови у ПИЦ микроконтролеру, почните са Почетак рада са пројектом ПИЦ Мицроцонтроллер.
Затим смо декларисали и иницијализовали неку променљиву и низ и направили оквир који треба да користимо у овом пројекту за повезивање модула отиска прста са ПИЦ микроконтролером.
уцхар буф; уцхар буф1; волатиле уинт индек = 0; нестабилна застава инт = 0; уинт мсЦоунт = 0; уинт г_тимерфлаг = 1; испарљив уинт цоунт = 0; уцхар подаци; уинт ид = 1; набрајање { ЦМД, ДАТА, СБИТ_ЦРЕН = 4, СБИТ_ТКСЕН, СБИТ_СПЕН, }; цонст цхар пассПацк = {0кЕФ, 0к1, 0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1, 0к0, 0к7, 0к13, 0к0, 0к0, 0к0, 0к0, 0к0, 0к1Б}; цонст цхар ф_детецт = {0кЕФ, 0к1, 0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1, 0к0, 0к3, 0к1, 0к0, 0к5}; цонст цхар ф_имз2цх1 = {0кЕФ, 0к1, 0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1, 0к0, 0к4, 0к2, 0к1, 0к0, 0к8}; цонст цхар ф_имз2цх2 = {0кЕФ, 0к1, 0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1, 0к0, 0к4, 0к2, 0к2, 0к0, 0к9}; цонст цхар ф_цреатеМодел = {0кЕФ, 0к1,0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1,0к0,0к3,0к5,0к0,0к9}; цхар ф_стореМодел = {0кЕФ, 0к1,0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1,0к0,0к6,0к6,0к1,0к0,0к1,0к0,0кЕ}; цонст цхар ф_сеарцх = {0кЕФ, 0к1, 0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1, 0к0, 0к8, 0к1Б, 0к1, 0к0, 0к0, 0к0, 0кА3, 0к0, 0кЦ8}; цхар ф_делете = {0кЕФ, 0к1,0кФФ, 0кФФ, 0кФФ, 0кФФ, 0к1,0к0,0к7,0кЦ, 0к0,0к0,0к0,0к1,0к0,0к15};
Након њега направили смо ЛЦД функцију за погон ЛЦД-а.
воид лцдврите (уцхар цх, уцхар рв) { ЛЦДПОРТ = ЦХ >> 4 & 0к0Ф; РС = рв; ЕН = 1; __делаи_мс (5); ЕН = 0; ЛЦДПОРТ = цх & 0к0Ф; ЕН = 1; __делаи_мс (5); ЕН = 0; } Лцдпринт (цхар * стр) { вхиле (* стр) { лцдврите (* ул ++, ДАТА); // __ кашњење_мс (20); } } лцдбегин () { уцхар лцдцмд = {0к02,0к28,0к0Е, 0к06,0к01}; уинт и = 0; за (и = 0; и <5; и ++) лцдврите (лцдцмд, ЦМД); }
Дата функција се користи за иницијализацију УАРТ-а
воид сериалбегин (уинт баудрате) { СПБРГ = (18432000УЛ / (лонг) (64УЛ * баудрате)) - 1; // брзина преноса @ 18.432000Мхз Цлоцк ТКССТАбитс.СИНЦ = 0; // Постављање асинхроног режима, тј. УАРТ РЦСТАбитс.СПЕН = 1; // Омогућава серијски порт ТРИСЦ7 = 1; // Као што је прописано у техничком листу ТРИСЦ6 = 0; // Као што је прописано у таблици РЦСТАбитс.ЦРЕН = 1; // Омогућава континуирани пријем ТКССТАбитс.ТКСЕН = 1; // Омогућава пренос ГИЕ = 1; // ЕНАБЛЕ прекида ИНТЦОНбитс.ПЕИЕ = 1; // ЕНабле периферни прекиди. ПИЕ1битс.РЦИЕ = 1; // Омогући УСАРТ примање прекида ПИЕ1битс.ТКСИЕ = 0; // онемогућавање УСАРТ ТКС прекида ПИР1битс.РЦИФ = 0; }
Дате функције се користе за пренос команди на модул отиска прста и пријем података са модула отиска прста.
воид сериалврите (цхар цх) { вхиле (ТКСИФ == 0); // Сачекајте да се одашиљачки регистар испразни ТКСИФ = 0; // Обриши заставицу предајника ТКСРЕГ = цх; // учитати цхар да се пренесе у предајника обл } сериалпринт (цхар * стр) { а (* ул) { сериалврите (* ул ++); } } воид интеррупт СериалРкПинИнтеррупт (воид) { иф ((ПИР1битс.РЦИФ == 1) && (ПИЕ1битс.РЦИЕ == 1)) { уцхар цх = РЦРЕГ; буф = цх; иф (индек> 0) застава = 1; РЦИФ = 0; // очисти рк заставицу } } воид сериалФлусх () { фор (инт и = 0; и
Након њега морамо направити функцију која припрема податке који се преносе на отисак прста и декодира податке који долазе из модула отиска прста.
инт сендцмд2фп (цхар * пацк, инт лен) { уинт рес = ГРЕШКА; сериалФлусх (); индекс = 0; __делаи_мс (100); за (инт и = 0; и
Сада су у коду доступне четири функције за четири различита задатка:
- Функција за унос ИД-а отиска прста - јединица гетИд ()
- Функција за подударање прста - воид матцхФингер ()
- Функција за упис новог прста - воид енролФингер ()
- Функција за брисање прста - воид делетеФингер ()
Комплетни код са све четири функције дат је на крају.
Сада у главној функцији иницијализујемо ГПИО, ЛЦД, УАРТ и проверавамо да ли је модул отиска прста повезан са микроконтролером или није. Затим приказује неке уводне поруке преко ЛЦД-а. Коначно, у док петља читамо све кључеве или тастера за управљање пројектом.
инт маин () { воид (* ФП) (); АДЦОН1 = 0б00000110; ЛЕДдир = 0; СВПОРТдир = 0кФ0; СВПОРТ = 0к0Ф; сериалбегин (57600); ЛЦДПОРТДИР = 0к00; ТРИСЕ = 0; лцдбегин (); лцдпринт ("отисак прста"); лцдврите (192, ЦМД); лцдпринт ("Интерфацинг"); __делаи_мс (2000); лцдврите (1, ЦМД); лцдпринт ("Коришћење ПИЦ16Ф877А"); лцдврите (192, ЦМД); лцдпринт ("Цирцуит Дигест"); __делаи_мс (2000); индекс = 0; вхиле (сендцмд2фп (& пассПацк, сизеоф (пассПацк))) { лцдврите (1, ЦМД); лцдпринт ("ФП није пронађен"); __делаи_мс (2000); индекс = 0; } лцдврите (1, ЦМД); лцдпринт („ФП пронађен“); __делаи_мс (1000); лцдинст (); док (1) { ФП = подударање
Комплетни ПИЦ код и радни видео дати су у наставку. Такође погледајте наше друге пројекте помоћу модула сензора за отисак прста:
- Биометријска машина за гласање заснована на отисцима прстију која користи Ардуино
- Биометријски сигурносни систем који користи Ардуино и сензор отиска прста
- Систем биометријске посећености заснован на отисцима прстију који користи Ардуино
- Повезивање сензора отиска прста са Распберри Пи