- Komponen yang Diperlukan
- Diagram Sirkuit dan Penjelasannya
- Pengoperasian Sensor Sidik Jari dengan Mikrokontroler PIC
- Penjelasan Pemrograman
Finger Print Sensor, yang biasa kita lihat di film Sci-Fi beberapa tahun yang lalu, sekarang menjadi sangat umum untuk memverifikasi identitas seseorang untuk berbagai tujuan. Saat ini kita dapat melihat sistem berbasis sidik jari di mana-mana dalam kehidupan sehari-hari kita seperti untuk kehadiran di kantor, verifikasi karyawan di bank, untuk penarikan tunai atau setoran di ATM, untuk verifikasi identitas di kantor pemerintah dll. Kami sudah menghubungkannya dengan Arduino dan Dengan Raspberry Pi, hari ini kita akan menghubungkan Finger Print Sensor dengan mikrokontroler PIC. Dengan menggunakan mikrokontroler PIC PIC16f877A Finger Print System ini, kita dapat mendaftarkan sidik jari baru ke dalam sistem dan dapat menghapus sidik jari yang sudah dimasukkan. Kerja lengkap dari sistem telah ditunjukkan di Video diberikan di akhir artikel.
Komponen yang Diperlukan
- Mikrokontroler PIC16f877A
- Modul Sidik Jari
- Tombol tekan atau keypad
- LCD 16x2
- 10k pot
- Osilator Kristal 18,432000 MHz
- Bread Board atau PCB (dipesan dari JLCPCB)
- Kabel jumper
- LED (opsional)
- Resistor 150 ohm -1 k ohm (opsional)
- Catu daya 5v
Diagram Sirkuit dan Penjelasannya
Dalam proyek antarmuka sensor Finger Print Mikrokontroler PIC ini, kami telah menggunakan 4 tombol push: tombol-tombol ini digunakan untuk multifungsi. Tombol 1 digunakan untuk mencocokkan sidik jari dan menambah ID sidik jari saat menyimpan atau menghapus sidik jari di dalam sistem. Kunci 2 digunakan untuk mendaftarkan sidik jari baru dan untuk mengurangi ID sidik jari saat menyimpan atau menghapus sidik jari di dalam sistem. Tombol 3 digunakan untuk menghapus jari yang disimpan dari sistem dan tombol 4 digunakan untuk OK. Sebuah LED digunakan untuk indikasi bahwa sidik jari terdeteksi atau cocok. Di sini kami telah menggunakan modul sidik jari yang berfungsi pada UART. Jadi di sini kita telah menghubungkan modul sidik jari ini dengan mikrokontroler PIC pada baud rate defaultnya yaitu 57600.
Jadi, pertama-tama, kita perlu membuat semua koneksi yang diperlukan seperti yang ditunjukkan pada Diagram Sirkuit di bawah ini. Koneksi sederhana, kami baru saja menghubungkan modul sidik jari ke UART mikrokontroler PIC. LCD 16x2 digunakan untuk menampilkan semua pesan. Pot 10k juga digunakan dengan LCD untuk mengontrol kontras yang sama. Pin data LCD 16x2 dihubungkan dengan pin PORTA. Pin LCD d4, d5, d6, dan d7 masing-masing dihubungkan dengan Pin RA0, RA1, RA2, dan RA3 dari mikrokontroler PIC. Empat tombol tekan (atau keypad) dihubungkan ke Pin RD0, RD1, RD2, dan RD PORTD. LED juga terhubung pada pin RC3 port PORTC. Di sini kami telah menggunakan osilator kristal eksternal 18,432000 MHz untuk mengatur jam mikrokontroler.
Pengoperasian Sensor Sidik Jari dengan Mikrokontroler PIC
Pengoperasian proyek ini sederhana, cukup unggah file hex, yang dihasilkan dari kode sumber, ke mikrokontroler PIC dengan bantuan programmer atau pembakar PIC (PIckit2 atau Pickit3 atau lainnya) dan kemudian Anda akan melihat beberapa pesan intro melalui LCD dan kemudian pengguna akan diminta untuk memasukkan pilihan operasi. Untuk mencocokkan sidik jari pengguna perlu menekan tombol 1 kemudian LCD akan meminta Letakkan Jari pada Sensor Sidik Jari. Nah dengan meletakkan jari di atas modul sidik jari, kita bisa mengecek apakah sidik jari kita sudah tersimpan atau belum. Jika sidik jari Anda disimpan maka LCD akan menampilkan pesan dengan ID penyimpanan sidik jari seperti ' ID: 2' jika tidak maka akan muncul 'Not Found' .
Sekarang untuk mendaftarkan sidik jari , pengguna perlu menekan tombol register atau tombol 2 dan mengikuti pesan instruksi pada layar LCD.
Jika pengguna ingin menghapus salah satu sidik jari maka pengguna perlu menekan tombol delete atau tombol 3. Setelah itu LCD akan meminta ID dari sidik jari yang akan dihapus. Sekarang dengan menggunakan tombol tekan tambahan atau tombol 1 (cocokkan tombol tekan atau tombol 1) dan tombol tekan penurunan atau tombol 2 (daftarkan tombol tekan atau tombol 2) untuk kenaikan dan penurunan, pengguna dapat memilih ID dari Sidik Jari yang disimpan dan tekan OK tombol untuk menghapus sidik jari itu. Untuk pemahaman lebih lanjut, lihat video yang diberikan di akhir proyek.
Antarmuka FingerPrint Catatan: Program proyek ini agak rumit untuk pemula. Tetapi kode interfacingnya yang sederhana dibuat dengan menggunakan datasheet modul sidik jari r305. Semua instruksi tentang fungsi modul sidik jari ini diberikan dalam lembar data.
Di sini kami telah menggunakan format bingkai untuk berbicara dengan modul sidik jari. Setiap kali kita mengirim perintah atau bingkai permintaan data ke modul sidik jari, ia menanggapi kita dengan format bingkai yang sama yang berisi data atau informasi terkait dengan perintah yang diterapkan. Semua data dan format bingkai perintah telah diberikan di manual pengguna atau di lembar data modul sidik jari R305.
Penjelasan Pemrograman
Dalam pemrograman, kami telah menggunakan format bingkai di bawah ini.
Kami memulai program dengan mengatur bit konfigurasi dan menentukan makro dan pin untuk LCD, Tombol dan LED, yang dapat Anda periksa di kode lengkap yang diberikan di akhir proyek ini. Jika Anda baru mengenal Mikrokontroler PIC, mulailah dengan Memulai Proyek Mikrokontroler PIC.
Kemudian kita mendeklarasikan dan menginisialisasi beberapa variabel dan array, dan membuat frame yang akan kita gunakan dalam proyek ini untuk menghubungkan modul sidik jari dengan mikrokontroler PIC.
uchar buf; uchar buf1; indeks uint volatile = 0; bendera int volatile = 0; uint msCount = 0; uint g_timerflag = 1; jumlah uint yang mudah menguap = 0; data uchar; uint id = 1; enum { CMD, DATA, SBIT_CREN = 4, SBIT_TXEN, SBIT_SPEN, }; const char passPack = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x7, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1B}; const char f_detect = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x3, 0x1, 0x0, 0x5}; const char f_imz2ch1 = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x4, 0x2, 0x1, 0x0, 0x8}; const char f_imz2ch2 = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x4, 0x2, 0x2, 0x0, 0x9}; const char f_createModel = {0xEF, 0x1,0xFF, 0xFF, 0xFF, 0xFF, 0x1,0x0,0x3,0x5,0x0,0x9}; char f_storeModel = {0xEF, 0x1,0xFF, 0xFF, 0xFF, 0xFF, 0x1,0x0,0x6,0x6,0x1,0x0,0x1,0x0,0xE}; const char f_search = {0xEF, 0x1, 0xFF, 0xFF, 0xFF, 0xFF, 0x1, 0x0, 0x8, 0x1B, 0x1, 0x0, 0x0, 0x0, 0xA3, 0x0, 0xC8}; char f_delete = {0xEF, 0x1,0xFF, 0xFF, 0xFF, 0xFF, 0x1,0x0,0x7,0xC, 0x0,0x0,0x0,0x1,0x0,0x15};
Setelah itu dibuat fungsi LCD untuk menggerakkan LCD.
kekosongan lcdwrite (uchar ch, uchar rw) { LCDPORT = ch >> 4 & 0x0f; RS = rw; EN = 1; __delay_ms (5); EN = 0; LCDPORT = ch & 0x0F; EN = 1; __delay_ms (5); EN = 0; } Lcdprint (char * str) { while (* str) { lcdwrite (* str ++, DATA); // __ penundaan_ms (20); } } lcdbegin () { uchar lcdcmd = {0x02,0x28,0x0E, 0x06,0x01}; uint i = 0; untuk (i = 0; i <5; i ++) lcdwrite (lcdcmd, CMD); }
Fungsi yang diberikan digunakan untuk menginisialisasi UART
batal serialbegin (uint baudrate) { SPBRG = (18432000UL / (long) (64UL * baudrate)) - 1; // baud rate @ 18.432000Mhz Clock TXSTAbits.SYNC = 0; // Setting Asynchronous Mode, yaitu UART RCSTAbits.SPEN = 1; // Mengaktifkan Port Serial TRISC7 = 1; // Seperti yang Diresepkan dalam Lembar Data TRISC6 = 0; // Seperti Yang Ditetapkan dalam Lembar Data RCSTAbits.CREN = 1; // Mengaktifkan Penerimaan Berkelanjutan TXSTAbits.TXEN = 1; // Mengaktifkan Transmisi GIE = 1; // AKTIFKAN interupsi INTCONbits.PEIE = 1; // Aktifkan gangguan periferal. PIE1bits.RCIE = 1; // AKTIFKAN USART menerima PIE1bits.TXIE = 0 interupsi ; // nonaktifkan USART TX interrupt PIR1bits.RCIF = 0; }
Fungsi yang diberikan digunakan untuk mentransfer perintah ke modul sidik jari dan menerima data dari modul sidik jari.
void serialwrite (char ch) { while (TXIF == 0); // Tunggu hingga register pemancar menjadi kosong TXIF = 0; // Hapus bendera pemancar TXREG = ch; // muat karakter yang akan dikirim ke reg transmisi } serialprint (char * str) { while (* str) { serialwrite (* str ++); } } void mengganggu SerialRxPinInterrupt (void) { if ((PIR1bits.RCIF == 1) && (PIE1bits.RCIE == 1)) { uchar ch = RCREG; buf = ch; jika (indeks> 0) bendera = 1; RCIF = 0; // hapus bendera rx } } void serialFlush () { untuk (int i = 0; i
Setelah itu kita perlu membuat fungsi yang menyiapkan data yang akan dikirim ke sidik jari dan mendekode data yang berasal dari modul sidik jari.
int sendcmd2fp (char * pack, int len) { uint res = ERROR; serialFlush (); indeks = 0; __delay_ms (100); untuk (int i = 0; i
Sekarang, ada empat fungsi yang tersedia dalam kode untuk empat tugas berbeda:
- Fungsi untuk memasukkan ID sidik jari - unit getId ()
- Fungsi untuk mencocokkan jari - void matchFinger ()
- Fungsi untuk mendaftarkan jari baru - void enrolFinger ()
- Fungsi untuk menghapus jari - batal deleteFinger ()
Kode lengkap dengan keempat fungsi diberikan di bagian akhir.
Sekarang di fungsi utama, kita menginisialisasi GPIO, LCD, UART dan memeriksa apakah modul sidik jari terhubung dengan mikrokontroler atau tidak. Kemudian itu menunjukkan beberapa pesan intro melalui LCD. Akhirnya di while loop kita membaca semua tombol atau tombol tekan untuk mengoperasikan proyek.
int main () { void (* FP) (); ADCON1 = 0b00000110; LEDdir = 0; SWPORTdir = 0xF0; SWPORT = 0x0F; serialbegin (57600); LCDPORTDIR = 0x00; TRISE = 0; lcdbegin (); lcdprint ("Sidik Jari"); lcdwrite (192, CMD); lcdprint ("Antarmuka"); __delay_ms (2000); lcdwrite (1, CMD); lcdprint ("Menggunakan PIC16F877A"); lcdwrite (192, CMD); lcdprint ("Circuit Digest"); __delay_ms (2000); indeks = 0; while (sendcmd2fp (& passPack, sizeof (passPack))) { lcdwrite (1, CMD); lcdprint ("FP Tidak Ditemukan"); __delay_ms (2000); indeks = 0; } lcdwrite (1, CMD); lcdprint ("FP Ditemukan"); __delay_ms (1000); lcdinst (); sementara (1) { FP = cocok
Kode PIC Lengkap dan Video Kerja diberikan di bawah ini. Juga periksa proyek kami yang lain menggunakan Modul Sensor Cetak Jari:
- Mesin Voting Biometrik Berbasis Sidik Jari menggunakan Arduino
- Sistem Keamanan Biometrik menggunakan Arduino dan Sensor Sidik Jari
- Sistem Absensi Biometrik Berbasis Sidik Jari menggunakan Arduino
- Antarmuka Sensor Sidik Jari dengan Raspberry Pi