uy - Kompyuterlar
Biometrik blokirovka - skanerni sozlash va mikrokontrollerni dasturlash. Garaj eshigi uchun uy qurilishi biometrik barmoq izi qulfi Turli Arduino shablonlari uchun barmoq izi skaneri

Mening mashinam yo'qligi sababli, kalitlarimni hamma joyda o'zim bilan olib yurishim shart emas. Shu sababli, men bir necha bor uydan tashqarida kalitsiz qolganman va qarindoshlardan birining uyga kelishini kutishimga to'g'ri keldi va bir nuqtada men bu haqda biror narsa qilishim kerak deb qaror qildim. va uy qurilishi garaj qulfini ishlab chiqdi.

Ushbu loyihada men old eshik uchun barmoq izi qulfini qanday qilishni ko'rsataman.

1-qadam: Materiallar


Bu erda kerakli materiallar va asboblar ro'yxati.

Elektronika:

  • Barmoq izi skaneri (va JST ulagichi)
  • LCD to'plami (ATmega328 bilan)
  • ATtiny85
  • NPN tranzistor
  • Tvitter karnay
  • Dinamik sim
  • Koson (9-bosqichda 3D bosib chiqarish uchun fayllar bo'ladi)
  • Mis plyonka
  • Voltaj regulyatori 5V
  • 9V batareya
  • 9V batareya uchun ulagich
  • SPDT kaliti

Qulaylik uchun men Sparkfun veb-saytiga tayyor istaklar ro'yxatini biriktiraman.

Asbob:

  • Lehimlash temir va lehim
  • Izolyatsiya qiluvchi lenta
  • Simlar va o'tkazgichlar
  • Nippers/stripper
  • Prototiplash taxtasi
  • Har xil rezistorlar
  • Vintlar
  • Matkap
  • Sinov uchun bir nechta LEDlar
  • FTDI 5V platasi
  • Issiq yopishtiruvchi qurol
  • 3D printerga kirish
  • Majburiy emas: IC rozetkasi (ATtiny uchun 8 pinli va ATmega uchun 28 pinli)
  • Majburiy emas: boshqa Arduino platasi / 10 uF kondansatör (tafsilotlar 5-bosqichda)

2-qadam: Qurilma diagrammasi






Sparkfun-dan sotib olingan LCD to'plami displeyni boshqaradigan ATmega328 bilan birga keldi. ATmega328 juda kuchli va nafaqat displeyni boshqarish uchun, balki boshqa vazifalar uchun ham ishlatilishi mumkin. Buni hisobga olgan holda, biz Arduino o'rniga barmoq izi skaneri bilan bog'lanish va ATtiny85 ga buyruqlar yuborish, displey va signalni boshqarish uchun foydalanishimiz mumkin.

Biometrik eshik qulfining har doim ishlashiga yo'l qo'ymaslik uchun men unga korpus yopilgan paytda ishlaydigan kalitni o'rnatdim. Agar korpus yopiq bo'lsa, qurilmaga quvvat berilmaydi va biz batareya resurslarini tejaymiz.

Muhim eslatma: Barmoq izi skaneri 3,3V da ishlaydi, shuning uchun ATmega dan signallarni 3,2V ga aylantiradigan kuchlanish bo'luvchidan foydalanishni tavsiya etaman. Kuchlanishni ajratuvchi D10/soniya skaner pinlari orasidagi 560 ohm rezistor va GND/ikkinchi skaner pimi orasidagi 1K rezistordan iborat.

LCD pinout:

  • D10 - skaner pin 1 (qora sim)
  • D11 - 2-pinli skaner (kuchlanishni ajratuvchi orqali)
  • D12 - ATtiny85
  • D13 - chiyillash

ATtiny85 pinout:

  • Pin 5 (dastur kodida 0) - ATmega-dan kirish
  • Pin 3 (dastur kodida 4) - tranzistor / sariq LED
  • Pin 7 (dastur kodida 2) - LED ko'rsatkichi

3-qadam: LCD to'plamidan komponentlarni yig'ish

Bosqichning nomi o'z-o'zidan gapiradi: qulay va qulay tezkor ishga tushirish/yig'ish bo'yicha qo'llanma

4-qadam: Sxemani prototiplash taxtasida yig'ish




Komponentlarni taxtaga joylashtirish sizga bog'liq, faqat simlarni bir xil yo'nalishga qaratib, buzilmasligi uchun lehimlashga harakat qiling.

Yig'ilgandan so'ng, men taxtaning yuqori va pastki qismini issiq elim bilan qopladim - bu sxema elementlarini mustahkamladi va izolyatsiya qildi. Issiq elim chipga zarar etkazmaydi.

Asosiy taxtada bo'lgani kabi, hamma narsani ATtiny taxtasiga lehimlang va komponentlarni mahkamlash va izolyatsiya qilish uchun issiq elim qo'llang. Voltaj regulyatori juda qizib ketishi mumkin, shuning uchun unga yoki uning yaqinidagi har qanday sirtga issiq elim surmaslik yaxshiroqdir. Bundan tashqari, ATtiny taxtasini issiq elim bilan qoplamaslik yaxshiroqdir, chunki uni olib tashlash va qayta dasturlashni xohlashingiz mumkin.

5-qadam: ATmega328-ni dasturlash

2-bosqichda aytib o'tilganidek, ATmega328 etarlicha kuchli protsessorga va etarli pinlarga ega LCD boshqaruv, shu bilan birga u boshqa qo'shimcha komponentlarni boshqaradi. Bunga erishish uchun siz chipni dasturlashingiz kerak.

agar sizda bo'lsa Arduino Uno yoki Duemilanove, siz shunchaki ulardan chipni olib tashlashingiz va uni to'plamda kelganiga almashtirishingiz mumkin. Yoki uning yon tomonida FTDI Basic Breakout board (5V) va lehim qo'shimchalarini topishingiz mumkin (3-bosqichdagi rasmlarga qarang).

Shuningdek, kodni "Duemilanve w/ ATmega328" rejimida yuklashingiz kerak bo'ladi.

Quyidagi kod - ish dasturi qurilmaning ishlashini tekshirish uchun.

#include "LiquidCrystal.h" LiquidCrystal lcd(2,3,4,5,6,7,8); void setup() ( pinMode(9, OUTPUT); // orqa yorug'lik pinMode(13, OUTPUT); // beeper lcd.begin(16, 2); // 16 belgi kengligi, 2 yuqori raqamli yozish(9, HIGH) ; / /orqa yorug'likni yoqing lcd.print("Salom dunyo!"); //bo'sh joydan foydalanib matnni markazga qo'ying delay(2000); ) void loop() ( //o'q signali yoqiladi va o'chadi, uning holati displeyda ko'rsatiladi. lcd.clear( ); lcd.print(" Buzzer yoqilgan "); ton(13, 262, 1000); kechikish(1000); lcd.clear(); lcd.print(" Buzzer o‘chirilgan "); kechikish( 1000); ) Fayllar

6-qadam: Barmoq izi skanerini sozlash

Men ushbu kutubxonadan skaner bilan muloqot qilish uchun foydalanganman. To'g'ridan-to'g'ri yuklab olish uchun havola.

Kodingiz ishlayotganligini tekshirish uchun ushbu miltillovchi testerni yuklab oling.

Barmoq izi skaneri ma'lumotlarni saqlash uchun o'zining o'rnatilgan xotirasiga ega. Shunday qilib, skaner ishlayotganiga ishonchingiz komil bo'lgandan so'ng, 0 id ostidagi ma'lumotlar bazasiga barmoq izini qo'shish uchun ushbu dasturni yuklab oling. Seriya konsolingizni oching va shunchaki ko'rsatmalarga amal qiling.

Skanerni sinab ko'rish uchun LED miltillovchi dastur

/* Ushbu oddiy kod LEDni yoqadi va o'chiradi. U aloqa ishlayotganligini tushunish uchun ishlatiladi. */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Uskunani sozlash - barmoq skaneri ulangan: //raqamli pin 10(arduino rx, fps tx) //raqamli pin 11(arduino tx - 560ohm fps rezistori) tx - 1000ohm rezistor - GND) //bu 5v tx ni taxminan 3,2v ga tushiradi va biz FPS_GT511C3 fps (10, 11) skanerimizni yoqib yubormaymiz; void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // siz ketma-ket disk raskadrovka ekranida xabarlarni ko'rishingiz mumkin fps.Open(); ) void loop())( // LEDning miltillashi testi fps skaneri.SetLED(true); // skanerning kechikishi (1000) ichidagi LEDni yoqadi; fps.SetLED(false); // skaner kechikishidagi LEDni o'chiradi(1000); )

Skanerga ma'lumotlarni yozib olish uchun dastur

#include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Uskunani sozlash - barmoq skaneri ulangan: //raqamli pin 10(arduino rx, fps tx) //raqamli pin 11(arduino tx - 560ohm qarshilik fps tx - 1000ohm rezistor - GND) //bu 5v tx ni taxminan 3,2v ga tushiradi va biz FPS_GT511C3 fps (10, 11) skanerimizni yoqib yubormaymiz; void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Ro‘yxatdan o‘tish testi // qidiruv open id int enrollid = 0; fps.EnrollStart(enrollid); // ro'yxatdan o'tish Serial.print("Ro'yxatdan o'tish uchun # barmoqni bosing"); Serial.println(ro'yxatdan o'tish); while(fps.IsPressFinger() == false) kechikish( 100); bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Barmoqni olib tashlash"); fps.Enroll1(); while(fps.IsPressFinger() = = rost) kechikish(100); Serial.println("Oʻsha barmoqni yana bosing"); while(fps.IsPressFinger() == false) kechikish(100); bret = fps.CaptureFinger(true); if (bret != noto'g'ri) ( Serial.println("Barmoqni olib tashlash"); fps.Enroll2(); while(fps.IsPressFinger() == true) kechikish(100); Serial.println("O'sha barmoqni yana bosing"); while( fps.IsPressFinger () == false) kechikish (100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Barmoqni olib tashlash"); iret = fps.Enroll3(); agar (iret = = 0) ( Serial.println("Ro'yxatdan o'tish muvaffaqiyatli"); ) else ( Serial.print("Ro'yxatdan o'tish xato kodi bilan amalga oshmadi:"); Serial.println(iret); ) ) else Serial.println("Uchinchi barmoqni ushlab bo'lmadi"); ) else Serial.println("Ikkinchi barmoqni ushlab bo'lmadi"); ) else Serial.println("Birinchi barmoqni yozib bo'lmadi"); ) void loop())( delay(100000); ) Fayllar

7-qadam: ATtiny85 ni dasturlash


ATtiny85 - bu bitta chipga yig'ilgan arzon Arduinoga o'xshash narsa. ATtiny85 boshqa Arduinolar tomonidan dasturlashtirilishi mumkin, shu jumladan LCD to'plamimizda joylashgan ATmega328. Loyihada u juda oddiy buyruqlarni bajarish uchun ishlatiladi: ATmega signalini tekshiring va agar signal to'g'ri bo'lsa, eshikni oching.

Uni dasturlash uchun hamma narsani biriktirilgan fotosuratlarga ko'ra ulang. Keyin kerakli fayllarni yuklab oling va ushbu ko'rsatmalarga amal qiling.

Kodni yuklab olgandan so'ng, Arduino-da (o'rnatilgan LED) 13-pin yonishi kerak, bu kod yuklab olinganligini ko'rsatadi.

