Биометрично заключване - настройка на скенера и програмиране на микроконтролера. Домашна биометрична брава с пръстови отпечатъци за предната гаражна врата Програма за регистриране на данни от скенера

Биометрично заключване - настройка на скенера и програмиране на микроконтролера. Домашна биометрична брава с пръстови отпечатъци за предната гаражна врата Програма за регистриране на данни от скенера

Тъй като нямам кола, не се налага да нося ключовете навсякъде с мен. Поради това се оказа, че няколко пъти се оказвам без ключове извън къщата и трябваше да чакам някой от роднините да се прибере и да ме пусне вътре и в един момент реших, че трябва да направя нещо по въпроса и проектира домашно направена брава за гараж.

В този проект ще ви покажа как да направите ключалка с пръстов отпечатък на входната врата.

Стъпка 1: Материали


Ето списък на необходимите материали и инструменти.

електроника:

  • Скенер за пръстови отпечатъци (и JST конектор)
  • LCD комплект (с ATmega328)
  • ATtiny85
  • NPN транзистор
  • Високоговорител-пищялка
  • кабел за високоговорител
  • Калъф (в стъпка 9 ще има файлове за 3D печат)
  • Меден филм
  • Регулатор на напрежение 5V
  • Батерия 9V
  • Конектор за батерия 9V
  • SPDT превключвател

За улеснение ще прикача готов списък с желания в сайта на Sparkfun.

Инструмент:

  • Поялник и спойка
  • Изолационна лента
  • Проводници и джъмпери
  • Щипки / стрипер
  • платка за прототипиране
  • Различни резистори
  • винтове
  • Пробивна машина
  • Няколко светодиода за тестване
  • FTDI 5V платка
  • пистолет за горещо лепило
  • Достъп до 3D принтер
  • По избор: IC гнездо (8-пинов за ATtiny и 28-пинов за ATmega)
  • По избор: друга платка Arduino / 10uF кондензатор (подробности в стъпка 5)

Стъпка 2: Схема на устройството






LCD комплектът, закупен от Sparkfun, дойде с ATmega328, управляващ дисплея. ATmega328 е доста мощен и може да се използва не само за управление на дисплея, но и за други задачи. С оглед на това можем да го използваме вместо Arduino, за да комуникираме със скенера за пръстови отпечатъци и да изпращаме команди до ATtiny85, да контролираме дисплея и зумера.

За да попреча на биометричната ключалка на вратата да работи през цялото време, вградих в нея превключвател, който работи в момента, в който кутията се затвори. Ако кутията е затворена, устройството не се захранва и пестим ресурси на батерията.

Важна забележка: Скенерът за пръстови отпечатъци работи на 3,3 V, така че препоръчвам да използвате делител на напрежение, който ще преобразува сигналите от ATmega в 3,2 V. Делителят на напрежението се състои от резистор 560 ома между D10 / щифт 2 на скенера и резистор 1 kΩ между GND / щифт 2 на скенера.

LCD Pinout:

  • D10 - щифт 1 на скенера (черен проводник)
  • D11 - щифт 2 на скенера (чрез делител на напрежение)
  • D12-ATtiny85
  • D13 - Пищялка

Разпределение на ATtiny85:

  • Pin 5 (0 в програмния код) - вход от ATmega
  • Pin 3 (4 в програмния код) - транзистор / жълт светодиод
  • Pin 7 (2 в програмния код) - индикация LED

Стъпка 3: Сглобяване на компонентите от LCD комплекта

Името на стъпката говори само за себе си: удобно ръководство за бърз старт/сглобяване

Стъпка 4: Сглобяване на веригата на прототипната платка




Разположението на компонентите на платката зависи от вас, просто се опитайте да запоите проводниците така, че да изглеждат в една посока и да не се счупят.

След сглобяването покрих горната и долната част на платката с горещо лепило - това закрепи и изолира елементите на веригата. Горещото лепило няма да повреди чипа.

Както при основната платка, запоете всичко към платката ATtiny и нанесете горещо лепило, за да закрепите и изолирате компонентите. Регулаторът на напрежението може да стане много горещ, така че е добра идея да не нанасяте горещо лепило върху него или повърхности в близост до него. Също така е най-добре да не залепвате горещо платката ATtiny, тъй като може да искате да я премахнете и препрограмирате.

