- Bahan yang Diperlukan
- Modul GT511C3 Fingerprint Sensor (FPS)
- Menyambungkan GT511C3 Finger Print Sensor dengan Arduino
- Arduino dengan GT511C3
- Pengaturcaraan Arduino untuk GT511C3 Finger Print Sensor
- Bekerja GT511C3 Finger Print Sensor dengan Arduino
Biometrik telah lama digunakan sebagai sistem pengesahan yang boleh dipercayai. Kini terdapat sistem biometrik yang kompleks yang dapat mengenal pasti seseorang dengan irama degupan jantungnya atau bahkan dengan DNAnya. Kaedah lain yang layak termasuk pengecaman suara, Pengecaman wajah, pengimbasan Iris dan Pengimbasan cap jari. Dari mana pengecaman cap jari adalah kaedah yang paling banyak digunakan, kita dapat mencarinya dari sistem kehadiran sederhana hingga telefon pintar hingga pemeriksaan Keselamatan dan banyak lagi.
Dalam tutorial ini kita akan belajar bagaimana menggunakan Sensor Cetak Jari GT511C3 (FPS) yang popular dengan Arduino. Terdapat banyak FPS yang tersedia dan kami telah belajar bagaimana menggunakannya untuk membuat reka bentuk seperti sistem Kehadiran, Mesin Pengundian, sistem Keselamatan dll. Tetapi GT511C3 lebih maju dengan ketepatan tinggi dan masa tindak balas yang lebih cepat, jadi kami akan belajar menggunakannya dengan Arduino untuk mendaftarkan cap jari di atasnya dan kemudian mengesan cap jari bila diperlukan. Oleh itu, mari kita mulakan.
Bahan yang Diperlukan
- Arduino Nano / UNO
- Sensor Cetakan Jari GT511C3
- Skrin LCD 16x2
- Perintang - perintang 10k dan 1k, 10k, 22k
- Tekan butang
- Wayar Penyambung
- Papan roti
Modul GT511C3 Fingerprint Sensor (FPS)
Sebelum menyelami projek ini, mari kita fahami mengenai Modul sensor cap jari GT511C3 dan bagaimana ia berfungsi. Sensor ini sangat berbeza dengan sensor Capacitive dan Ultrasonic Fingerprint yang biasanya digunakan pada telefon pintar kita. The GT511C3 adalah sensor cap jari optik, bermakna ia bergantung kepada imej cap jari untuk mengenali corak itu. Ya, anda betul-betul membaca, sensor sebenarnya mempunyai kamera di dalamnya yang mengambil gambar cap jari anda dan kemudian memproses gambar-gambar ini menggunakan IC ARM Cortex M3 yang kuat. Gambar di bawah menunjukkan bahagian depan dan belakang sensor dengan pinout.
Seperti yang anda lihat, sensor memiliki kamera (titik hitam) yang dikelilingi oleh LED biru, LED ini harus menyala untuk mengambil gambar sidik jari yang jelas. Gambar-gambar ini kemudian diproses dan ditukar menjadi nilai binari dengan menggunakan ARM Microcontroller yang digabungkan dengan EEPROM. Modul ini juga mempunyai SMD LED warna hijau untuk menunjukkan daya. Setiap gambar cap jari berukuran 202x258 piksel dengan resolusi 450dpi. The sensor boleh mendaftar hamper 200 cap jari dan bagi setiap cap jari template ia memberikan bentuk ID 0-199. Kemudian semasa pengesanan, ia dapat membandingkan cap jari yang diimbas secara automatik dengan semua 200 templat dan jika terdapat kecocokan, ia memberikan nombor ID cap jari tertentu menggunakan Smack Finger 3.0Algoritma pada Mikrokontroler ARM. Sensor boleh beroperasi dari 3.3V hingga 6V dan berkomunikasi melalui komunikasi Serial pada 9600. Pin komunikasi (Rx dan Tx) dikatakan hanya bertoleransi 3.3V, namun lembar data tidak banyak menjelaskannya. Pin-out GT511C3 FPS ditunjukkan di bawah.
Selain daripada komunikasi bersiri modul juga dapat dihubungkan secara langsung ke komputer walaupun sambungan USB menggunakan pin yang ditunjukkan pada gambar sebelumnya. Setelah disambungkan ke komputer, modul dapat dikendalikan menggunakan aplikasi SDK_DEMO.exe yang boleh dimuat turun dari pautan. Aplikasi ini membolehkan pengguna mendaftarkan / mengesahkan / menghapus cap jari dan juga mengenali cap jari. Perisian ini juga dapat membantu anda membaca gambar yang ditangkap oleh sensor yang patut dicuba. Sebagai alternatif anda juga boleh menggunakan Perisian ini walaupun sensor disambungkan dengan Arduino, kami akan membincangkannya kemudian dalam artikel ini.
Satu lagi ciri menarik mengenai sensor ialah selongsong logam di sekitar kawasan penginderaan. Seperti yang saya katakan sebelumnya, LED biru harus dihidupkan agar sensor berfungsi. Tetapi dalam aplikasi di mana sensor harus menunggu sidik jari secara aktif, tidak mungkin LED sentiasa dihidupkan kerana ia akan memanaskan sensor dan dengan itu merosakkannya. Oleh itu, dalam kes tersebut, selongsong logam boleh disambungkan ke pin input sentuhan kapasitif MCU untuk mengesan jika ia disentuh. Sekiranya ya LED boleh dihidupkan dan proses penginderaan dapat dimulakan. Kaedah ini tidak ditunjukkan di sini kerana di luar ruang lingkup artikel ini.
Semasa beroperasi pada 3.3V sensor menggunakan sekitar 130mA. Ia memerlukan hampir 3 saat untuk mendaftarkan jari dan 1 saat untuk mengenalinya. Tetapi jika jumlah templat yang didaftarkan kurang, kelajuan pengecaman akan tinggi. Untuk maklumat lebih lanjut mengenai sensor, anda boleh merujuk pada lembar data ini dari ADH-Tech yang merupakan pengeluar rasmi modul.
Menyambungkan GT511C3 Finger Print Sensor dengan Arduino
GT511C3 FPS mempunyai dua pin kuasa yang dapat dikuasakan oleh + 5V pin Arduino dan dua pin komunikasi Rx dan Tx yang dapat disambungkan ke mana-mana pin digital Arduino untuk komunikasi bersiri. Selain itu kami juga telah menambahkan butang tekan dan LCD untuk memaparkan status sensor. Gambarajah litar lengkap untuk menghubungkan GT511C3 FPS dengan Arduino boleh didapati di bawah.
Oleh kerana pin Rx dan Tx bertoleransi 3.3V, kami telah menggunakan pembahagi berpotensi di sisi Rx untuk menukar 5V ke 3.3V. Perintang 10k dan perintang 22k menukar isyarat 5V dari pin Arduino Tx kepada 3.3V sebelum mencapai pin Rx FPS. Sensor juga boleh digerakkan oleh 3.3V tetapi pastikan Arduino anda dapat memberi arus yang cukup untuk sensor. Kami telah menyambungkan LCD dalam mod 4-bit yang dikuasakan oleh pin Arduino 5V. Butang tekan disambungkan ke pin D2 yang ketika ditekan akan menempatkan program dalam mod pendaftaran di mana pengguna dapat mendaftarkan jari baru. Setelah mendaftar, program akan tetap dalam mod pemindaian untuk mencari jari yang menyentuh sensor.
Arduino dengan GT511C3
Seperti yang disebutkan sebelumnya, GT511C3 FPS berkomunikasi melalui komunikasi bersiri, sensor memahami kod hex dan untuk setiap kod hex suatu operasi tertentu dilakukan. Anda boleh menyemak lembar data untuk mengetahui semua nilai hex dan fungsinya yang sesuai jika anda berminat. Tetapi, beruntung bagi kami bboyho telah membuat perpustakaan yang boleh digunakan secara langsung dengan Arduino untuk Mendaftar dan mengesan cap jari. Perpustakaan Github untuk GT511C3 FPS boleh dimuat turun dari pautan di bawah
Perpustakaan GT511C3 Arduino
Pautan akan memuat turun fail ZIP, kemudian anda perlu menambahkannya ke IDE Arduino anda dengan mengikuti arahan Sketch -> Include Library -> Add.ZIP Library. Setelah anda menambah perpustakaan, mulakan semula IDE anda dan anda akan dapat mencari contoh program untuk GT511C3 FSP di bawah Fail -> Contoh -> Pengimbas Cap Jari TTL seperti gambar di bawah
Anda harus melihat empat contoh program, program berkedip akan berkedip biru yang dipimpin pada FPS, program mendaftar dan ID jari boleh digunakan untuk mendaftar dan mengenal pasti jari yang sesuai. Perhatikan bahawa jari setelah didaftarkan akan selalu dikenang oleh modul walaupun ia dimatikan.
Program Serial Pass-through dapat dimuat ke Arduino untuk menggunakan aplikasi Demo_SDK.exe yang telah kita bincangkan sebelumnya dalam artikel ini. Untuk menghapus templat cap jari atau menyimpan salinan di komputer anda, aplikasi SDK ini dapat digunakan.
Pengaturcaraan Arduino untuk GT511C3 Finger Print Sensor
Tujuan kami di sini adalah untuk menulis program yang akan mendaftarkan jari apabila butang ditekan dan menunjukkan nombor ID jari yang sudah didaftarkan. Kita juga harus dapat memaparkan semua maklumat di LCD untuk membolehkan projek menjadi tersendiri. The kod lengkap untuk melakukan perkara yang sama adalah memberikan di bahagian bawah halaman ini. Di sini saya membahagikan perkara kecil kepada coretan kecil untuk membantu anda memahami dengan lebih baik.
Seperti biasa kami memulakan program dengan memasukkan perpustakaan yang diperlukan, di sini kami memerlukan perpustakaan FPS_GT511C3 untuk modul FPS kami, perisian bersiri untuk menggunakan D4 dan D5 pada komunikasi bersiri dan kristal cair untuk antara muka LCD. Kemudian kita perlu menyebutkan pin mana FPS dan LCD disambungkan. Sekiranya anda mengikuti rajah litar seperti itu, itu adalah 4 dan 5 untuk FPS dan D6 hingga D11 untuk LCD. Kod untuk yang sama ditunjukkan di bawah
#include "FPS_GT511C3.h" // Dapatkan perpustakaan dari https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Perpustakaan bersiri perisian #include
Di dalam fungsi persediaan , kami memaparkan beberapa pesan pengantar pada LCD dan kemudian menginisialisasi modul FPS. Perintah fps.SetLED (true) akan menghidupkan LED biru pada sensor, anda boleh mematikannya dengan fps.SetLED (false) apabila tidak diperlukan kerana ia akan memanaskan sensor jika dibiarkan berterusan. Kami juga telah menjadikan pin D2 sebagai pin input dan menghubungkannya ke resistor pull-up dalaman untuk menghubungkan butang tekan ke pin.
persediaan tidak sah () { Serial.begin (9600); lcd.begin (16, 2); // Permulaan lcd.print LCD 16 * 2 ("GT511C3 FPS"); // Baris Mesej Pengenalan 1 lcd.setCursor (0, 1); lcd.print ("dengan Arduino"); // Kelewatan barisan intro Mesej 2 (2000); lcd.clear (); fps. Buka (); // hantar arahan bersiri untuk memulakan fp fps.SetLED (benar); // hidupkan LED supaya fps dapat melihat pinMode cap jari (2, INPUT_PULLUP); // Sambungkan ke perintang penarik dalaman sebagai pin input }
Di dalam fungsi gelung void kita harus memeriksa apakah butang ditekan, jika ditekan kita akan mendaftarkan jari baru dan menyimpan templatnya dengan nombor ID dengan menggunakan fungsi mendaftar. Sekiranya tidak, kita akan terus menunggu jari ditekan di sensor. Sekiranya ditekan, kami akan mengidentifikasi cap jari dengan membandingkannya dengan semua templat cap jari yang didaftarkan menggunakan kaedah 1: N. Setelah nombor ID dijumpai, kami akan menunjukkan tanda selamat datang diikuti dengan nombor ID. Sekiranya cap jari tidak sesuai dengan mana-mana jari yang didaftarkan, jumlah idnya adalah 200, dalam hal ini kami akan menunjukkan sambutan yang tidak diketahui.
if (digitalRead (2)) // Jika butang ditekan { Enroll (); // Daftar cap jari } // Kenal pasti ujian cap jari jika (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Selamat Datang:"); jika (id == 200) lcd.print ("Tidak diketahui"); // Sekiranya tidak dikenali lcd.print (id); kelewatan (1000); }
The SimKad fungsi perlu mengambil tiga input sampel untuk mendaftar satu jari dengan jayanya. Setelah mendaftar templat untuk jari tertentu akan dibuat yang tidak akan dihapus melainkan pengguna memaksanya walaupun HEX memerintahkan. Kod untuk mendaftarkan jari ditunjukkan di bawah. Kaedah IsPressFinger digunakan untuk memeriksa apakah jari terdeteksi, jika ya maka gambarnya diambil menggunakan CaptureFinger dan akhirnya Enroll1, Enroll2 dan Enroll3 digunakan untuk tiga sampel berbeza untuk berjaya mendaftarkan satu jari. LCD memaparkan nombor ID jari jika berjaya didaftarkan, yang lain akan menunjukkan mesej kegagalan dengan kod. Kod 1 bermaksud cap jari tidak ditangkap dengan jelas dan oleh itu anda harus mencuba lagi. Kod 2 adalah petunjuk kegagalan ingatan dan kod 3 adalah untuk menunjukkan bahawa jari telah didaftarkan.
batal Enroll () // Enroll function from library exmaple program { int registerid = 0; bool usedid = benar; while (usedid == true) { usedid = fps.CheckEnrolled (mendaftar); jika (usedid == true) mendaftarid ++; } fps.EnrollStart (mendaftar); // daftar lcd.print ("Daftar #"); lcd.print (mendaftar); sementara (fps.IsPressFinger () == false) kelewatan (100); bool bret = fps.CaptureFinger (benar); int iret = 0; jika (bret! = false) { lcd.clear (); lcd.print ("Keluarkan jari"); fps.Enroll1 (); sementara (fps.IsPressFinger () == true) kelewatan (100); lcd.clear (); lcd.print ("Tekan lagi"); sementara (fps.IsPressFinger () == false) kelewatan (100); bret = fps.CaptureFinger (benar); jika (bret! = false) { lcd.clear (); lcd.print ("Keluarkan jari"); fps.Enroll2 (); sementara (fps.IsPressFinger () == true) kelewatan (100); lcd.clear (); lcd.print ("Tekan lagi"); sementara (fps.IsPressFinger () == false) kelewatan (100); bret = fps.CaptureFinger (benar); jika (bret! = false) { lcd.clear (); lcd.print ("Keluarkan jari"); iret = fps.Enroll3 (); jika (iret == 0) { lcd.clear (); lcd.print ("Mendaftar Kejayaan"); } lain { lcd.clear (); lcd.print ("Pendaftaran Gagal:"); lcd.print (iret); } } lain lcd.print ("Gagal 1"); } lain lcd.print ("Gagal 2"); } lain lcd.print ("Gagal 3"); }
Bekerja GT511C3 Finger Print Sensor dengan Arduino
Sekarang perkakasan dan kod kami sudah siap, inilah masanya untuk menguji projek kami. Muat naik kod ke Arduino dan aktifkan, saya hanya menggunakan port micro-usb untuk menggerakkan projek. Semasa boot, kita mesti melihat mesej intro pada LCD dan kemudian ia akan memaparkan "Hai!.." Ini berarti FPS siap memindai jari, jika ada jari yang terdaftar ditekan maka akan tertera "Selamat Datang" diikuti dengan nomor ID jari tersebut seperti gambar di bawah.
Sekiranya jari baru harus didaftarkan maka kita dapat menggunakan butang tekan untuk masuk ke mod pendaftaran dan ikuti arahan LCD untuk mendaftarkan jari. Setelah proses pendaftaran selesai, LCD akan memaparkan "Hai!.." sekali lagi untuk menunjukkan bahawa ia dibaca untuk mengidentifikasi jari lagi. Penyelesaian yang lengkap boleh didapati di video yang dipautkan di bawah.
Dari sini anda boleh mengembangkan banyak perkara menarik di atas ini dengan menggunakan modul sensor Finger Print. Harap anda memahami tutorial dan senang membina sesuatu yang berguna, jika anda mempunyai pertanyaan, tinggalkan di ruangan komen atau gunakan forum untuk pertanyaan teknikal yang lain.