Yakuniy kod:

//O‘rni bekor o‘rnatishni yopish uchun asosiy moduldan qisqa signal oladi())( pinMode(2,OUTPUT); //10K rezistor pinMode(4,OUTPUT) orqali LED ko‘rsatkichi; //Garajni ochuvchi tranzistor pin. pinMode(0,INPUT ); //kiritish kechikishi(500); //qurilmaga digitalWrite(2, HIGH) ni ishga tushirish uchun vaqt bering; //LED belgisi ) void loop())( if(digitalRead(0))( / /tranzistor kechikishini almashtirish uchun oddiy naqsh (125); if(digitalRead(0)==false)( kechikish(55); //kuting, chunki ATtiny taymer ideal emas if(digitalRead(0))( kechikish(55) ); if(digitalRead(0)= =notoʻgʻri)( kechikish(55); if(digitalRead(0))( kechikish(55); if(digitalRead(0)==false)( digitalWrite(4, HIGH); / / tranzistor tugmani “bosadi” kechikish(1000); digitalWrite(4,LOW); digitalWrite(2,LOW); kechikish(1000); digitalWrite(2, HIGH); ) ) ) ) ) ) ) Fayllar

8-qadam: Yakuniy kod

Quyida men skaner va displey kutubxonalari yordamida yozgan Arduino dasturi. Dasturning har bir qismida nima sodir bo'lishini tushunish uchun men hamma narsani eng yaxshi tarzda sharhlashga harakat qildim. Ushbu kodni yuklab olgandan so'ng, hamma narsa ishlashi kerak va bajarilishi kerak bo'lgan narsa tizimni eshikka integratsiya qilishdir.

Ogohlantirish: agar skaner kutubxonasi ishlamasa, undan foydalanib koʻring eski versiya Arduino IDE.

ATmega238 uchun kod:

#include "LiquidCrystal.h" //displey kutubxonasi #include "FPS_GT511C3.h" //fps (barmoq izi skaneri) kutubxonasi #include "SoftwareSerial.h" //skaner kutubxonasi tomonidan ishlatiladi //Displey va skaner pinlarini sozlang LiquidCrystal lcd( 2, 3, 4, 5, 6, 7, 8); // pinout FPS_GT511C3 fps (10, 11); //RX, TX boolean isFinger = noto'g'ri; //agar fps kutubxonasi skanerda barmoqni aniqlasa, rost //chiqish pinlari const int buzzerPin = 13; const int backlightPin = 9; const int attinyPin = 12; const String idNames = ("o'zini","Aka", "Rayan", "Onam", "Dada", "Xola", "Buvim", "Zeyda", "Shaxs", "odam", "Bosh barmoq"); void setup())( //chiqishlarni sozlash pinMode(buzzerPin, OUTPUT); pinMode(backlightPin, OUTPUT); pinMode(attinyPin, OUTPUT); //disklarni tuzatish uchun //Serial.begin(9600); fps.UseSerialDebug = noto'g'ri; // fps orqali nosozliklarni tuzatish uchun haqiqiy bo'ladi ketma-ket port//kutubxonalarni ishga tushirish lcd.begin(16,2); digitalWrite (backlightPin, HIGH); //LCD orqa nuri fps.Open(); fps.SetLED(to'g'ri); //fps uchun LED // ovoz yuklanmoqda (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)( //agar matnni markazlashtirish kerak bo'lsa s = " " + s + " "; // har ikki tomonga teng bo'shliqlar qo'shadi ) return s; ) Fayllar