Стъпка 5: Програмиране на ATmega328

Както бе споменато в стъпка 2, ATmega328 има достатъчно силен процесор и достатъчно щифтове, за да управлява LCD дисплея, докато управлява други допълнителни компоненти. За да постигнете това, трябва да програмирате чипа.

ако имате Ардуино Уноили Duemilanove, можете просто да премахнете чипа от тях и да го замените с този, който дойде с комплекта. Като алтернатива можете да намерите FTDI Basic Breakout (5V) платка и конектори за запояване отстрани (вижте снимките в стъпка 3)

Ще трябва също да попълните кода в режим "Duemilanove w/ ATmega328".

Код по-долу - работна програмаза проверка на функционалността на устройството.

#include "LiquidCrystal.h" LiquidCrystal lcd(2,3,4,5,6,7,8); void setup() ( pinMode(9, OUTPUT); // подсветка pinMode(13, OUTPUT); // tweeter lcd.begin(16, 2); // 16 знака широк, 2 знака висок digitalWrite(9, HIGH) ; //включете подсветката lcd.print(" Hello world!"); //центрирайте текста с интервали delay(2000); ) void loop() ( //пищялкият се включва и изключва, състоянието му се показва на дисплей lcd.clear(); lcd.print(" Зумерът е включен "); тон(13, 262, 1000); закъснение(1000); lcd.clear(); lcd.print(" Зумерът е изключен "); забавяне (1000); ) Файлове

Стъпка 6 Настройте четеца на пръстови отпечатъци

За да комуникирам със скенера, използвах тази библиотека. Директна връзка за изтегляне.

За да проверите дали кодът работи, изтеглете тази програма за мигане.

Скенерът за пръстови отпечатъци разполага със собствена вградена памет за съхранение на данни. Така че, след като се уверите, че скенерът работи, изтеглете тази програма, за да добавите вашия пръстов отпечатък към базата данни под id #0. Отворете серийната конзола и просто следвайте инструкциите.

Програма за мигане на светодиода на скенера

/* Този прост код ще включва и изключва светодиода. Използва се, за да се разбере дали комуникацията работи. */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Настройка на хардуера - скенер за пръсти, свързан към: //цифров щифт 10(arduino rx, fps tx) //цифров щифт 11(arduino tx - резистор 560ohm fps tx - резистор 1000 ома - GND) //това намалява 5v tx до около 3.2v и няма да изгорим нашия скенер FPS_GT511C3 fps(10, 11); void setup()( Serial.begin(9600); fps.UseSerialDebug = true; // ще можете да видите съобщенията на екрана за серийно отстраняване на грешки fps.Open(); ) void loop()( // тествайте fps. SetLED(true); // включва светодиода вътре в закъснението на скенера(1000); fps.SetLED(false);// изключва светодиода вътре в закъснението на скенера(1000); )

Софтуер за регистриране на данни на скенера

#include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Настройка на хардуера - скенер за пръсти, свързан към: //цифров щифт 10(arduino rx, fps tx) //цифров щифт 11(arduino tx - 560ohm резистор fps tx - резистор 1000 ома - GND) //това намалява 5v tx до около 3.2v и няма да изгорим нашия скенер FPS_GT511C3 fps(10, 11); void setup()( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll()( // Тест за регистрация // търсене на отворен идентификатор int enrollid = 0; fps.EnrollStart(enrollid); // регистрация Serial.print("Натиснете пръст за записване #"); Serial.println(enrollid); while(fps.IsPressFinger() == false) delay(100) ; bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Премахване на пръст"); fps.Enroll1(); while(fps.IsPressFinger() == true ) delay(100); Serial.println("Натиснете отново същия пръст"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Премахване на пръст"); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Натиснете отново същия пръст"); while(fps. IsPressFinger () == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Премахване на пръст"); iret = fps.Enroll3(); if (iret = = 0) ( Serial.println("Регистрирането е успешно"); ) else ( Serial.print("Неуспешно записване с код на грешка:"); Serial.println(iret); ) ) else Serial.println("Неуспешно улавяне на трети пръст"); ) else Serial.println("Неуспешно заснемане на втори пръст"); ) else Serial.println("Неуспешно заснемане на първия пръст"); ) void loop()( delay(100000); ) Файлове

