- Komponen yang Diperlukan
- Rajah dan Penjelasan Litar
- Pengoperasian Sensor Jari Jari dengan PIC Microcontroller
- Penjelasan Pengaturcaraan
Sensor Cetak Jari, yang biasa kita lihat dalam filem Sci-Fi beberapa tahun yang lalu, kini menjadi sangat umum untuk mengesahkan identiti seseorang untuk pelbagai tujuan. Pada masa sekarang kita dapat melihat sistem berasaskan cap jari di mana-mana dalam kehidupan seharian kita seperti kehadiran di pejabat, pengesahan pekerja di bank, untuk pengeluaran tunai atau deposit di ATM, untuk pengesahan identiti di pejabat kerajaan dll. Kami telah menghubungkannya dengan Arduino dan dengan Raspberry Pi, hari ini kita akan menghubungkan Finger Print Sensor dengan mikrokontroler PIC. Dengan menggunakan Sistem Cetakan Jari PIC16f877A mikrokontroler PIC ini, kita dapat mendaftarkan cap jari baru di dalam sistem dan dapat menghapus cap jari yang sudah diberi makan. Kerja sistem yang lengkap telah ditunjukkan dalam Video diberikan pada akhir artikel.
Komponen yang Diperlukan
- PIC16f877A Mikrokontroler
- Modul Cap Jari
- Tekan butang atau pad kekunci
- LCD 16x2
- 10k periuk
- 18.432000 MHz Crystal Oscillator
- Roti Papan atau PCB (dipesan dari JLCPCB)
- Wayar pelompat
- LED (pilihan)
- Perintang 150 ohm -1 k ohm (pilihan)
- 5v Bekalan kuasa
Rajah dan Penjelasan Litar
Dalam projek penghubung sensor PIC Microcontroller Finger Print ini, kami telah menggunakan 4 butang tekan: butang ini digunakan untuk pelbagai fungsi. Kunci 1 digunakan untuk mencocokkan cap jari dan kenaikan ID cap jari semasa menyimpan atau menghapus cap jari dalam sistem. Kunci 2 digunakan untuk mendaftarkan cap jari baru dan untuk mengurangkan ID cap jari sambil menyimpan atau menghapus cap jari dalam sistem. Kekunci 3 digunakan untuk memadam jari yang disimpan dari sistem dan kunci 4 digunakan untuk OK. A LED digunakan untuk petunjuk bahawa cap jari dikesan atau dipadankan. Di sini kami telah menggunakan modul cap jari yang berfungsi di UART. Jadi di sini kami telah menghubungkan modul cap jari ini dengan mikrokontroler PIC pada kadar baud lalai iaitu 57600.
Oleh itu, pertama sekali, kita perlu membuat semua sambungan yang diperlukan seperti yang ditunjukkan dalam Litar Diagram di bawah. Sambungannya mudah, kami baru saja menghubungkan modul cap jari ke UART mikrokontroler PIC. LCD 16x2 digunakan untuk memaparkan semua mesej. Pot 10k juga digunakan dengan LCD untuk mengawal kontras yang sama. Pin data LCD 16x2 adalah pin PORTA yang disambungkan. Pin d4, d5, d6, dan d7 LCD masing-masing dihubungkan dengan mikrokontroler Pin RA0, RA1, RA2, dan RA3 dari PIC. Empat butang tekan (atau pad kekunci) disambungkan ke Pin RD0, RD1, RD2, dan RD PORTD. LED juga disambungkan pada pin RC3 port PORTC. Di sini kami telah menggunakan pengayun kristal luaran 18.432000 MHz untuk mengawal mikrokontroler.
Pengoperasian Sensor Jari Jari dengan PIC Microcontroller
Operasi projek ini mudah, muat naik fail hex, dihasilkan dari kod sumber, ke dalam mikrokontroler PIC dengan bantuan pengaturcara PIC atau pembakar (PIckit2 atau Pickit3 atau yang lain) dan kemudian anda akan melihat beberapa mesej pengenalan melalui LCD dan kemudian pengguna akan diminta memasukkan pilihan untuk operasi. Untuk memadankan cap jari pengguna perlu menekan kekunci 1 maka LCD akan meminta Place Finger on Finger Print Sensor. Sekarang dengan meletakkan modul cap jari di atas jari, kita dapat memeriksa sama ada cap jari kita sudah disimpan atau tidak. Sekiranya cap jari anda disimpan, maka LCD akan menunjukkan mesej dengan ID penyimpanan cap jari seperti ' ID: 2' jika tidak, ia akan menunjukkan 'Tidak Ditemui' .
Sekarang untuk mendaftarkan Cetakan jari , pengguna perlu menekan butang mendaftar atau kekunci 2 dan mengikuti mesej arahan pada skrin LCD.
Sekiranya pengguna ingin menghapus sebarang cap jari maka pengguna perlu menekan butang atau kekunci hapus 3. Setelah itu, LCD akan meminta ID cap jari yang akan dihapus. Sekarang dengan menggunakan butang penambah kenaikan atau kekunci 1 (butang tekan padanan atau kekunci 1) dan butang tolak atau kunci 2 (tekan butang tekan atau kunci 2) untuk kenaikan dan penurunan, pengguna dapat memilih ID Cetakan Jari yang disimpan dan tekan OK butang untuk memadamkan cap jari itu. Untuk pemahaman lebih lanjut, lihat video yang diberikan pada akhir projek.
FingerPrint interfacing Catatan: Program projek ini agak rumit untuk pemula. Tetapi kod antaramuka yang mudah dibuat dengan menggunakan lembar data modul cap jari r305. Semua arahan fungsi modul cap jari ini diberikan dalam lembar data.
Di sini kami telah menggunakan format bingkai untuk bercakap dengan modul cap jari. Setiap kali kami menghantar perintah atau bingkai permintaan data ke modul sidik jari, kami memberikan respons dengan format bingkai yang sama yang berisi data atau maklumat yang berkaitan dengan perintah yang diterapkan. Semua format data dan kerangka perintah telah diberikan dalam manual pengguna atau dalam lembar data modul cap jari R305.
Penjelasan Pengaturcaraan
Dalam pengaturcaraan, kami telah menggunakan format bingkai di bawah.
Kami memulakan program dengan menetapkan bit konfigurasi dan menentukan makro dan pin untuk LCD, Tombol dan LED, yang boleh anda periksa dalam kod lengkap yang diberikan pada akhir projek ini. Sekiranya anda baru menggunakan PIC Microcontroller, mulailah dengan Bermula dengan PIC Microcontroller Project.
Kemudian kami menyatakan dan menginisialisasi beberapa pemboleh ubah dan susunan, dan membuat bingkai yang perlu kami gunakan dalam projek ini untuk menghubungkan modul cap jari dengan mikrokontroler PIC.
uchar buf; uchar buf1; indeks uint tidak menentu = 0; bendera int yang tidak menentu = 0; uint msCount = 0; uint g_timerflag = 1; kiraan uint tidak menentu = 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};
Selepas itu, kami telah menjadikan fungsi LCD untuk menggerakkan LCD.
batal 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) { sambil (* str) { lcdwrite (* str ++, DATA); // __ kelewatan_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 memulakan UART
batal serialbegin (uint baudrate) { SPBRG = (18432000UL / (panjang) (64UL * baudrate)) - 1; // kadar baud @ Jam Jam 18.432000Mhz TXSTAbits.SYNC = 0; // Menetapkan Mod Asinkron , iaitu UART RCSTAbits.SPEN = 1; // Membolehkan Port Serial TRISC7 = 1; // Seperti yang ditentukan dalam Lembar Data TRISC6 = 0; // Seperti yang Ditentukan dalam Lembar Data RCSTAbits.CREN = 1; // Membolehkan Penerimaan Berterusan TXSTAbits.TXEN = 1; // Membolehkan Transmisi GIE = 1; // ENABLE mengganggu INTCONbits.PEIE = 1; // Aktifkan gangguan periferal. PIE1bits.RCIE = 1; // ENABLE USART terima gangguan PIE1bits.TXIE = 0; // lumpuhkan USART TX mengganggu PIR1bits.RCIF = 0; }
Fungsi yang diberikan digunakan untuk mentransfer perintah ke modul sidik jari dan menerima data dari modul sidik jari.
batal serialwrite (char ch) { while (TXIF == 0); // Tunggu sehingga daftar pemancar menjadi TXIF kosong = 0; // Bendera pemancar yang jelas TXREG = ch; // muatkan char yang akan dihantar ke transmit reg } serialprint (char * str) { while (* str) { serialwrite (* str ++); } } batal 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 } } batal serialFlush () { untuk (int i = 0; i
Setelah itu kita perlu membuat fungsi yang menyiapkan data yang akan dikirimkan ke sidik jari dan menyahkod data yang berasal dari modul cap jari.
int sendcmd2fp (char * pack, int len) { uint res = KESALAHAN; bersiriFlush (); indeks = 0; __delay_ms (100); untuk (int i = 0; i
Sekarang, terdapat empat fungsi yang terdapat dalam kod untuk empat tugas yang berbeza:
- Fungsi untuk memasukkan ID cap jari - unit getId ()
- Fungsi untuk memadankan jari - kekosongan yang tidak betul
- Fungsi untuk mendaftarkan jari baru - batal enrolFinger ()
- Fungsi untuk menghapus jari - batal deleteFinger ()
Kod lengkap dengan keempat fungsi tersebut diberikan pada akhir.
Sekarang dalam fungsi utama, kami menginisialisasi GPIO, LCD, UART dan memeriksa sama ada modul cap jari dihubungkan dengan mikrokontroler atau tidak. Kemudian ia menunjukkan beberapa mesej intro melalui LCD. Akhirnya dalam loop sementara kami membaca semua kekunci atau butang tekan untuk mengendalikan projek.
int utama () { tidak sah (* FP) (); ADCON1 = 0b00000110; LEDdir = 0; SWPORTdir = 0xF0; SWPORT = 0x0F; siribegin (57600); LCDPORTDIR = 0x00; TRISE = 0; lcdbegin (); lcdprint ("Cap Jari"); lcdwrite (192, CMD); lcdprint ("Interfacing"); __delay_ms (2000); lcdwrite (1, CMD); lcdprint ("Menggunakan PIC16F877A"); lcdwrite (192, CMD); lcdprint ("Litar Digest"); __delay_ms (2000); indeks = 0; sementara (sendcmd2fp (& passPack, sizeof (passPack))) { lcdwrite (1, CMD); lcdprint ("FP Tidak Ditemui"); __delay_ms (2000); indeks = 0; } lcdwrite (1, CMD); lcdprint ("FP Ditemui"); __delay_ms (1000); lcdinst (); sementara (1) { FP = padanan
Kod PIC yang lengkap dan Video Kerja diberikan di bawah. Periksa juga projek kami yang lain menggunakan Modul Sensor Cetak Jari:
- Mesin Pengundian Biometrik Berasaskan Jari menggunakan Arduino
- Sistem Keselamatan Biometrik menggunakan Arduino dan Fingerprint Sensor
- Sistem Kehadiran Biometrik Berasaskan Jari menggunakan Arduino
- Sensor Cap Jari Berinteraksi dengan Raspberry Pi