Avtomobilingizni ruxsatsiz kirishdan himoya qilish uchun oddiy biometrik xavfsizlik tizimini yaratish uchun bizga barmoq izi sensori va Arduino mikrokontrolleri kerak bo'ladi. Ushbu loyihada Adafruit o'quv materialidan foydalaniladi. Takrorlashni osonlashtirish uchun ushbu materialdan kichik o'zgarishlar bilan to'liq dastur kodi ishlatiladi.

Birinchidan, biz avtomobilning ishga tushirish tizimini o'zgartiramiz. Asosiy ulanish kontaktni o'zgartirish tugmasidan IG o'tkazgichidir, u kuchlanish regulyatoriga, so'ngra uni yoqish va o'chirish uchun Arduino mikrokontrolleriga quvvat beradi va 10 soniya davomida sensorda barmoqni skanerlaydi. Agar barmoq izi mos keladigan bo'lsa, tizim starter o'rni boshqaruvchi o'rni qutisini faollashtiradi. Endi siz dvigatelni ishga tushirishingiz mumkin. 10 soniyadan so'ng barmoq izi sensori o'chadi. Ateşleme aylanishini takrorlash orqali uni qayta yoqishingiz mumkin. Agar 10 soniya ichida sensor barmoq izini aniqlamasa yoki barmoq izi mos yozuvlarga mos kelmasa, ishga tushirish tizimi o'chiriladi va dvigatel ishga tushmaydi.

Har bir avtomobilda turli ishga tushirish konfiguratsiya tizimi mavjud bo'lganligi sababli, ishga tushirish tizimini o'zgartirishdan oldin avtomobilning elektr tizimi haqida elektrchiga murojaat qilishingiz yoki ulanish sxemasini ko'rib chiqishingiz kerak bo'ladi.

Barmoq izi sensori dvigatelni ishga tushirmasligini unutmang. Dvigatelni ishga tushirishni taqiqlovchi yoki ruxsat beruvchi starter rölesini oddiygina faollashtiradi va o'chiradi.

Ushbu loyihada 2 eshikli Mitsubishi Lancer 2000 kupesiga o'g'irlikka qarshi qurilma o'rnatilgan.

1-qadam: Ishlatilgan komponentlar

4-qadam: Asosiy dasturni yuklash

Barmoq izi sensorini diagrammada ko'rsatilganidek ulang va asosiy dasturni yuklang. To'g'ri ishlashni kuzatish uchun LED va rezistorni 12-pinga ulang.

Dastur Adafruit Fingerprint o'quv materiali printsipi asosida ishlaydi. Biroq, men kodni biroz o'zgartirdim va sensorning miltillovchi LEDidan chalg'itmaslik uchun sensorni 10 soniyadan keyin o'chirish uchun taymer qo'shdim.

5-qadam: 1-qismni yig'ish

Boshqaruv paneli ostidagi vintlarni echib oling. Kaputni bo'shatish dastagini bo'shating. Boshqaruv panelining pastki qismini olib tashlang. Sensorni bo'sh joyga qo'ying.

6-qadam: Yig'ish, 2-qism

Sensorni ishonchli o'rnatish uchun kerakli masofani o'lchab, kichik maydonni kesib oling.

7-qadam: Yig'ish, 3-qism

Barmoq izi sensori orqasida Arduino Uno platasini o'rnatish yaxshidir. Arduino Uno taxtasi to'g'ri holatda bo'lishi uchun men o'rindiqni biroz keskinlashtirdim.

Nima kerak

  1. FPM10A barmoq izi moduli
  2. RFID moduli RC522
  3. Arduino mega (nazariy jihatdan, boshqa platalardan foydalanish mumkin, ammo pinlar soni tufayli men bunga qaror qildim)
  4. 1C 8.2 uchun 1 ta litsenziya (mening holimda qalin mijoz, uni o'zingiz kesib oling)
  5. MsCommLib.MsComm yordamida Com port orqali aloqa (sizga litsenziya kerak, hatto uni shu yerda google orqali ham topishingiz mumkin)
  6. Arduino uchun ishlab chiqish muhiti (1.8.5 ishlatilgan)
  7. USB interfeysli planshet.
  8. Jabduqlar: 1 Kilo Om rezistor, qisqa tutashuv tugmasi, simlar, "ko'k" elektr lenta, agar xohlasangiz, termorektal o'tish analizatori (agar sizda ushbu qurilma bilan bog'liq bo'lsa, simlarni burishingiz mumkin), Arduino uchun USB kabeli, tekis qo'llar va o'rtacha 1s taxallusning egri konvolyutsiyalari, shu jumladan. butun bu mo''jiza uchun tanani yaratish.

Eslatmalar: fotosuratda simlarning ranglari har xil - o'rnatish jarayonida bir nechta simlar uzilgan, chunki... Ular butunlay Huawei edi va men boshqa mavjud ranglarni olishim kerak edi.

Xabar tizimi muhim daqiqalarda ataylab takrorlanadi.
Men sizni darhol ogohlantirmoqchimanki, oddiy muhandisning ko'zlaridan kanifoldan ko'z yoshlari oqishi mumkin, ammo bu mening Arduino-dagi birinchi loyiham va shunday murakkabliklardan biri bo'lib, u barqaror ishlaydi va ishlaydi. Avvaliga hamma narsani tarmoq (Wi-Fi + simli) orqali qilish g'oyasi bor edi, lekin disk raskadrovka va o'z http xizmatini yaratish va 1C-da hamma narsani amalga oshirish xarajatlarini hisoblab chiqqandan so'ng, men com-dan foydalanishga qaror qildim; har holda, barcha mantiq konf.ni o'zgartirmasdan tashqi ishlovga o'tkazilishi mumkin.

Shuningdek, siz planshetning veb-kamerasi orqali kiruvchi xodimni suratga olish tizimini kiritishingiz, elektron eshiklarni o'rni qo'shishingiz va boshqarishingiz mumkin, ishga tushirish parametrlari orqali uzatiladigan tashqi ishlov berish orqali ZUP bilan to'liq integratsiya va maxfiy ahamiyatga ega bo'lgan o'ta xavfli shlyuzlar uchun karnavalni yo'q qilish) .

Foydali tanqid qabul qilinadi.

Prolog

Mavjud kirish tizimlari va vaqtni kuzatish tizimlari narxlarini ko'rib, yashil mohiyat meni asta-sekin bo'g'a boshladi. Arduino va uning modullari atrofida uzoq vaqt yurganimdan so'ng, men FPM10A barmoq izi moduliga duch keldim. Ushbu modul, versiyaga qarab, ko'p sonli barmoq izlarini saqlashi mumkin - flesh-xotirada 50 dan cheksizgacha va biometrik boshqaruv ishlab chiqaruvchilarining aksariyat modullarida qo'llaniladi. Biroq, mening loyihamda, kutubxona tufayli, u 254 bilan cheklangan. Men sizni darhol ogohlantiramanki, men Arduino uchun to'liq topilgan kutubxonamni joylashtiraman, chunki ... Men uzoq vaqt davomida qidirish bilan kurashdim va ushbu modul uchun kutubxonani qidirish va tuzatish uchun 3 kunni behuda sarfladim.

Modullarning tavsifi