Стъпка 7: Програмирайте ATtiny85


ATtiny85 е нещо като евтин Arduino, събран в един чип. ATtiny85 може да се програмира с други Arduinos, включително ATmega328, намиращ се в нашия LCD комплект. Проектът го използва за изпълнение на много прости команди: проверете сигнала от ATmega и отворете вратата, ако сигналът е правилен.

За да го програмирате, свържете всичко според приложените снимки. След това изтеглете необходимите файлове и следвайте тази инструкция.

След като кодът е зареден, пин 13 на Arduino (вграден светодиод) трябва да светне, което показва, че кодът е зареден.

Краен код:

//Получава кратък сигнал от главния модул за затваряне на релето void setup()( pinMode(2,OUTPUT); //LED индикация чрез 10K резистор pinMode(4,OUTPUT); //транзисторен щифт, който отваря pinMode на гаража (0,INPUT); // въведете delay(500); // дайте време на устройството да стартира digitalWrite(2, HIGH); // индикаторен светодиод) void loop()( if(digitalRead(0))( // прост модел за забавяне на превключване на транзистора (125); if(digitalRead(0)==false)( delay(55); //изчакайте, защото таймерът ATtiny не е перфектен if(digitalRead(0))( delay(55); if(digitalRead (0)= =false)( delay(55); if(digitalRead(0))( delay(55); if(digitalRead(0)==false)( digitalWrite(4, HIGH); //транзисторът "натиска" бутон delay(1000); digitalWrite(4,LOW); digitalWrite(2,LOW); delay(1000); digitalWrite(2, HIGH); ) ) ) ) ) ) ) Файлове

Стъпка 8: Окончателен код

По-долу е дадена програма на Arduino, която написах с помощта на библиотеките за скенер и дисплей. За да стане ясно какво се случва във всяка част от програмата, се опитах да коментирам всичко по възможно най-добрия начин. След като изтеглите този код, всичко трябва да работи и всичко, което остава да направите, е да интегрирате системата във вратата.

Предупреждение: ако библиотеката на скенера не работи, опитайте да използвате Стара версия Arduino IDE.

Код за ATmega238:

#include "LiquidCrystal.h" //библиотека на дисплея #include "FPS_GT511C3.h" //библиотека fps (скенер за пръстови отпечатъци) #include "SoftwareSerial.h" //използван от библиотеката на скенера //Конфигуриране на дисплея и щифтовете на скенера LiquidCrystal LCD (2, 3, 4, 5, 6, 7, 8); //извеждане на pinout FPS_GT511C3 fps(10, 11); //RX, TX boolean isFinger = false; //вярно, ако fps библиотеката открие пръст върху скенера //изходни щифтове const int buzzerPin = 13; const int backlightPin = 9; const int attinyPin = 12; const String idNames = ( "self", "Bro", "Ryan", "Mom", "Dad", "Alltie", "Grandma", "Zeide", "Person", "person", "Thumb"); void setup()( //настройване на изходи pinMode(buzzerPin, OUTPUT); pinMode(backlightPin, OUTPUT); pinMode(attinyPin, OUTPUT); //за отстраняване на грешки //Serial.begin(9600); fps.UseSerialDebug = false; / /става вярно за отстраняване на грешки в fps чрез сериен порт//инициализация на библиотеки lcd.begin(16,2); digitalWrite(backlightPin, HIGH); //LCD подсветка fps.Open(); fps SetLED(true); //LED на fps //зареждане на звук за (int i=0; i<30; i++){ tone(buzzerPin, 50+10*i, 30); delay(30); } tone(buzzerPin, 350); //вывод стартового сообщения lcd.print("Put your finger "); //команда вывода на экран lcd.setCursor(0, 1); //устанавливаем курсор на нулевую колонку первой строки lcd.print(" on the scanner "); delay(150); noTone(buzzerPin); //останавливаем стартовый звук } void loop(){ //сканируем и распознаём отпечаток, когда приложен палец waitForFinger(); lcd.clear(); //очищаем экран и устанавливаем курсов в положение 0,0 fps.CaptureFinger(false); //захватываем отпечаток для идентификации int id = fps.Identify1_N(); //идентифицируем отпечаток и сохраняем id if(id <= 10){ lcd.print(" Access granted "); //сообщение об успехе lcd.setCursor(0,1); //выводим на экран имя когда дверь открывается String message = " Hey " + idNames + "!"; lcd.print(message); tone(buzzerPin, 262, 1000); delay(1500); //отправляем сигнал для открытия двери digitalWrite(attinyPin, HIGH); //первый импульс синхронизирует задержку (10ms) delay(5); digitalWrite(attinyPin, LOW); delay(3); digitalWrite(attinyPin, HIGH); //следующие два - открывают дверь delay(15); digitalWrite(attinyPin, LOW); delay(5); digitalWrite(attinyPin, HIGH); delay(10); digitalWrite(attinyPin, LOW); delay(1000); lcd.clear(); lcd.print("Don"t forget to "); lcd.setCursor(0,1); lcd.print(" shut me off! "); delay(2000); waitForFinger(); //нажмите чтобы продолжить запись while(true){ //сохраняет новый отпечаток //выводит сообщение на экран lcd.clear(); lcd.print(centerText("So you want to")); lcd.setCursor(0,1); lcd.print(centerText("scan a new one?")); delay(2000); //Скопировано и слегка модифицировано из примера регистрации данных: int enrollid = 11; //выбираете какой id переписать\создать //отпустите палец, когда хотите записать id/имя, напечатанное на экране waitForFinger(); //ждёт, когда будет нажат fps while(enrollid==11){ for (int i = 1; i1){ lcd.print(i); enrollid = i-1; break; } } } //предупреждение, если в данном слоте уже есть данные if(fps.CheckEnrolled(enrollid)){ lcd.clear(); lcd.print(" Warning! ID #"); lcd.print(enrollid); lcd.setCursor(0,1); lcd.print(" has data. OK? "); delay(2500); waitForFinger(); //ждёт, когда будет нажат fps fps.DeleteID(enrollid); //удаляет данные delay(100); } //Enroll fps.EnrollStart(enrollid); lcd.clear(); lcd.print("Place finger to "); lcd.setCursor(0,1); lcd.print("enroll #"); lcd.print(enrollid); //выводит id, который был добавлен waitForFinger(); //ждёт, когда будет нажат fps //захватывает отпечаток и сохраняет его в память трижды для точности данных bool bret = fps.CaptureFinger(true); //картинка высокого качества для записи int iret = 0; //в случае ошибки if (bret != false){ //первая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100); //ждёт пока уберут палец lcd.clear(); lcd.print(" Press again "); waitForFinger(); //ждёт, когда будет нажат fps bret = fps.CaptureFinger(true); if (bret != false){ //вторая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); lcd.clear(); lcd.print("Press yet again "); waitForFinger(); bret = fps.CaptureFinger(true); if (bret != false){ //третья регистрация iret = fps.Enroll3(); if (iret == 0){ //проверяет, были ли какие-нибудь ошибки lcd.clear(); lcd.print(" Success! "); delay(2000); beep(); //выключает Ардуино } else{ //запускает этот код в случае любой ошибки lcd.clear(); lcd.print("Fail. Try again "); delay(1000); } } lcd.clear(); lcd.print(" Failed 3rd "); //ошибка на третьей записи delay(1000); } lcd.clear(); lcd.print(" Failed 2nd "); //ошибка на второй записи delay(1000); } lcd.clear(); lcd.print(" Failed 1st "); //ошибка на первой записи delay(1000); } } else{ lcd.print("Fingerprint is"); //если отпечаток не распознан lcd.setCursor(0,1); lcd.print(" unverified "); delay(2000); lcd.clear(); lcd.print("Please try again"); lcd.setCursor(0,1); lcd.print("Use your pointer"); //pointer - указательный палец (можете использовать любой и заменить это слово) delay(500); } delay(250); } void beep(){ //издаёт звуки, чтобы кто-нибудь закрыл кейс lcd.clear(); lcd.print("Please close the"); lcd.setCursor(0,1); lcd.print(" case! "); for(int i=0;i=80 && !fps.IsPressFinger()){ beep(); } } timer = 0; //обнуляет таймер как только функция завершится } String centerText(String s) { //центрует текст на дисплее, чтобы он лучше смотрелся while(16-s.length()>1)( //ако текстът трябва да бъде центриран s = " " + s + " "; //добавя интервали равномерно от двете страни ) return s; ) Файлове

