- Gerekli malzemeler
- GT511C3 Parmak İzi Sensörü (FPS) Modülü
- GT511C3 Parmak İzi Sensörünü Arduino ile Bağlama
- GT511C3 ile Arduino
- GT511C3 Parmak İzi Sensörü için Arduino Programlama
- GT511C3 Parmak İzi Sensörünün Arduino ile Çalışması
Biyometri, uzun süredir güvenilir bir kimlik doğrulama sistemi olarak kullanılmaktadır. Bugün, bir kişiyi kalp atış ritmine veya hatta DNA'sına göre tanımlayabilen karmaşık biyometrik sistemler mevcuttur. Diğer uygun yöntemler arasında ses tanıma, Yüz tanıma, İris taraması ve Parmak İzi Taraması bulunur. En yaygın kullanılan yöntem parmak izi tanıma olanlardan, basit bir katılım sisteminden akıllı telefonlara, Güvenlik kontrollerine ve çok daha fazlasına kadar onu bulabiliriz.
Bu eğitimde, popüler GT511C3 Parmak İzi Sensörünün (FPS) Arduino ile nasıl kullanılacağını öğreneceğiz. Mevcut birçok FPS var ve bunları Katılım sistemi, Oylama Makinesi, Güvenlik sistemi vb. Gibi tasarımlar oluşturmak için nasıl kullanacağımızı zaten öğrendik. Ancak GT511C3, yüksek doğruluk ve daha hızlı yanıt süresi ile daha gelişmiş, bu nedenle nasıl kullanılacağını öğreneceğiz Arduino ile parmak izlerini kaydetmek ve ardından gerektiğinde parmak izlerini tespit etmek için. Öyleyse başlayalım.
Gerekli malzemeler
- Arduino Nano / UNO
- GT511C3 Parmak İzi Sensörü
- 16x2 LCD ekran
- Pot - 10k ve 1k, 10k, 22k dirençler
- Butona basınız
- Kabloların Bağlanması
- Ekmek tahtası
GT511C3 Parmak İzi Sensörü (FPS) Modülü
Projeye girmeden önce, GT511C3 parmak izi sensörü Modülünü ve nasıl çalıştığını anlayalım. Bu sensör, akıllı telefonlarımızda yaygın olarak kullanılan Kapasitif ve Ultrasonik Parmak İzi sensöründen çok farklıdır. GT511C3 bir optik Parmak izi sensörü ise onun desen tanımak için parmak izinin resimlere bağlı anlam. Evet, doğru okudunuz, sensörün içinde parmak izinizin fotoğraflarını çeken ve ardından bu görüntüleri güçlü yerleşik ARM Cortex M3 IC kullanarak işleyen bir kamera var. Aşağıdaki resim, sensörün pin çıkışı olan ön ve arka tarafını göstermektedir.
Gördüğünüz gibi sensörün mavi LED'lerle çevrili bir kamerası (siyah nokta) var, parmak izinin net bir görüntüsünü almak için bu LED'lerin aydınlatılması gerekiyor. Bu görüntüler daha sonra işlenir ve EEPROM ile birleştirilmiş ARM Mikrodenetleyici kullanılarak ikili değere dönüştürülür. Modülde ayrıca gücü göstermek için yeşil renkli bir SMD LED bulunur. Her parmak izi görüntüsü 202x258 piksel ve 450dpi çözünürlüğe sahiptir. Sensör 200 parmak izi kadar ve 199 bir kimlik form 0 atar şablonu, her parmak izi için dahil olabilir. Daha sonra algılama sırasında, taranan parmak izini 200 şablonun tümü ile otomatik olarak karşılaştırabilir ve bir eşleşme bulunursa, Smack Finger 3.0 kullanarak söz konusu parmak izinin kimlik numarasını verir.ARM Mikrodenetleyicide Algoritma. Sensör 3.3V ila 6V arasında çalışabilir ve 9600'de Seri iletişim yoluyla iletişim kurabilir. İletişim pinlerinin (Rx ve Tx) yalnızca 3,3V toleranslı olduğu söylenir, ancak veri sayfası bununla ilgili pek bir şey belirtmez. Bir GT511C3 FPS'nin pin çıkışı aşağıda gösterilmiştir.
Seri iletişimin yanı sıra modül, önceki resimde gösterilen pinler kullanılarak USB bağlantısı yoluyla doğrudan bilgisayara da arayüzlenebilir. Bilgisayara bağlandıktan sonra modül, bağlantıdan indirilebilen SDK_DEMO.exe uygulaması kullanılarak kontrol edilebilir. Bu uygulama, kullanıcının parmak izlerini kaydetmesine / doğrulamasına / silmesine ve ayrıca parmak izlerini tanımasına olanak tanır. Yazılım, sensör tarafından yakalanan ve denemeye değer görüntüyü okumanıza da yardımcı olabilir. Alternatif olarak, sensör Arduino ile bağlı olsa bile bu Yazılımı da kullanabilirsiniz, bunu daha sonra bu makalede tartışacağız.
Sensörle ilgili bir başka ilginç özellik ise algılama bölgesi etrafındaki metal kasadır. Daha önce de söylediğim gibi , sensörün çalışması için mavi LED'in açılması gerekiyor. Ancak sensörün aktif olarak parmak izi beklemesi gereken uygulamalarda, sensörü ısıtacağı ve dolayısıyla ona zarar vereceği için LED'i her zaman açık tutmak mümkün değildir. Bu nedenle, bu durumlarda, metal kasa, dokunulup tutulmadığını tespit etmek için bir MCU'nun kapasitif dokunmatik giriş pimine bağlanabilir. Evetse LED açılabilir ve algılama işlemi başlatılabilir. Bu yöntem, bu makalenin kapsamı dışında olduğu için burada gösterilmemiştir.
3,3V'de çalışırken sensör yaklaşık 130mA tüketir. Bir parmağı kaydetmek için yaklaşık 3 saniye ve onu tanımlamak için 1 saniye gerekir. Ancak, kayıtlı şablon sayısı daha azsa, tanıma hızı yüksek olacaktır. Sensör hakkında daha fazla ayrıntı için, modülün resmi üreticisi olan ADH-Tech'in bu veri sayfasına başvurabilirsiniz.
GT511C3 Parmak İzi Sensörünü Arduino ile Bağlama
GT511C3 FPS, Arduino'nun + 5V pininden güç alabilen iki güç pinine ve seri iletişim için Arduino'nun herhangi bir dijital pinine bağlanabilen iki iletişim pini Rx ve Tx'e sahiptir. Ek olarak, sensör durumunu görüntülemek için bir düğme ve bir LCD ekledik. GT511C3 FPS ile Arduino arasında arayüz oluşturmak için eksiksiz devre şeması aşağıda bulunabilir.
Rx ve Tx pinleri 3,3V toleranslı olduğundan, 5V'yi 3,3V'ye dönüştürmek için Rx tarafında potansiyel bir bölücü kullandık. 10k direnç ve 22k direnç, FPS'nin Rx pinine ulaşmadan önce Arduino Tx pininden gelen 5V sinyalini 3.3V'a dönüştürür. Sensör ayrıca 3.3V ile de çalıştırılabilir, ancak Arduino'nuzun sensör için yeterli akımı sağlayabileceğinden emin olun. LCD'yi Arduino'nun 5V pininden güç alan 4-bit modunda bağladık. D2 pimine, basıldığında programı kullanıcının yeni parmağını kaydedebileceği kayıt moduna geçirecek bir düğme bağlıdır. Kaydolduktan sonra program, sensöre dokunan herhangi bir parmağı taramak için tarama modunda kalacaktır.
GT511C3 ile Arduino
Daha önce belirtildiği gibi, GT511C3 FPS seri iletişim yoluyla iletişim kurar, sensör onaltılık kodu anlar ve her altılı kod için belirli bir işlem gerçekleştirilir. Tüm onaltılık değerleri ve ilgileniyorsanız karşılık gelen işlevini öğrenmek için veri sayfasını kontrol edebilirsiniz. Ama şanslıyız ki bboyho , parmak izlerini kaydetmek ve tespit etmek için doğrudan Arduino ile kullanılabilecek bir kitaplık oluşturdu. GT511C3 FPS için Github kitaplığı aşağıdaki bağlantıdan indirilebilir
GT511C3 Arduino Kütüphanesi
Bağlantı bir ZIP dosyası indirecek, ardından Sketch -> Include Library -> Add.ZIP Library komutunu izleyerek onu Arduino IDE'nize eklemeniz gerekecektir. Kitaplığı ekledikten sonra IDE'nizi yeniden başlatın ve aşağıda gösterildiği gibi Dosya -> Örnek -> Parmak İzi Tarayıcı TTL altında GT511C3 FSP için örnek programları bulabilmeniz gerekir.
Dört örnek program görmelisiniz, yanıp sönme programı FPS'deki mavi led'i yanıp sönecektir, kayıt ve kimlik parmak programı buna göre parmakları kaydetmek ve tanımlamak için kullanılabilir. Kaydedildikten sonra parmak kapatılsa bile modül tarafından her zaman hatırlanacağını unutmayın.
Seri Geçiş programı, bu makalenin önceki bölümlerinde tartıştığımız Demo_SDK.exe uygulamasını kullanmak için Arduino'ya yüklenebilir . Herhangi bir parmak izi şablonunu silmek veya bilgisayarınıza bir kopyasını kaydetmek için bu SDK uygulaması kullanılabilir.
GT511C3 Parmak İzi Sensörü için Arduino Programlama
Buradaki amacımız, bir tuşa basıldığında parmağınızı kaydedecek ve halihazırda kayıtlı olan parmağın kimlik numarasını gösterecek bir program yazmaktır. Ayrıca projenin bağımsız olmasını sağlamak için tüm bilgileri LCD'de görüntüleyebilmeliyiz. Aynı şeyi Kodun tamamı sayfanın alt kısmında verecek mi. Burada daha iyi anlamanıza yardımcı olmak için aynısını küçük parçalara ayırıyorum.
Her zaman olduğu gibi programa gerekli kütüphaneleri ekleyerek başlıyoruz, burada FPS modülümüz için FPS_GT511C3 kitaplığına, seri iletişimde D4 ve D5'i kullanmak için Yazılım serisine ve LCD arabirimi için Liquid crystal'e ihtiyacımız olacak. O zaman FPS ve LCD'nin hangi pinlere bağlı olduğunu belirtmemiz gerekiyor. Devre şemasını bu şekilde takip ettiyseniz, FPS için 4 ve 5 ve LCD için D6 - D11'dir. Aynı kod aşağıda gösterilmiştir
#include "FPS_GT511C3.h" // Kitaplığı https://github.com/sparkfun/Fingerprint_Scanner-TTL adresinden alın #include "SoftwareSerial.h" // Yazılım seri kitaplığı #include
İçinde kurulum fonksiyonu, biz LCD üzerinde bazı tanıtım mesajı görüntüler ve ardından FPS modülünü başlatın. Fps.SetLED (true) komutu sensör üzerindeki mavi LED'i açar, fps ile kapatabilirsiniz. Gerekmediğinde LED (false) olarak ayarlayın çünkü sensör sürekli açık bırakılırsa ısınır. Ayrıca D2 pinini giriş pini olarak yaptık ve pime bir düğme bağlamak için dahili çekme direncine bağladık.
geçersiz kurulum () { Serial.begin (9600); lcd.begin (16, 2); // 16 * 2 LCD lcd.print'i başlatın ("GT511C3 FPS"); // Giriş Mesajı 1. satır lcd.setCursor (0, 1); lcd.print ("Arduino ile"); // Giriş Mesajı 2. satır gecikmesi (2000); lcd.clear (); fps.Open (); // fp fps.SetLED (true) ' yi başlatmak için seri komut gönder ; // fps'nin parmak izini görebilmesi için LED'i açın pinMode (2, INPUT_PULLUP); // Giriş pini olarak dahili kaldırma direncine bağlayın }
İçinde boşluk döngü fonksiyonu biz yeni bir parmak kayıt ve şablonunu kurtaracak basıldığında eğer, düğmeye basıldığında kontrol etmek zorunda kaydolmanıza işlevini kullanarak bir kimlik numarası. Değilse, sensöre bir parmağın basılmasını beklemeye devam edeceğiz. Basıldığında, parmak izini 1: N yöntemini kullanarak tüm kayıtlı parmak izi şablonuyla karşılaştırarak belirleyeceğiz. Kimlik numarası keşfedildiğinde karşılama ve ardından kimlik numarasını görüntüleyeceğiz. Parmak izi kaydedilen parmakların hiçbiriyle eşleşmezse, kimlik sayısı 200 olacaktır, bu durumda bilinmeyen hoşgeldin göstereceğiz.
if (digitalRead (2)) // Düğmeye basıldıysa { Enroll (); // Bir parmak izi kaydedin } // Parmak izi testini tanımlayın if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Hoş Geldiniz:"); if (id == 200) lcd.print ("Bilinmiyor"); // Tanınmadıysa lcd.print (id); gecikme (1000); }
Kayıt seçeneğini işlevi başarıyla bir parmak kayıt için üç örnek girdileri almak zorunda kalacak. Bir kez kaydolduktan sonra, söz konusu parmak için bir şablon oluşturulacaktır ve bu şablon, kullanıcı HEX komutları ile zorlamadıkça silinmeyecektir. Bir parmağı kaydetme kodu aşağıda gösterilmiştir. IsPressFinger yöntemi, bir parmağın algılanıp algılanmadığını kontrol etmek için kullanılır, eğer öyleyse görüntü CaptureFinger kullanılarak yakalanır ve son olarak Enroll1, Enroll2 ve Enroll3 bir parmağı başarıyla kaydetmek için üç farklı örnek için kullanılır. LCD, başarılı bir şekilde kaydedilmişse parmağın kimlik numarasını görüntüler, kodla birlikte bir hata mesajı görüntüler. Kod 1, parmak izinin net bir şekilde yakalanmadığı ve bu nedenle tekrar denemeniz gerektiği anlamına gelir. Kod 2, bir hafıza hatası göstergesidir ve kod 3, parmağın halihazırda kaydedilmiş olduğunu belirtmek içindir.
void Enroll () // Kütüphane exmaple programından kayıt işlevi { int enrollid = 0; bool usedid = doğru; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (kayıt kimliği); // lcd.print'i kaydet ("Kaydol #"); lcd.print (enrollid); while (fps.IsPressFinger () == yanlış) gecikme (100); bool bret = fps.CaptureFinger (doğru); int iret = 0; eğer ( bret ! = yanlış) { lcd.clear (); lcd.print ("Parmağı kaldır"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Tekrar basın"); while (fps.IsPressFinger () == yanlış) gecikme (100); bret = fps.CaptureFinger (doğru); eğer ( bret ! = yanlış) { lcd.clear (); lcd.print ("Parmağı kaldır"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Tekrar basın"); while (fps.IsPressFinger () == yanlış) gecikme (100); bret = fps.CaptureFinger (doğru); eğer ( bret ! = yanlış) { lcd.clear (); lcd.print ("Parmağı kaldır"); iret = fps.Enroll3 (); eğer (iret == 0) { lcd.clear (); lcd.print ("Kayıt Başarılı"); } else { lcd.clear (); lcd.print ("Kayıt Başarısız:"); lcd.print (iret); } } else lcd.print ("Başarısız 1"); } else lcd.print ("Başarısız 2"); } else lcd.print ("Başarısız 3"); }
GT511C3 Parmak İzi Sensörünün Arduino ile Çalışması
Artık donanımımız ve kodumuz hazır olduğuna göre projemizi test etme zamanı. Kodu Arduino'ya yükleyin ve çalıştırın, projeye güç sağlamak için sadece mikro-usb bağlantı noktasını kullanıyorum. Önyükleme sırasında LCD'de giriş mesajını görmeliyiz ve ardından “Merhaba!..” göstermelidir. Bu, FPS'nin parmak taramaya hazır olduğu anlamına gelir, eğer kayıtlı herhangi bir parmağa basıldığında, "Hoş Geldiniz" ve ardından aşağıda gösterildiği gibi o parmağın kimlik numarası gelir.
Yeni bir parmağın kaydedilmesi gerekiyorsa, kayıt moduna geçmek için basmalı düğmeyi kullanabilir ve bir parmağı kaydetmek için LCD talimatını izleyebiliriz. Kayıt işlemi tamamlandıktan sonra, parmakları tekrar işaretlemek için okunduğunu belirtmek için LCD'de tekrar "Hi!.." görüntülenir. Tüm çalışma aşağıda bağlantısı videoda bulunabilir.
Buradan, Parmak İzi sensör modülünü kullanarak bunun üzerine birçok ilginç şey geliştirebilirsiniz. Öğreticiyi anladığınızı ve yararlı bir şeyler oluşturmaktan keyif aldığınızı umuyoruz, herhangi bir sorunuz varsa, bunları yorum bölümünde bırakın veya diğer teknik sorular için forumları kullanın.