Loyihada foydalanilgan kutubxona 256 (bayt)gacha barmoq izlaridan foydalanish imkonini beradi. Bu miqdor men uchun haddan tashqari ko'p edi, ekstremal holatlarda siz har 256 xodim uchun 1 moduldan foydalanishingiz mumkin.
RFID teglari soni faqat UID ning o'ziga xosligi bilan cheklangan. ma'lumotlar bazasi 1C da saqlanishi va xodimlar bilan bog'lanishi mumkin. Barcha mos teglardan foydalanish mumkin. Nazariy jihatdan, interkomlar, metro kartalari va troyka kartalari uchun har qanday kalitlar mos bo'lishi mumkin.
1c ga ulanish MsCommLib.MsComm kutubxonasi orqali com porti orqali o'tadi, lekin uni istalgan boshqasiga qayta yozish mumkin. Arduino uchun com-port uchun drayverlar Arduino ishlab chiqish muhiti bilan birga o'rnatilishi kerak, ammo ular ham Google-da bo'lishi mumkin.
Lehimlangan hamma narsa tarmoq orqali ulangan qutiga yashiringan (men WiFi-dan foydalanganman, lekin siz tashqi USB tarmoq kartasidan ham foydalanishingiz mumkin).

Ish algoritmi

Uskuna:

  1. Biz Arduino modullarini lehimlaymiz/buramiz
  2. Biz kompyuter dasturchisiga ulanamiz va proshivkani Arda-ga yuklaymiz, testni o'tkazamiz, buyruqlar ishlayotganiga ishonch hosil qilamiz.
  3. Ular USB orqali Windows 10 planshetiga ulanadi. Planshetda biz uni avtomatik yuklash orqali almashtiramiz:

A) asosiy fayl orqali:

    boshlash - ishga tushirish: qobiq: ishga tushirish

    u yerda hz.bat nomi va mazmuni bilan Notepad yordamida fayl yarating (ishonchim komilki, siz fayl bazasi parametrlarini o'zingiz boshqarishingiz mumkin - menda sql bor): “C:\Program Files\1cv8\ ... \bin\1cv8 .exe” ENTERPRISE / SServerName:Port\DBName” /NUser /PPassword

B) biz VB skripti yordamida qobiqni almashtirish orqali yanada rivojlanganini qilamiz (qobiqni ishga tushirmasdan standart foydalanuvchiga qo'shimcha ravishda boshqa foydalanuvchini yaratganingizga ishonch hosil qiling):

    C:\hz\hz.vbs nomi va mazmuni bilan Notepad yordamida fayl yarating

set oShell=createobject("wscript.shell")
sCmd="""C:\Program Files\1cv8\ ... \bin\1cv8.exe"" ENTERPRISE /SServerName:Port\DBName" /NUser /PPassword"
oShell.run sCmd, rost
sCmd = "o'chirish / r / t 0"
oShell.run sCmd

    ishga tushirish - bajarish: regedit, filialga amal qiling: Joriy foydalanuvchi\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

    "Shell" (REG_SZ) qator parametrini qo'shing

    uni tahrirlang: "wscript C:\hz\hz.vbs" (parametrda tirnoqsiz)

    qayta ishga tushiring va sinab ko'ring. 1c Explorersiz boshlanishi kerak

  1. Keyinchalik, biz uning ishlashiga ishonch hosil qilamiz va uni qutiga joylashtiramiz.

Dasturiy jihatdan:

  1. Oddiy holatda Arduino barmoq izlari skaneri, RFID skaneri, boshqaruv tugmasi bilan so'rov o'tkazadi va com port orqali kutish buyruqlarini yuboradi.
  2. O'quvchining ko'rish maydonida barmoq paydo bo'lishi bilan biz com portiga buyruq yuboramiz va 1c o'zgaruvchilarni o'qish orqali barmoq identifikatorini yoki tegning UID ni ko'radi.
  3. Tugma barmoq izlarini boshqarish uchun kerak. Uni bosganingizda, 1c login parolini so'raydi va keyin xabar almashish tizimi orqali xodimga skaner identifikatorini yoki karta UIDni belgilashi mumkin.

1c bilan bog'lanish uchun quyidagi qatorlardan foydalaniladi (men o'zimning konfyum va vaqt jadvalim uchun ishlov berdim, u misol uchun loyihada, lekin manba kodiga kiritilgan):

com portiga ulanish

Protsedura StartSystem() ComPort = Yangi COMObject("MsCommLib.MsComm"); ComPort.CommPort = 3 ni sinab ko'ring; ComPort.Settings = "9600,N,8,1"; ComPort.Handshaking = 0; ComPort.InBufferCount = 0; ComPort.InBufferSize = 70; ComPort.InputLen = 0; ComPort.InputMode = 1; ComPort.NullDiscard = 0; ComPort.PortOpen = rost; Istisno Ogohlantirish("Portni ochish mumkin emas!"); ThisForm.Close(); EndAttempt; hSeconds = 0; ConnectWaitHandler("OutputSportData", 1, False); // Portni kuzatish uchun ishlov beruvchini ulang

com portidan uzilish

Protsedura EndSystem() DisableWaitHandler("OutputSportData"); ComPort.PortOpen = False; ComPort = ""; Jarayonning oxiri

com portidan ma'lumotlarni o'qish

Protsedura OutputSportData() ExportSportData = ""; Agar ComPort.PortOpen keyin //ComPort.Output = "1"; SportsData = ComPort.Input; ProcessEncryptedString(SportData); Agar qisqartirilgan bo'lsa (oldingi xodim)<>"" Keyin hSeconds = hSeconds + 1; endIf; Agar hSeconds > 60 bo'lsa, PreEmployee = 0; hSeconds = 0; endIf; Aks holda Ogohlantirish("Port ochilmaydi"); ThisForm.Close(); endIf; Jarayonning oxiri Protsedura jarayoni shifrlangan satr (Sport ma'lumotlari) massiv = Sport ma'lumotlari. Unload(); IndexMin = SportsData.GetLowerBound(0); IndexMax = SportsData.GetUpperBound(0); StringInfo = ""; Index uchun = IndexMin By IndexMax - 1 Cycle SymbolReceived = AbbrLP(Array.Get(Index)); Agar CharacterReceived = "13" Agar to'xtatib qo'yilmasa, RowInfo = RowInfo (RowInfo); //Bu yerda xabarni qayta ishlash EndIf; Else LineInfo = LineInfo + Symbol(Raqam(Qabul qilingan belgi)); endIf; EndCycle; Jarayonning oxiri

com portiga ma'lumot yuborish

Protsedura SendToPort(Send) Agar ComPort.PortOpen Keyin ComPort.Output = AbbrLP(Yuborish); Else Notify("Port ochilmaydi", MessageStatus.VeryImportant); endIf; Jarayonning oxiri

Arduino Mega uchun loyiha kodi

#o'z ichiga oladi // #include barmoq izi moduli bilan ishlash uchun kutubxonani ulang // UART #include dasturi bilan ishlash uchun kutubxonani ulang #o'z ichiga oladi const int tugmasiPin = 2; // dasturlash rejimiga kirish uchun tugmaga ulangan kiritish raqami int buttonState = 0; // tugma holatini saqlash uchun o'zgaruvchi int modeState = 0; // qurilma holatini saqlash uchun o'zgaruvchi. 0 - barmoq izi skanerini kutish. 1 - uint8_t identifikatorini dasturlash; // barmoq izi shabloni saqlanadigan identifikatsiya raqami String frcUID = ""; // rfid o'quvchi identifikatsiya raqami int rfidYes = 0; // muvaffaqiyatli kirish RFID SoftwareSerial mySerial(10, 11); // mySerial ob'ektini SoftwareSerial kutubxonasi bilan ishlash uchun e'lon qilish OBJECT_NAME(RX, TX); // Siz PCINTx uzilishini qo'llab-quvvatlaydigan har qanday pinni belgilashingiz mumkin Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); // Adafruit_Fingerprint kutubxonasi bilan ishlash uchun barmoq ob'ektini e'lon qilish OBJECT_NAME = Adafruit_Fingerprint(PARAMETER); // PARAMETER - modul ulangan UART bilan ishlash uchun ob'ektga havola, masalan: &Serial1 MFRC522 mfrc522(53, 5); // MFRC522 instance void setup() yaratish ( pinMode(buttonPin, INPUT); // tugmaga ulangan pinni Serial.begin(9600) kiritish sifatida ishga tushiring; // UART apparatini 9600 tezlikda ishga tushiring (!Serial); // UART uskunasini ishga tushirish kechikishi kutilmoqda(500); SPI.begin(); // SPI avtobusini ishga tushirish mfrc522.PCD_Init(); // MFRC522 mfrc522.PCD_DumpVersionToSerial(); // PCD tafsilotlarini ko'rsatish - MFRC522 Card Reader detallari delay( 500); // Barmoq izi moduli ishga tushirilishi kutilmoqda Serial.println(". . Sensorni skanerlash . . ."); // "Sensor qidirilmoqda" finger.begin(57600); // Boshlanmoqda UART dasturiy ta'minoti 57600 tezlikda (standart modul tezligi) Serial.println(finger.verifyPassword()); if (finger.verifyPassword()) ( Serial.println("... Sensor topildi! . ."); // Agar barmoq izi moduli aniqlandi, "sensor topildi" xabarini chop eting ) boshqacha ( Serial.println(". . Sensor topilmadi ..."); // Agar barmoq izi moduli topilmasa, "sensor topilmadi" xabarini ko'rsating " va cheksiz tsiklni kiriting: while(1 ); while(1); ) Serial.println("... Iltimos, barmog'ingizni skaner yoki rfidga qo'ying..."); ) void loop() ( //tugma bilan ishlang! buttonState = digitalRead(buttonPin); // tugmachadan qiymatlarni oʻqish, agar (buttonState == HIGH) ( modeState = 1; // dasturlash rejimiga KEYINGI ) oʻtish (modeState) (holat 0: frcUID = ""; //barmoq izi va rfid so'rov rejimida ishlash if (finger.getImage() == FINGERPRINT_OK) ( // Agar bajarilish natijasi FINGERPRINT_OK doimiysiga teng bo'lsa, tasvirni oling ( tasvirni to'g'ri yuklash), keyin biz yana o'tamiz, agar (finger.image2Tz() == FINGERPRINT_OK) ( // Olingan rasmni o'zgartiring, agar bajarilish natijasi doimiy FINGERPRINT_OK ga teng bo'lsa (tasvir aylantiriladi), keyin davom eting. agar (finger.fingerFastSearch() == FINGERPRINT_OK) ( // Barmoq izlari bazasida moslikni toping, agar bajarilish natijasi doimiy FINGERPRINT_OK ga teng bo'lsa (moslik topildi), keyin biz frcUID = ". . . Topildi ID=" + String(finger.fingerID) + ", confidence=" + String(finger.confidence) + "! . . ."; Serial.println(frcUID); ) ) ) agar (mfrc522.PICC_IsNewCardPresent()) ( kechikish (100); agar (mfrc522.PICC_ReadCardSerial()) ( //mfrc522.PICC_DumpToSerial(&2)); frcUID = ""; uchun (bayt i = 0; i< mfrc522.uid.size; i++) { frcUID = frcUID + (mfrc522.uid.uidByte[i]); } frcUID = ". . . Found RFID UID=" + frcUID + "@ . . ."; Serial.println(frcUID); } } delay(100); // Задержка перед следующим сканированием 0,5 сек (нет смысла запускать на полной скорости) Serial.println(". . . Please put your finger on the scanner or rfid . . ."); break; case 1: Serial.println(". . . Programming mode . . ."); // Входим в режим программирования delay(400); Serial.println(". . . Programming mode . . ."); // Входим в режим программирования delay(400); Serial.println(". . . Programming mode . . ."); // Входим в режим программирования delay(400); Serial.println(". . . Programming mode . . ."); // Входим в режим программирования id = readnumber(); // Ожидание получения цифры, введённой с COM-порта if (id >= 255) ( // Agar 255 (maksimal id) bo'lsa, yana kutish rejimiga kiring modeState = 0; ) else ( if (id)< 254) { // Если 254 то rfid иначе палец 0-253 modeState = 2; // Пытаемся отсканировать палец } else { modeState = 3; // Пытаемся отсканировать rfid uid } } break; case 2: while (!getFingerprintEnroll()); // Пытаемся получить ответ об присваивании ID modeState = 1; break; case 3: rfidYes = 0; Serial.println(". . . Put RFID in Scanner! . . ."); delay(400); Serial.println(". . . Put RFID in Scanner! . . ."); delay(400); Serial.println(". . . Put RFID in Scanner! . . ."); delay(5000); if (mfrc522.PICC_IsNewCardPresent()) { // Пытаемся отсканировать rfid uid delay(100); if (mfrc522.PICC_ReadCardSerial()) { //mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); frcUID = ""; for (byte i = 0; i < mfrc522.uid.size; i++) { frcUID = frcUID + (mfrc522.uid.uidByte[i]); } frcUID = ". . . New RFID UID=" + frcUID + "@ . . ."; rfidYes = 1; Serial.println(frcUID); delay(400); Serial.println(frcUID); delay(400); Serial.println(frcUID); delay(400); Serial.println(frcUID); } } if (rfidYes == 0) { Serial.println(". . . RFID error! . . ."); delay(400); } modeState = 1; break; } } // функция возвращает номер, введённый с COM-порта uint8_t readnumber(void) { int num = -1; // Переменная с номером, который требуется вернуть while (num < 0) { // Вход в цикл, пока переменная num не станет >= 0 esa (!Serial.available()); // MAQOMOTI port buferida ma'lumotlar paydo bo'lguncha kuting (Serial.available()) ( // MAQOMOTI port buferida ma'lumotlar tugaguncha aylanish c = Serial.read(); // COM portidan keyingi belgini tayinlash c o'zgaruvchisiga if (isdigit(c)) ( // Agar c o'zgaruvchining qiymati raqam bo'lsa, u holda... if (num)< 0) { num = 0; // Увеличиваем значение num на один порядок } else { num *= 10; } num += c - "0"; // Прибавляем к значению num цифру из переменной c } delay(5); // Задержка на 5мс, чтоб в буфер COM-порта успели догрузиться следующие символы (если таковые имеются) } } return num; // Возвращение введённого числа } uint8_t getFingerprintEnroll() { int p; // Переменная для получения результатов выполнения функций //Загрузка первого изображения отпечатка пальца p = -1; Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" delay(400); Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" delay(400); Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" delay(400); Serial.println(". . . Please put your new finger on the scanner . . ."); // Вывод сообщения "Пожалуйста положите Ваш палец на сканер" while (p != FINGERPRINT_OK) { // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_OK (корректная загрузка изображения) p = finger.getImage(); // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println(" Ok!"); break; // Изображение отпечатка пальца корректно загрузилось case FINGERPRINT_NOFINGER: Serial.println(". . . Please put your new finger on the scanner . . ."); break;// Сканер не обнаружил отпечаток пальца case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); break; // Ошибка соединения case FINGERPRINT_IMAGEFAIL: Serial.println(". . . Imaging error Please try again . . ."); break; // Ошибка изображения default: Serial.println(". . . Unknown error Please try again . . ."); break; // Неизвестная ошибка } } //Конвертирование изображения первого отпечатка пальца p = finger.image2Tz(1); Serial.print (". . . Image converting . . ."); // Конвертируем первое изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println("Ok!"); break; // Изображение сконвертировано case FINGERPRINT_IMAGEMESS: Serial.println(". . . Image too messy . . ."); return p; // Изображение слишком нечеткое case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); return p; // Ошибка соединения case FINGERPRINT_FEATUREFAIL: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка конвертирования case FINGERPRINT_INVALIDIMAGE: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка изображения default: Serial.println(". . . Unknown error . . ."); return p; // Неизвестная ошибка } //Просим убрать палец от сканера p = 0; while (p != FINGERPRINT_NOFINGER) { // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_NOFINGER (сканер не обнаружил отпечаток пальца) Serial.println(". . . Please remove your finger from the scanner . . ."); // Вывод сообщения "Пожалуйста уберите Ваш палец со сканера" delay(400); p = finger.getImage(); // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p } Serial.println(" Ok!"); //Загрузка второго изображения отпечатка пальца p = -1; Serial.println(". . . Place same finger again . . ."); // Вывод сообщения "Пожалуйста положите тот же палец еще раз" delay(400); while (p != FINGERPRINT_OK) { // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_OK (корректная загрузка изображения) p = finger.getImage(); // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println(" Ok!"); break; // Изображение отпечатка пальца корректно загрузилось case FINGERPRINT_NOFINGER: Serial.println(". . . Place same finger again . . ."); break; // Сканер не обнаружил отпечаток пальца case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); break; // Ошибка соединения case FINGERPRINT_IMAGEFAIL: Serial.println(". . . Imaging error . . ."); break; // Ошибка изображения default: Serial.println(". . . Unknown error . . ."); break; // Неизвестная ошибка } } //Конвертирование изображения второго отпечатка пальца p = finger.image2Tz(2); Serial.print (". . . Image 2 converting . . ."); // Конвертируем второе изображение и возвращаем результат выполнения данной операции в переменную p switch (p) { // Проверка ответа... case FINGERPRINT_OK: Serial.println("Ok!"); break; // Изображение сконвертировано case FINGERPRINT_IMAGEMESS: Serial.println(". . . Image too messy . . ."); return p; // Изображение слишком нечеткое case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . ."); return p; // Ошибка соединения case FINGERPRINT_FEATUREFAIL: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка конвертирования case FINGERPRINT_INVALIDIMAGE: Serial.println(". . . No fingerprint on image . . ."); return p; // Ошибка изображения default: Serial.println(". . . Unknown error . . ."); return p; // Неизвестная ошибка } //Создание модели (шаблона) отпечатка пальца, по двум изображениям p = finger.createModel(); Serial.print (". . . Creating model . . ."); // Создание модели (шаблона) отпечатка пальца, по двум изображениям if (p == FINGERPRINT_OK) { Serial.println(". . . Model create! Ok! . . ."); } else // Модель (шаблон) отпечатка пальца создана if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println(". . . Communication error . . ."); return p; } else // Ошибка соединения if (p == FINGERPRINT_ENROLLMISMATCH) { Serial.println(". . . Fingerprints did not match . . ."); return p; } else // Отпечатки пальцев не совпадают { Serial.println(". . . Unknown error . . ."); // Неизвестная ошибка return p; } //Сохранение, ранее созданной, модели (шаблона) отпечатка пальца, под определённым ранее, идентификационным номером p = finger.storeModel(id); //Serial.println(". . . Saving model . . ."); Serial.println(". . . Saving model . . ."); //Serial.println(". . . Saving model in ID="); Serial.print(id); Serial.print(": "); // Сохранение модели (шаблона) отпечатка пальца, по двум изображениям if (p == FINGERPRINT_OK) { frcUID = ". . . Model save in ID=" + String(id) + "! . . ."; Serial.println(frcUID); delay(1500); Serial.println(frcUID); delay(400); Serial.println(frcUID); delay(400); Serial.println(frcUID); } else // Модель (шаблон) отпечатка пальца сохранена if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println(". . . Communication error . . ."); return p; } else // Ошибка соединения if (p == FINGERPRINT_BADLOCATION) { Serial.println(". . . Could not store in that location . . ."); return p; } else // Не удалось сохранить в этом месте if (p == FINGERPRINT_FLASHERR) { Serial.println(". . . Error writing to flash . . ."); return p; } else // Ошибка записи в flash память { Serial.println(". . . Unknown error . . ."); // Неизвестная ошибка return p; } }

Epilog

Planshetning narxi taxminan 10 000 rublni tashkil qiladi. (aslida, 7000 dan yangisini 1 Gb operativ xotira bilan sotib olish mumkin, lekin 4 Gb 1c bilan ko'chirish yoqimliroq bo'ladi, men aslida 1 Gb bilan mukammal holatda 6000 ga ishlatilganini sotib oldim, lekin optimallashtirish bilan shug'ullanganman).

O'tish joyi mebel ishlab chiqarish uchun qilingan, shuning uchun men u erda tanani yasadim. O'ylaymanki, siz do'konda 1000 rubl uchun "talaş va karton aralashmasi" ni kesishingiz mumkin. va uni o'z-o'zidan tejamkor vintlar bilan burang / superglue bilan yopishtiring. Oxirgi chora sifatida siz tayyor qutini (masalan, elektr shkafi) olishingiz va u erda derazani kesib olishingiz mumkin.

Arduino modullari va boshqalar: taxminan 2000 rubl.

Aqliy hujum va yaratishning zavqi bebahodir!

Agar siz nisbatan eski qurilmadan foydalansangiz, oldindan xafa bo'lmaslik kerak. Eski noutbukni o'rnatilgan biometrik sensorga ega zamonaviyroq noutbukga almashtirish o'rniga, unga USB ulashingiz mumkin.

PQI Mini USB barmoq izlarini o'qish qurilmasi eski uskunaga ikkinchi hayot baxsh etmoqchi bo'lganlar uchun ajoyib tanlovdir. Skaner maxsus Windows 10 o'rnatilgan qurilmalarda mavjud bo'lgan yangi Hello funksiyasi bilan ishlash uchun yaratilgan. Biroq, qurilma Windows 7 va 8 operatsion tizimlarining versiyalarini ham qo'llab-quvvatlaydi.

Sensorning asosiy afzalliklaridan biri shundaki, u 360 daraja skanerlash imkoniyatiga ega. Shunday qilib, qurilmangizni shaxsiy kompyuteringizga ulashning eng yaxshi usuli haqida tashvishlanishingiz shart emas. Eng yaqin USB portidan foydalaning va ishni boshlang. Skanerga barmoq izi kerak bo'lganda, u avtomatik ravishda kerakli joyga aylanadi va olingan ma'lumotlarni saqlangan nusxa bilan solishtiradi.

PQI Mini USB barmoq izini o'qish qurilmasi 10 tagacha turli profillarni saqlashi mumkin. Bu qurilmani almashish uchun ajoyib qiladi yoki qo'shimcha barmoqni skanerlash kerak bo'lganda (agar "asosiy" harom yoki shikastlangan bo'lsa).

PQI Mini USB barmoq izini o'qish moslamasi juda mos narxda mavjud bo'lib, u boshlang'ich modelni qidirayotganlar uchun ajoyib tanlovdir. Bundan tashqari, skaner juda ko'p qiyinchiliksiz olib yurish uchun etarlicha portativdir.

Verifi P2000 barmoq izini o'qish qurilmasi

Agar siz USB portlariga kirish unchalik oson bo'lmagan ish stoli kompyuteridan foydalansangiz, Verifi P2000 Fingerprint Reader-ga e'tibor bering. U shaxsiy kompyuterga osongina ulanadi, eng muhimi, qulayroq foydalanish uchun uni kompyuterga yaqin joylashtirish mumkin.

Skaner zarbaga chidamli metalldan tayyorlangan va ko'p yillar xizmat qiladi. O'zining mustahkam dizayniga qaramay, u barmoq izini yaxshi tanish tezligiga ega. Shunday qilib, barmog'ingizning o'rnini doimiy ravishda o'zgartirishingiz shart emas, shunchaki mukammal mos kelish uchun. Ko'pgina hollarda, sensorni bir marta surish kifoya qiladi.

P2000 ni yaratishda Verifit qurilmani skanerlash jarayoniga va tanib olish natijalarining aniqligiga hech qanday ta'sir qilmasligi uchun uni mustahkam va bardoshli qilishni rejalashtirgan. Verifi P2000 Fingerprint Reader - bu juda ko'chma qurilma bo'lib, uni siz bilan osongina olib yurishingiz mumkin. Bundan tashqari, u boshqa shunga o'xshash modellarga qaraganda ancha ko'p sonli kompyuterlar bilan mos keladi.

Kensington VeriMark

Ajablanarli darajada kichik barmoq izlari skaneri uchun Kensington VeriMark qulay tajriba uchun zarur bo'lgan deyarli hamma narsaga ega. Model 360 daraja skanerlashni qo'llab-quvvatlaydi va kichik o'lchamlarga ega. Ammo Kensington VeriMark-ni juda qimmatli qiladigan asosiy narsa qo'shimcha funksionallikdir.

Qurilma barcha qabul qilingan ma'lumotlarni shifrlangan shaklda saqlaydi. Sensor barmoq izini skanerlaganda, uni darhol shifrlaydi. Ushbu jarayonni to'xtatib bo'lmaydi, shuning uchun dasturiy ta'minot yoki apparatni buzish va biometrik ma'lumotlarni olish mumkin bo'lmaydi.

Bundan tashqari, qurilma qabul qilingan skanerlarni shifrlash uchun maxsus shablondan foydalanadi, bu faqat ishlab chiqaruvchida mavjud. Bu uni xakerlik hujumlaridan va boshqa ruxsatsiz kirish urinishlaridan xavfsizroq qiladi.

Skaner chiqarilgan versiyasidan qat'i nazar, nisbatan eski portlar bilan ishlashni qo'llab-quvvatlaydi. Agar siz USB-C dan USB-A adapteriga ega modeldan foydalansangiz, qurilmani nisbatan eski noutbuk yoki zamonaviy USB portlarini qo'llab-quvvatlamaydigan kompyuterga ulashingiz mumkin.

Benss barmoq izini o'qish tahlilchisi

Benss Fingerprint Reader Analyzer - bu hayotingizni osonlashtiradigan va sizni ko'plab muammolardan qutqaradigan yana bir skaner. Qoida tariqasida, oddiyroq modellar birinchi navbatda bitta nazorat fotosuratini oladi, shundan so'ng barcha keyingi nashrlar dastlabki natija bilan taqqoslanadi. Bu shuni anglatadiki, agar asl tasvirga biror narsa yuz bersa (u bilan boshqa barcha skanerlar solishtiriladi), yakuniy natijalarga mos kelish ehtimoli sezilarli darajada kamayadi.

Benss Fingerprint Reader Analyzer har bir teginish bilan profilingizni avtomatik ravishda yaratadigan va yangilaydigan o'z-o'zini o'rganish algoritmi bilan ishlaydi. Qurilmadan qanchalik uzoq foydalansangiz, natijalar shunchalik aniq bo'ladi. Bu skanerni soxta barmoq izlari bilan aldashni qiyinlashtiradi. Sensor doimiy ravishda barmog'ingizni skanerdan o'tkazib, ma'lumotlar bazasini yangilaganligi sababli, u ruxsatsiz kirishga urinishlarni darhol aniqlaydi.

Bu xakerlik hujumlariga qarshi kurashish uchun eng samarali qurilmalardan biridir. Uning noto'g'ri qabul qilish darajasi 0,002% dan kam, ya'ni siz haqiqatan ham qurilmani buzishga harakat qilishingiz kerak. Shu bilan birga, bu ishni unchalik qiyinlashtirmaydi, uning FRR koeffitsienti (yolg'on rad etish darajasi - tizimda ro'yxatdan o'tgan shaxsga kirishni rad etish) atigi 3% ni tashkil qiladi.

IDEM BioScan Compact

Agar siz sozlanishi mumkin bo'lgan skaner izlayotgan bo'lsangiz, sizga IDEM BioScan Compact yoqadi. Uning asosiy imkoniyatlarini kengaytirish va qo'shimcha funktsiyalarni olish uchun ishlab chiqaruvchining rasmiy veb-saytidan maxsus dasturlarni yuklab olish kifoya.

Shundan so'ng, siz kompyuteringizdagi alohida fayl va papkalarni shifrlashingiz, shuningdek, veb-saytlarga kirish uchun login va parol ma'lumotlarini maxsus dasturda saqlashingiz mumkin. Shunday qilib, barmog'ingiz bilan sensorga tegish orqali istalgan internet portaliga kirishingiz mumkin.

Agar siz qo'shimcha funktsiyalarni hisobga olmasangiz ham, BioScan Compact munosib model hisoblanadi. Qurilma 10 tagacha turli barmoq izlarini saqlashga qodir, kichik o'lchamlarga ega va soxta biometrik ma'lumotlarni tanib olish uchun o'rnatilgan xavfsizlik bilan ajralib turadi.

Blucoil SecuGen Hamster Pro 20

Blucoil SecuGen Hamster Pro 20 professional ehtiyojlar uchun ideal barmoq izi skaneridir. Model kengaytirilgan xavfsizlik sozlamalarini taklif qilganligi sababli, uning narxi bizning ro'yxatimizdagi boshqa qurilmalardan deyarli ikki baravar yuqori.

Bundan tashqari, u rasmiy Linux qo'llab-quvvatlanadigan bir nechta skanerlardan biridir. Shunday qilib, qaysi operatsion tizimdan foydalanmasligingizdan qat'i nazar, sensor har qanday vazifaga mos keladi.

SecuGen Hamster Pro 20 tirnalish, suv va changdan himoyalangan zarbaga chidamli qurilma. Skaner avvalgi skanerlashda qolgan izlarni kuzatishi va noaniq natijalarni rad etishi mumkin.

Bundan tashqari, Blucoil SecuGen Hamster Pro 20 energiya tejovchi qurilmadir, shuning uchun uni uzoq vaqt davomida hech kim ishlatmasa, u avtomatik ravishda o‘chadi.

Qo'shimcha xavfsizlik

So'nggi yillarda o'rnatilgan barmoq izlari skanerlari bo'lgan juda ko'p sonli mobil va ish stoli qurilmalari chiqarildi va ularning soni har yili o'sib bormoqda. Agar kompyuteringizda biometrik ma'lumotlarni tanib olish uchun o'rnatilgan sensor bo'lmasa, tashvishlanmang. Deyarli barcha mashhur modellarga mos keladigan shaxsiy kompyuterlar va noutbuklar uchun juda ko'p USB skanerlari mavjud.

Barmoq izi sensori bilan aloqa o'rnatish uchun Josh Hawley ko'rsatmalaridan foydalanilgan (ko'rsatmalarni to'g'ridan-to'g'ri yuklab olish).

Barmoq izi skaneri ishini harfli displey bilan disk raskadrovka qilish uchun sinxronizatsiya zarur.

Barmoq izi sensori skanerlangan tasvirlarni saqlash uchun o'z xotirasiga ega. Sensor ishlay boshlagandan so'ng, uni 0-manzildagi barmoq izlari bazasiga qo'shish orqali yuklab oling. Kompyuteringizda boshqaruv konsolini oching va qalqib chiquvchi ko'rsatmalarga amal qiling.

Kodlar - miltillovchi misol:

/* GT-511C3 barmoq izlari skanerini (FPS) boshqarish uchun kutubxona misoli */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Uskunani sozlash - FPS ulangan: //raqamli pin 10(arduino rx, fps tx) //raqamli pin 11(arduino tx - 560ohm qarshilik fps tx - 1000ohm rezistor - tuproq) //bu 5v tx chizig'ini taxminan 3,2v ga tushiradi, shuning uchun biz fps FPS_GT511C3 fps(10, 11) ni qovurmaymiz; void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // shuning uchun siz ketma-ket disk raskadrovka ekranida xabarlarni ko'rishingiz mumkin fps.Open(); ) void loop())( // FPS Blink LED Fpsni sinab ko'ring .SetLED(true); // fps kechikishi (1000); fps.SetLED(noto'g'ri); // fps kechikishi (1000); ichidagi LEDni o'chiring.

Kodlar - Ro'yxatdan o'tish misoli:

/* FPS_Enroll.ino - GT-511C3 barmoq izlari skanerini (FPS) boshqarish uchun kutubxona namunasi */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Uskunani sozlash - FPS ulangan: //raqamli pin 10 (arduino rx, fps tx) //raqamli pin 11(arduino tx - 560ohm rezistor fps tx - 1000ohm rezistor - yer) //bu 5v tx chizig'ini taxminan 3,2v ga tushiradi, shuning uchun biz fps FPS_GT5110, fpsni qovurmaymiz. o'n bir); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Ro‘yxatdan o‘tish testi // ochiq toping enroll id int enrollid = 0; fps.EnrollStart(enrollid); // enroll Serial.print("Ro'yxatdan o'tish uchun # barmoqni bosing"); Serial.println(ro'yxatdan o'tish); while(fps.IsPressFinger() == false) kechikish( 100) ; bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Barmoqni olib tashlash"); fps.Enroll1(); while(fps.IsPressFinger() = = true ) delay(100); Serial.println("O'sha barmoqni yana bosing"); while(fps.IsPressFinger() == false) kechikish(100); bret = fps.CaptureFinger(true); if (bret != noto'g'ri) ( Serial.println("Barmoqni olib tashlash"); fps.Enroll2(); while(fps.IsPressFinger() == true) kechikish(100); Serial.println("O'sha barmoqni yana bosing"); while( fps. IsPressFinger() == false) kechikish (100); bret = fps.CaptureFinger(true); if (bret != false) ( Serial.println("Barmoqni olib tashlash"); iret = fps.Enroll3(); agar (iret == 0) ( Serial.println("Ro'yxatdan o'tish muvaffaqiyatli"); ) else ( Serial.print("Ro'yxatdan o'tish xato kodi bilan amalga oshmadi:"); Serial.println(iret); ) ) else Serial.println("Uchinchi barmoqni ushlab bo'lmadi"); ) else Serial.println("Ikkinchi barmoqni ushlab bo'lmadi"); ) else Serial.println("Birinchi barmoqni yozib bo'lmadi"); ) void loop())( kechikish(100000); )

Faylni sinxronlash:

Sketch ro'yxatga olish fayli:

7-bosqich: ATtiny85 protsessorini dasturlash

ATtiny85 mikrochipi arzon va Arduino platasiga toʻliq mos keladi, ehtimol u yaratilgan eng yaxshi elektr qismidir!

LCD displeyning ishlashini boshqaradigan ATmega328 chipini qayta tiklash uchun Arduino dasturchisi ham kerak.

Yig'ilgan qurilmada ATtiny protsessori juda oddiy buyruqlarni bajaradi: ATmega signalini tekshiring va signal tasdiqlanganda garaj eshigini oching.

Protsessorni dasturlash uchun u quyidagi rasmda ko'rsatilganidek, 10 uF kondansatör bilan birga dasturchiga non paneli yordamida ulanishi kerak.

Va keyin yuklab oling yakuniy kod va tavsiyalarga amal qiling High-Low Tech-dan ko'rsatmalar.

Shundan so'ng, LED ga ulangan Arduino platasidagi 13 chiqishi yorug'lik ko'rsatkichi yordamida ishni kuzatish uchun YUKORI holatga o'tkazilishi kerak.

Yakuniy kod ATtiny :

//fpsAttiny by Nodcah //O‘rni bekor o‘rnatishni yopish uchun asosiy moduldan qisqa signal oladi())( pinMode(2,OUTPUT); //indikator pinMode(4,OUTPUT) 10K rezistor orqali boshqariladi); //trasistor pin bu garajni ochadi pinMode(0,INPUT); //kiritish kechikishi(500); //dijital yozishni ishga tushirish uchun vaqt bering(2, HIGH); //indikator LED ) void loop())( if(digitalRead(0) )) ( //tranzistorning kechikishini ishga tushirish uchun oddiy naqsh(125); if(digitalRead(0)==false)( kechikish(55); //vaqt oʻchirilgan, chunki ATtiny taymeri mukammal emas if( digitalRead(0))( kechikish(55); if(digitalRead(0)==false)( kechikish(55); if(digitalRead(0))( kechikish(55); if(digitalRead(0)==false) ( digitalWrite (4, HIGH); //tranzistor tugmani kechiktirishni "bosadi" (1000); digitalWrite (4, LOW); digitalWrite (2, LOW); kechikish (1000); digitalWrite (2, HIGH); ) ) ) )))

Biometrik qulf - yakuniy kod, qopqoqni kesish, garajni tayyorlash Arduino-da GPS soati Biometrik qulf - LCD displey diagrammasi va yig'ilishi



 


O'qing:



Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?

Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?

O'yinlar uchun SSD drayveri qanchalik muhim, u nimaga ta'sir qiladi va ushbu texnologiyaning foydaliligi nimada - bu bizning maqolamizda muhokama qilinadi. Qattiq holat...

Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak

Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak

USB portini qanday tuzatish mumkin? Mutaxassisdan javob: Kompyuterdan foydalanganda USB portlari tez-tez buziladi. Birinchidan, ular muvaffaqiyatsizlikka uchradi ...

Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilishim kerak?

Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilishim kerak?

Foydalanuvchilarning shaxsiy kompyuterlarida ko'pincha muhim ma'lumotlar - hujjatlar, fotosuratlar, videolar saqlanadi, ammo ma'lumotlarning zaxira nusxasi odatda...

Kompyuter nimadan iborat?

Kompyuter nimadan iborat?

Nashr etilgan: 14.01.2017 Assalomu alaykum, do'stlar, bugun biz kompyuter tizim blokining dizaynini batafsil ko'rib chiqamiz. Keling, nima ekanligini bilib olaylik ...

tasma tasviri RSS