Ако използвате сравнително старо устройство, не се разстройвайте преди време. Вместо да сменяте стар лаптоп за по-модерен с вграден биометричен сензор, можете да свържете USB към него.

PQI Mini USB четецът на пръстови отпечатъци е чудесен избор за тези, които искат да дадат втори живот на своя стар хардуер. Скенерът е специално проектиран да работи с новата функция Hello, налична на устройства с Windows 10. Устройството обаче поддържа и операционни системи Windows 7 и 8.

Едно от основните предимства на сензора е, че има възможност за 360-градусово сканиране. Така че не е нужно да се притеснявате за най-добрия начин да свържете вашето устройство към вашия компютър. Използвайте най-близкия USB порт и започнете. Когато скенерът се нуждае от пръстов отпечатък, той автоматично ще се обърне на правилното място и ще сравни получените данни със запазеното копие.

PQI Mini USB четец на пръстови отпечатъци може да съхранява до 10 различни профила в паметта. Затова устройството е страхотно за споделяне или когато трябва да сканирате допълнителен пръст (ако „основният“ се изцапа или нарани).

PQI Mini USB четецът на пръстови отпечатъци се предлага на много достъпна цена, което го прави чудесен избор за тези, които търсят модел за начинаещи. В допълнение, скенерът е достатъчно преносим, ​​за да го носите без много проблеми.

Четец на пръстови отпечатъци Verifi P2000

Ако използвате настолен компютър, на който не е толкова лесно да стигнете до USB портове, обърнете внимание на четеца на пръстови отпечатъци Verifi P2000. Лесно се свързва с компютър и най-важното е, че може да се постави близо до компютъра за по-удобна употреба.

Скенерът е изработен от удароустойчив метал и ще издържи повече от една година. Въпреки здравата конструкция, той има добра степен на разпознаване на пръстови отпечатъци. Така че не е нужно непрекъснато да променяте позицията на пръста си, само за да постигнете перфектно съвпадение. В повечето случаи ще бъде достатъчно да плъзнете сензора само веднъж.

При създаването на P2000 Verifit планира да направи устройството здраво и издръжливо, така че да не оказва влияние върху процеса на сканиране и точността на резултатите от разпознаването. Четецът на пръстови отпечатъци Verifi P2000 е достатъчно преносим, ​​за да се носи лесно. Освен това е съвместим с много по-голям брой компютри от други подобни модели.

Kensington VeriMark

За един невероятно малък скенер за пръстови отпечатъци, Kensington VeriMark има почти всичко необходимо за удобна работа. Моделът може да се похвали с поддръжка на 360-градусово сканиране и малък размер. Но основното нещо, което прави Kensington VeriMark толкова ценен, е допълнителната функционалност.

Всички получени данни се съхраняват в криптирана форма. Когато сензорът сканира пръстов отпечатък, той веднага го криптира. Невъзможно е да се прекъсне този процес, така че няма да е възможно да се хакне софтуера или хардуера и да се извлекат биометрични данни.

Освен това устройството използва специален шаблон за декодиране на получените сканирания, който има само производителят. Това го прави по-сигурен от хакерски атаки и други опити за неоторизиран достъп.

Скенерът поддържа относително стари портове, независимо от версията на изданието. Ако използвате модел с адаптер USB-C към USB-A, устройството може да бъде свързано към относително стар лаптоп или компютър без поддръжка за по-модерни USB портове.

Анализатор на четец на пръстови отпечатъци Benss

Benss Fingerprint Reader Analyzer е друг скенер, който може да улесни живота ви и да ви спести много проблеми. По правило по-простите модели първо правят една контролна снимка, след което всички следващи отпечатъци се сравняват с оригиналния резултат. Това означава, че ако нещо се случи с оригиналното изображение (с което се сравняват всички други сканирания), тогава вероятността за съвпадение на крайните резултати ще намалее значително.

