- Bahan yang Dibutuhkan
- Modul Sensor Sidik Jari (FPS) GT511C3
- Menghubungkan Sensor Cetak Jari GT511C3 dengan Arduino
- Arduino dengan GT511C3
- Pemrograman Arduino untuk Sensor Sidik Jari GT511C3
- Bekerja dari Sensor Finger Print GT511C3 dengan Arduino
Biometrik telah digunakan sebagai sistem otentikasi yang andal sejak lama. Saat ini terdapat sistem biometrik kompleks yang dapat mengidentifikasi seseorang dengan ritme detak jantungnya atau bahkan oleh DNA-nya. Metode lain yang layak termasuk pengenalan suara, pengenalan wajah, pemindaian iris mata dan pemindaian sidik jari. Di mana pengenalan sidik jari adalah metode yang paling banyak digunakan, kita dapat menemukannya dari sistem kehadiran sederhana hingga ponsel pintar hingga pemeriksaan keamanan dan banyak lagi.
Dalam tutorial ini kita akan belajar cara menggunakan Sensor Cetak Jari (FPS) GT511C3 yang populer dengan Arduino. Ada banyak FPS yang tersedia dan kami telah mempelajari cara menggunakannya untuk membangun desain seperti Sistem Kehadiran, Mesin Voting, Sistem Keamanan, dll. Tetapi GT511C3 lebih canggih dengan akurasi tinggi dan waktu respons yang lebih cepat, jadi kami akan mempelajari cara menggunakannya dengan Arduino untuk mendaftarkan sidik jari di atasnya dan kemudian mendeteksi sidik jari kapan pun diperlukan. Jadi mari kita mulai.
Bahan yang Dibutuhkan
- Arduino Nano / UNO
- Sensor sidik jari GT511C3
- Layar LCD 16x2
- Pot - resistor 10k dan 1k, 10k, 22k
- Tekan tombol
- Menghubungkan Kabel
- Papan roti
Modul Sensor Sidik Jari (FPS) GT511C3
Sebelum menyelami proyek ini, mari kita pahami tentang Modul sensor sidik jari GT511C3 dan cara kerjanya. Sensor ini sangat berbeda dengan sensor Capacitive dan Ultrasonic Fingerprint yang biasa digunakan pada ponsel pintar kita. The GT511C3 adalah sensor sidik jari optik, yang berarti hal itu bergantung pada gambar sidik jari Anda untuk mengenali pola. Ya, Anda membacanya dengan benar, sensor sebenarnya memiliki kamera di dalamnya yang mengambil gambar sidik jari Anda dan kemudian memproses gambar-gambar ini menggunakan IC ARM Cortex M3 bawaan yang kuat. Gambar di bawah ini menunjukkan sisi depan dan belakang sensor dengan pinout.
Seperti yang Anda lihat, sensor memiliki kamera (titik hitam) yang dikelilingi oleh LED biru, LED ini harus dinyalakan untuk mengambil gambar sidik jari yang jelas. Gambar-gambar ini kemudian diolah dan diubah menjadi nilai biner dengan menggunakan Mikrokontroler ARM yang digabungkan dengan EEPROM. Modul ini juga memiliki LED SMD warna hijau untuk menunjukkan daya. Setiap gambar sidik jari berukuran 202x258 piksel dengan resolusi 450dpi. The sensor dapat mendaftarkan upto 200 sidik jari dan untuk setiap sidik jari template yang akan menetapkan ID bentuk 0-199. Kemudian selama deteksi secara otomatis dapat membandingkan sidik jari yang dipindai dengan semua 200 templat dan jika ditemukan kecocokan itu memberikan nomor ID dari sidik jari tersebut menggunakan Smack Finger 3.0Algoritma pada Mikrokontroler ARM. Sensor dapat beroperasi dari 3.3V hingga 6V dan berkomunikasi melalui komunikasi Serial pada 9600. Pin komunikasi (Rx dan Tx) dikatakan hanya toleran 3.3V, namun datasheet tidak menjelaskan banyak tentangnya. Pin-out dari GT511C3 FPS ditunjukkan di bawah ini.
Selain komunikasi serial, modul juga dapat langsung dihubungkan ke komputer melalui koneksi USB menggunakan pin yang ditunjukkan pada gambar sebelumnya. Setelah terhubung ke komputer, modul dapat dikontrol menggunakan aplikasi SDK_DEMO.exe yang dapat diunduh dari tautan. Aplikasi ini memungkinkan pengguna untuk meregister / memverifikasi / menghapus sidik jari dan juga untuk mengenali sidik jari. Perangkat lunak ini juga dapat membantu Anda membaca gambar yang ditangkap oleh sensor yang layak untuk dicoba. Atau Anda juga dapat menggunakan Software ini meskipun sensor terhubung dengan Arduino, kami akan membahasnya nanti di artikel ini.
Fitur menarik lainnya tentang sensor adalah casing logam di sekitar wilayah penginderaan. Seperti yang saya katakan sebelumnya, LED biru harus dinyalakan agar sensor berfungsi. Namun dalam aplikasi di mana sensor harus secara aktif menunggu sidik jari, tidak mungkin untuk selalu menyalakan LED karena akan memanaskan sensor dan dengan demikian merusaknya. Oleh karena itu dalam kasus tersebut casing logam dapat dihubungkan ke pin input sentuh kapasitif dari MCU untuk mendeteksi jika disentuh. Jika ya, LED bisa dinyalakan dan proses penginderaan bisa dimulai. Metode ini tidak didemonstrasikan di sini karena berada di luar cakupan artikel ini.
Saat beroperasi pada 3.3V, sensor mengkonsumsi sekitar 130mA. Diperlukan hampir 3 detik untuk mendaftarkan jari dan 1 detik untuk mengidentifikasinya. Namun jika jumlah template terdaftar kurang, kecepatan pengenalan akan tinggi. Untuk detail selengkapnya tentang sensor, Anda dapat merujuk ke lembar data ini dari ADH-Tech yang merupakan produsen resmi modul ini.
Menghubungkan Sensor Cetak Jari GT511C3 dengan Arduino
GT511C3 FPS memiliki dua pin daya yang dapat didukung oleh pin + 5V Arduino dan dua pin komunikasi Rx dan Tx yang dapat dihubungkan ke pin digital Arduino untuk komunikasi serial. Selain itu kami juga menambahkan tombol tekan dan LCD untuk menampilkan status sensor. Diagram rangkaian lengkap untuk menghubungkan GT511C3 FPS dengan Arduino dapat ditemukan di bawah ini.
Karena pin Rx dan Tx toleran 3,3V, kami telah menggunakan pembagi potensial di sisi Rx untuk mengubah 5V menjadi 3,3V. Resistor 10k dan resistor 22k mengubah sinyal 5V dari pin Arduino Tx ke 3.3V sebelum mencapai pin Rx dari FPS. Sensor juga dapat didukung oleh 3.3V tetapi pastikan Arduino Anda dapat memperoleh arus yang cukup untuk sensor. Kami telah menghubungkan LCD dalam mode 4-bit yang didukung oleh pin 5V Arduino. Sebuah tombol tekan terhubung ke pin D2 yang ketika ditekan akan menempatkan program dalam mode pendaftaran di mana pengguna dapat mendaftarkan jari baru. Setelah mendaftar, program akan tetap dalam mode pemindaian untuk memindai jari mana pun yang menyentuh sensor.
Arduino dengan GT511C3
Seperti yang disebutkan sebelumnya, GT511C3 FPS berkomunikasi melalui komunikasi serial, sensor memahami kode hex dan untuk setiap kode hex operasi tertentu dilakukan. Anda dapat memeriksa lembar data untuk mengetahui semua nilai hex dan fungsinya yang sesuai jika Anda tertarik. Tapi, beruntung bagi kami bboyho sudah membuat library yang bisa digunakan langsung dengan Arduino untuk Mendaftar dan mendeteksi sidik jari. Perpustakaan Github untuk GT511C3 FPS dapat diunduh dari tautan di bawah ini
GT511C3 Arduino Library
Tautan akan mengunduh file ZIP, Anda kemudian harus menambahkannya ke Arduino IDE Anda dengan mengikuti perintah Sketch -> Include Library -> Add.ZIP Library. Setelah Anda menambahkan perpustakaan, restart IDE Anda dan Anda akan dapat menemukan program contoh untuk GT511C3 FSP di bawah File -> Contoh -> Fingerprint Scanner TTL seperti yang ditunjukkan di bawah ini
Anda akan melihat empat program contoh, program kedip akan berkedip dengan led biru pada FPS, program register dan ID jari dapat digunakan untuk mendaftar dan mengidentifikasi jari yang sesuai. Perhatikan bahwa jari yang pernah didaftarkan akan selalu diingat oleh modul meskipun dimatikan.
Program Serial Pass-through dapat diunggah ke Arduino menggunakan aplikasi Demo_SDK.exe yang telah kita bahas sebelumnya di artikel ini. Untuk menghapus template sidik jari atau untuk menyimpan salinan di komputer Anda aplikasi SDK ini dapat digunakan.
Pemrograman Arduino untuk Sensor Sidik Jari GT511C3
Tujuan kami di sini adalah untuk menulis program yang akan mendaftarkan jari ketika tombol ditekan dan menampilkan nomor ID dari jari yang sudah terdaftar. Kami juga harus dapat menampilkan semua informasi pada LCD untuk memungkinkan proyek menjadi proyek yang berdiri sendiri. The kode lengkap untuk melakukan hal yang sama adalah memberikan di bagian bawah halaman ini. Di sini saya memecah yang sama menjadi potongan-potongan kecil untuk membantu Anda lebih memahami.
Seperti biasa, kami memulai program dengan memasukkan pustaka yang diperlukan, di sini kami memerlukan pustaka FPS_GT511C3 untuk modul FPS kami, serial perangkat lunak untuk menggunakan D4 dan D5 pada komunikasi serial dan kristal cair untuk antarmuka LCD. Kemudian kita perlu menyebutkan ke pin mana FPS dan LCD terhubung. Jika Anda telah mengikuti diagram rangkaian seperti itu maka itu adalah 4 dan 5 untuk FPS dan D6 ke D11 untuk LCD. Kode yang sama ditunjukkan di bawah ini
#include "FPS_GT511C3.h" // Dapatkan perpustakaan dari https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Perpustakaan serial perangkat lunak #include
Di dalam fungsi pengaturan , kami menampilkan beberapa pesan pengantar pada LCD dan kemudian menginisialisasi modul FPS. Perintah fps.SetLED (true) akan menyalakan LED biru pada sensor, Anda dapat mematikannya dengan fps.SetLED (false) jika tidak diperlukan karena akan memanaskan sensor jika dibiarkan terus menerus. Kami juga telah menjadikan pin D2 sebagai pin input dan menghubungkannya ke resistor pull-up internal sehingga dapat menghubungkan tombol push ke pin.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Inisialisasi 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Baris Pesan Intro 1 lcd.setCursor (0, 1); lcd.print ("dengan Arduino"); // Intro Message line 2 delay (2000); lcd.clear (); fps.Open (); // kirim perintah serial untuk menginisialisasi fp fps.SetLED (true); // nyalakan LED agar fps dapat melihat fingerprint pinMode (2, INPUT_PULLUP); // Hubungkan ke resistor pull up internal sebagai pin input }
Di dalam fungsi void loop kita harus memeriksa apakah tombolnya ditekan, jika ditekan kita akan mendaftarkan jari baru dan menyimpan templatnya dengan nomor ID dengan menggunakan fungsi register. Jika tidak kita akan tetap menunggu jari yang akan ditekan di dalam sensor. Jika ditekan, kami akan mengidentifikasi sidik jari dengan membandingkannya dengan semua templat sidik jari terdaftar menggunakan metode 1: N. Setelah nomor ID ditemukan, kami akan menampilkan selamat datang diikuti dengan nomor ID. Jika sidik jari tidak cocok dengan jari mana pun yang terdaftar, jumlah id akan menjadi 200, dalam hal ini kami akan menampilkan selamat datang tidak diketahui.
if (digitalRead (2)) // Jika tombol ditekan { Enroll (); // Daftarkan sidik jari } // Identifikasi pengujian sidik jari jika (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Selamat Datang:"); if (id == 200) lcd.print ("Tidak Diketahui"); // Jika tidak dikenali lcd.print (id); penundaan (1000); }
Fungsi mendaftarkan harus mengambil tiga masukan sampel untuk berhasil mendaftarkan satu jari. Setelah didaftarkan, templat untuk jari tertentu itu akan dibuat yang tidak akan dihapus kecuali pengguna memaksanya melalui perintah HEX. Kode untuk mendaftarkan jari ditunjukkan di bawah ini. Metode IsPressFinger digunakan untuk memeriksa apakah jari terdeteksi, jika ya maka gambar diambil menggunakan CaptureFinger dan akhirnya Enroll1, Enroll2, dan Enroll3 digunakan untuk tiga sampel berbeda agar berhasil mendaftarkan satu jari. LCD menampilkan nomor ID jari jika berhasil didaftarkan, jika tidak maka akan menampilkan pesan kegagalan dengan kode. Kode 1 berarti sidik jari tidak ditangkap dengan jelas dan karenanya Anda harus mencoba lagi. Kode 2 adalah indikasi kegagalan memori dan kode 3 untuk menunjukkan bahwa jari telah didaftarkan.
void Enroll () // Fungsi daftar dari library exmaple program { int registerid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (terdaftar); if (usedid == true) registerid ++; } fps.EnrollStart (terdaftar); // daftarkan lcd.print ("Daftar #"); lcd.print (terdaftar); sementara (fps.IsPressFinger () == false) penundaan (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Hapus jari"); fps.Enroll1 (); sementara (fps.IsPressFinger () == true) penundaan (100); lcd.clear (); lcd.print ("Tekan lagi"); sementara (fps.IsPressFinger () == false) penundaan (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Hapus jari"); fps.Enroll2 (); sementara (fps.IsPressFinger () == true) penundaan (100); lcd.clear (); lcd.print ("Tekan lagi"); sementara (fps.IsPressFinger () == false) penundaan (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Hapus jari"); iret = fps.Enroll3 (); jika (iret == 0) { lcd.clear (); lcd.print ("Mendaftar Sukses"); } lain { lcd.clear (); lcd.print ("Pendaftaran Gagal:"); lcd.print (iret); } } else lcd.print ("Gagal 1"); } else lcd.print ("Gagal 2"); } else lcd.print ("Gagal 3"); }
Bekerja dari Sensor Finger Print GT511C3 dengan Arduino
Sekarang perangkat keras dan kode kita sudah siap, sekarang saatnya untuk menguji proyek kita. Unggah kode ke Arduino dan nyalakan, saya hanya menggunakan port micro-usb untuk menyalakan proyek. Saat booting kita akan melihat pesan intro pada LCD dan kemudian akan menampilkan “Hi!..”. Ini berarti bahwa FPS siap untuk memindai jari, jika ada jari yang didaftarkan ditekan akan mengatakan “Selamat Datang” diikuti dengan nomor ID dari jari tersebut seperti yang ditunjukkan di bawah ini.
Jika jari baru harus didaftarkan maka kita dapat menggunakan tombol tekan untuk masuk ke mode mendaftar dan mengikuti instruksi LCD untuk mendaftarkan jari. Setelah proses pendaftaran selesai LCD akan menampilkan "Hai!.." lagi untuk menunjukkan bahwa ini dibaca untuk mengidentifikasi jari lagi. Pekerjaan lengkap dapat ditemukan di video yang ditautkan di bawah ini.
Dari sini Anda dapat mengembangkan banyak hal menarik di atas menggunakan modul sensor Finger Print. Harap Anda memahami tutorial dan menikmati membangun sesuatu yang bermanfaat, jika Anda memiliki pertanyaan tinggalkan di bagian komentar atau gunakan forum untuk pertanyaan teknis lainnya.