Benss Fingerprint Reader Analyzer се захранва от самообучаващ се алгоритъм, който автоматично създава и актуализира вашия профил с всяко докосване. Колкото по-дълго използвате устройството, толкова по-точни ще бъдат резултатите. Това прави по-трудно заблудата на скенера с фалшиви пръстови отпечатъци. Тъй като сензорът непрекъснато сканира пръста ви и актуализира базата данни, той веднага открива опити за неоторизиран достъп.

Това е едно от най-ефективните устройства за противодействие на хакерски атаки. Неговият процент на фалшиво приемане е по-малък от 0,002%, което означава, че ще трябва наистина да опитате да хакнете устройството. В същото време не усложнява много работата, неговият FRR (False Rejection Rate - отказ на достъп до лице, регистрирано в системата) е само 3%.

IDEM BioScan Compact

Ако търсите скенер с опции за персонализиране, IDEM BioScan Compact е този за вас. За да разширите основните му възможности и да получите допълнителна функционалност, достатъчно е да изтеглите специален софтуер от официалния уебсайт на производителя.

След това можете да шифровате отделни файлове и папки на вашия компютър, както и да съхранявате данни за вход и парола за достъп до уебсайтове в специална програма. Така че можете да влезете във всеки интернет портал с обичайното докосване на пръста си върху сензора.

Дори и да не вземете предвид допълнителната функционалност, BioScan Compact се счита за достоен модел. Устройството може да съхранява до 10 различни пръстови отпечатъка, разполага с малки размери, както и с вградена защита за разпознаване на фалшиви биометрични данни.

Blucoil SecuGen Hamster Pro 20

Blucoil SecuGen Hamster Pro 20 е идеалният скенер за пръстови отпечатъци за професионални нужди. Поради факта, че моделът предлага разширени настройки за сигурност, цената му е почти два пъти по-висока от останалите устройства в нашия списък.

В допълнение, това е един от малкото скенери с официална поддръжка на Linux. Следователно, без значение коя операционна система използвате, сензорът е подходящ за всяка задача.

SecuGen Hamster Pro 20 е здрав и устойчив на надраскване, вода и прах. Скенерът може да проследява следи, останали от предишни сканирания, и да отхвърля неясни резултати.

Освен това Blucoil SecuGen Hamster Pro 20 е енергоспестяващо устройство, така че автоматично се изключва, ако никой не го използва дълго време.

Допълнителна сигурност

През последните години бяха пуснати огромен брой мобилни и настолни устройства с вградени скенери за пръстови отпечатъци и всяка година броят им само нараства. Ако вашият компютър няма вграден сензор за разпознаване на биометрични данни, тогава не трябва да се разстройвате. Има огромно разнообразие от USB скенери за компютри и лаптопи, които са съвместими с почти всички популярни модели.

Въпреки че можете да получите достъп до защитени системи чрез пароли и ключове, и двете опции могат да бъдат неудобни и лесни за забравяне. В този урок ще научим как да използваме модула FPM10A с библиотеката Adafruit Arduino, за да създадем биометрична система за пръстови отпечатъци.

По традиция започваме с компонентите за нашия урок.

Подробности

  • FPM10A модул за пръстови отпечатъци
  • Ардуино Уно

Библиотеки и софтуер

  • Arduino IDE
  • Библиотека с пръстови отпечатъци на Adafruit

Схема на свързване

Диаграмата на свързване на модула FPM10A и Arduino Uno трябва да бъдат свързани заедно, както е показано на фигурата по-горе. Ще разгледаме повече подробности в следващата стъпка.

Свързваме компоненти

Започването с този модул е ​​невероятно лесно поради факта, че той използва сериен порт за комуникация. Въпреки това, тъй като Arduino Uno има само един хардуерен сериен порт, трябва да използвате серийния порт чрез софтуер, като използвате щифтове 2 и 3, за да комуникирате с модула за пръстови отпечатъци (хардуерният сериен порт е запазен за комуникация с компютър).

Лентовият кабел, който идва с модула FPM10A, не е много удобен за хоби, тъй като проводниците стоят в кутията на стъпка от 1,27 mm, така че отрязахме едната страна и след това свързахме проводниците към джъмперите.

Инсталиране и използване на библиотеката

Първата стъпка в използването на FPM10A е да инсталирате библиотеката за пръстови отпечатъци на Adafruit, което може да се направи с помощта на Library Manager. Отворете Arduino IDE и отидете на:

Скица → Включване на библиотека → Управление на библиотеки

Когато Library Manager зареди търсене „Fingerprint“, първият резултат трябва да бъде библиотеката на Adafruit Fingerprint. Инсталирайте го.

След като инсталирате библиотеката, е време да създадете нов проект на Arduino. Кликнете Файл → Нов и след това запазете проекта в собствената си папка. В този момент отворете папката на проекта и копирайте файла "fingerprint.h" в нея.

Това е специален заглавен файл, който е написан, за да направи библиотеката с пръстови отпечатъци по-лесна за използване. Заглавният файл има само три функции:

  • fingerprint_setup () - конфигурира серийния порт за 9600 бода и се свързва към модула;
  • readFingerprint() - анкетна функция, която връща -1, ако нещо се обърка, или връща информация, че е намерен успешен пръстов отпечатък
  • enrollFingerprint (int id) - добавя пръстов отпечатък към системата с присвоения идентификатор "id".

За да включите този файл във вашия проект, просто използвайте командата include, както е показано по-долу:

#include "fingerprint.h"

Първата функция, която трябва да бъде извикана в setup(), е fingerprint_setup(), която автоматично се свързва с модула и потвърждава, че всичко работи.

Void setup() ( fingerprint_setup(); )

За да добавите нов пръстов отпечатък, извикайте функцията enrollFingerprint(id).

Това ще върне -1, ако не успее. В противен случай стойностите показват успешно записване на пръстови отпечатъци. Идентификаторът предаде на тази функция препратка към сканирания пръстов отпечатък и всеки пръстов отпечатък имаше уникален идентификационен номер.

записване на пръстов отпечатък (0x01);

Код на Arduino

Можете да копирате окончателната скица за нашата платка Arduino по-долу:

#include "fingerprint.h" void setup() ( fingerprint_setup(); ) void loop() ( // Създаване на нов запис за пръстов отпечатък enrollFingerprint(0x01); delay(1000); // Заявка за запис Serial.println(" \nUSER ЗАЯВКА ЗА ВХОД...ПОСТАВЕТЕ ПРЪСТ ВЪРХУ СЕНЗОР \n"); while(readFingerprint() == -1); Serial.println(" \nДОСТЪПЪТ СЕ РАЗРЕШИ \n"); Serial.println(" \nFingerprint confidence: " + String (увереност) + "\n"); забавяне (3000); )

Принцип на действие

Когато активирате този проект, той първо ще ви помоли да поставите пръста си върху скенера. Ако скенерът може да чете вашите пръстови отпечатъци, той ще ви помоли да премахнете и след това да замените пръста си със скенера. Това трябва да накара скенера да добави успешно вашия пръстов отпечатък към ID 1 и поставянето на пръста ви върху скенера трябва да доведе до достъп до системата.

Този дизайн може лесно да бъде разширен, за да включва соленоидни ключалки и релета, за да позволи на оторизирани потребители да правят промени и да отключват системата. След като вашият проект е завършен - инсталирайте новия скенер във врати, шкафове, сейфове, прозорци, електрически системи, компютри и други!

За да създам връзка със сензора за пръстови отпечатъци, използвах инструкцията от Josh Hawley (директна инструкция за изтегляне).

За да отстраните грешки в работата на скенера за пръстови отпечатъци с дисплей с букви, трябва да синхронизирате.

Сензорът за пръстови отпечатъци има собствена памет за съхранение на сканирани изображения. Така че, след като сензорът започне да работи, изтеглете този, като го добавите към базата данни с пръстови отпечатъци на адрес 0. Отворете конзолата за управление на вашия компютър и следвайте подканите.

Кодове - Пример за мигане:

/* Пример за библиотека за управление на скенера за пръстови отпечатъци GT-511C3 (FPS) */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Настройка на хардуера - FPS свързан към: //цифров щифт 10(arduino rx, fps tx) //цифров щифт 11(arduino tx - 560ohm резистор fps tx - 1000ohm резистор - земя) //това намалява 5v tx линията до около 3.2v, така че да не изпържим fps FPS_GT511C3 fps(10, 11); void setup()( Serial.begin(9600); fps.UseSerialDebug = true; // така че можете да видите съобщенията в екрана за серийно отстраняване на грешки fps.Open(); ) void loop()( // FPS Blink LED Test fps .SetLED(true); // включване на светодиода вътре в fps закъснението (1000); fps.SetLED(false);// изключване на светодиода вътре в fps закъснението (1000); )

Кодове - Пример за записване:

/* FPS_Enroll.ino - Пример за библиотека за управление на скенера за пръстови отпечатъци GT-511C3 (FPS) */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Настройка на хардуера - FPS свързан към: //цифров пин 10 (arduino rx, fps tx) //цифров щифт 11(arduino tx - 560ohm резистор fps tx - 1000ohm резистор - маса) //това намалява 5v tx линията до около 3.2v, така че да не изпържим fps FPS_GT511C3 fps(10, единадесет); void setup()( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll()( // Тест за записване // намиране на идентификатор за отворено записване int enrollid = 0; fps.EnrollStart(enrollid); // записване Serial.print("Натиснете пръст за записване #"); Serial.println(enrollid); while(fps.IsPressFinger() == false) delay(100) ; bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Премахване на пръст"); fps.Enroll1(); while(fps.IsPressFinger() == true ) delay(100); Serial.println("Натиснете отново същия пръст"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Премахване на пръст"); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Натиснете отново същия пръст"); while(fps. IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Премахване на пръст"); iret = fps.Enroll3(); if (iret == 0) ( Serial.println("Регистрирането е успешно"); ) else ( Serial.print("Неуспешно записване с код на грешка:"); Serial.println(iret); ) ) else Serial.println("Неуспешно улавяне на трети пръст"); ) else Serial.println("Неуспешно заснемане на втори пръст"); ) else Serial.println("Неуспешно заснемане на първия пръст"); ) void loop()( delay(100000); )

Файл за синхронизация:

Регистрационен файл с миниатюри:

Стъпка 7: Програмиране на процесора ATtiny85

Микрочипът ATtiny85 е евтин и напълно съвместим с платката Arduino, вероятно най-добрата електрическа част, правена някога!

Програматорът Arduino също е необходим за флашване на чипа ATmega328, който контролира работата на LCD.

В сглобеното устройство процесорът ATtiny ще изпълнява много прости команди: проверете за сигнал от ATmega и отворете вратата на гаража, когато сигналът бъде потвърден.

За да програмирате работата на процесора, той трябва да бъде свързан с макетна платка към програматора, заедно с кондензатор 10 uF, както е показано на снимката по-долу.

И след това качете окончателен коди следвайте препоръките инструкции от High-Low Tech.

След това изходът 13 на платката Arduino, свързан към светодиода, трябва да бъде настроен на HIGH състояние, за да се проследи работата на светлинната индикация.

Краен код за ATtiny :

//fpsAttiny от Nodcah //Получава кратък сигнал от главния модул за затваряне на реле void setup()( pinMode(2,OUTPUT); //индикатор, воден през 10K резистор pinMode(4,OUTPUT); //тразисторен щифт, който отваря гаража pinMode(0,INPUT); //input delay(500); //дайте време на нещата да стартират digitalWrite(2, HIGH); //индикатор LED ) void loop()( if(digitalRead(0)) ( //прост модел за задействане на закъснението на транзистора(125); if(digitalRead(0)==false)( delay(55); //времената са изключени, защото таймерът на ATtiny не е перфектен if(digitalRead( 0))( закъснение(55); if(digitalRead(0)==false)( закъснение(55); if(digitalRead(0))( закъснение(55); if(digitalRead(0)==false)( digitalWrite (4, HIGH); //транзисторът "натиска" бутона delay(1000); digitalWrite(4,LOW); digitalWrite(2,LOW); delay(1000); digitalWrite(2, HIGH); ) ) ) ) ) ) )

Биометрична брава - краен код, изрязване на капак, подготовка за гараж GPS часовник на Arduino Биометрична брава - LCD оформление и монтаж