- Komponen yang Diperlukan
- Deskripsi Proyek:
- Modul FingerPrint:
- Pengerjaan Sistem Absensi Berbasis Sidik Jari
- Diagram Sirkuit dan Deskripsi Proyek Sistem Absensi Sidik Jari
- Penjelasan Kode:
Sistem absensi merupakan sistem yang biasa digunakan untuk menandai kehadiran di kantor dan sekolah. Dari menandai kehadiran dalam daftar hadir secara manual hingga menggunakan aplikasi teknologi tinggi dan sistem biometrik, sistem ini telah meningkat secara signifikan. Dalam proyek kami sebelumnya, kami telah membahas beberapa proyek sistem absensi elektronik lainnya menggunakan mikrokontroler RFID dan AVR, 8051 dan raspberry Pi. Dalam proyek ini, kami menggunakan Modul Sidik Jari dan Arduino untuk mengambil dan menyimpan data dan pencatatan kehadiran. Dengan menggunakan sensor sidik jari, sistem menjadi lebih aman bagi pengguna. Bagian berikut menjelaskan detail teknis pembuatan sistem absensi biometrik berbasis sidik jari menggunakan Arduino.
Komponen yang Diperlukan
- Arduino -1
- Modul sidik jari -1
- Tombol Tekan - 4
- LED -1
- Resistor 1K -2
- 2.2K resistor -1
- Kekuasaan
- Menghubungkan kabel
- Kotak
- Buzzer -1
- LCD 16x2 -1
- Papan Roti -1
- Modul RTC -1
Deskripsi Proyek:
Pada rangkaian sistem absensi sidik jari ini, kami menggunakan modul Sensor Sidik Jariuntuk mengotentikasi orang atau karyawan sejati dengan memasukkan input jari mereka ke dalam sistem. Di sini kami menggunakan 4 tombol tekan untuk mendaftar, Hapus, Atas / Bawah. ENROLL dan tombol DEL memiliki tiga fitur. Kunci MENDAFTAR digunakan untuk pendaftaran orang baru ke dalam sistem. Jadi ketika pengguna ingin meregistrasi jari baru maka dia perlu menekan tombol ENROLL kemudian LCD menanyakan ID dimana pengguna ingin menyimpan gambar sidik jari tersebut. Sekarang jika saat ini pengguna tidak ingin melanjutkan lebih jauh maka dia dapat menekan tombol ENROLL lagi untuk kembali. Kali ini tombol ENROLL berfungsi sebagai tombol Kembali, artinya tombol ENROLL memiliki fungsi pendaftaran dan kembali. Selain itu, kunci pendaftaran juga digunakan untuk mengunduh data kehadiran melalui monitor serial. Demikian pula, tombol DEL / OK juga memiliki fungsi ganda yang sama seperti saat pengguna meregister jari baru,kemudian dia harus memilih ID jari dengan menggunakan dua tombol lain yaitu ATAS dan BAWAH. Sekarang pengguna perlu menekan tombol DEL / OK (kali ini tombol ini berperilaku seperti OK) untuk melanjutkan dengan ID yang dipilih. Dan kunci Del digunakan untuk mereset atau menghapus data dari EEPROM Arduino.
Modul FingerPrint:
Modul sensor sidik jari menangkap gambar sidik jari dan kemudian mengubahnya menjadi templat yang setara dan menyimpannya ke dalam memori sesuai ID yang dipilih oleh Arduino. Semua proses diperintahkan oleh Arduino seperti mengambil gambar sidik jari, mengubahnya menjadi template dan menyimpannya sebagai ID dll. Anda dapat memeriksa beberapa proyek lagi menggunakan modul sidik jari:
Sistem keamanan berbasis sidik jari
Mesin pemungutan suara biometrik berbasis sidik jari
Di sini kami telah menambahkan LED Kuning yang menunjukkan bahwa modul sidik jari siap mengambil gambar jari. Bel juga digunakan untuk berbagai indikasi. Arduino adalah komponen utama dari sistem ini yang bertanggung jawab untuk mengontrol seluruh sistem.
Pengerjaan Sistem Absensi Berbasis Sidik Jari
Pengerjaan proyek sistem absensi sidik jari inicukup sederhana. Pertama-tama, pengguna perlu mendaftarkan sidik jari pengguna dengan bantuan tombol tekan. Untuk melakukan ini, pengguna perlu menekan tombol ENROLL dan kemudian LCD meminta memasukkan ID untuk sidik jari untuk menyimpannya di memori dengan nama ID. Jadi sekarang pengguna perlu memasukkan ID dengan menggunakan tombol ATAS / BAWAH. Setelah memilih ID, pengguna perlu menekan tombol OK (tombol DEL). Sekarang LCD akan meminta untuk meletakkan jari di atas modul sidik jari. Sekarang pengguna perlu meletakkan jarinya di atas modul sidik jari dan kemudian modul tersebut mengambil gambar jari. Sekarang LCD akan mengatakan untuk melepaskan jari dari modul sidik jari, dan sekali lagi meminta untuk menempatkan jari lagi. Sekarang pengguna perlu meletakkan jarinya lagi dan modul mengambil gambar dan mengubahnya menjadi template dan menyimpannya dengan ID yang dipilih ke dalam memori modul sidik jari.Sekarang pengguna akan terdaftar dan dia dapat memberi makan kehadiran dengan meletakkan jari mereka di atas modul sidik jari. Dengan metode yang sama, semua pengguna akan terdaftar ke dalam sistem.
Sekarang jika pengguna ingin menghapus atau menghapus salah satu ID atau sidik jari yang disimpan, maka dia perlu menekan tombol DEL. Setelah tombol hapus ditekan, LCD akan meminta untuk memilih ID yang perlu dihapus. Sekarang pengguna perlu memilih ID dan tekan tombol OK (tombol DEL yang sama). Sekarang LCD akan memberi tahu Anda bahwa sidik jari telah berhasil dihapus.
Bagaimana Kehadiran bekerja dalam Proyek Sistem Absensi Sidik Jari ini:
Setiap kali pengguna meletakkan jarinya di atas modul sidik jari, modul sidik jari menangkap gambar jari, dan mencari apakah ada ID yang terkait dengan sidik jari ini di dalam sistem. Jika ID sidik jari terdeteksi maka LCD akan menunjukkan Kehadiran terdaftar dan pada saat yang sama buzzer akan berbunyi bip sekali dan LED akan mati hingga sistem siap untuk menerima input lagi.
Bersama modul sidik jari, kami juga menggunakan modul RTC untuk Waktu dan tanggal. Waktu dan tanggal terus berjalan di dalam sistem. Jadi Arduino meluangkan waktu dan tanggal setiap kali pengguna sejati meletakkan jarinya di atas sidik jari dan menyimpannya di EEPROM pada slot memori yang dialokasikan.
Di sini kami telah membuat 5 ruang pengguna di sistem ini selama 30 hari. Dengan menekan tombol RESET di Arduino dan kemudian segera register key akan bertanggung jawab untuk mendownload data absensi melalui serial monitor dari Arduino EEPROM Memory.
Manajemen memori:
Kami memiliki memori 1023 byte di Arduino UNO di mana kami memiliki 1018 byte untuk menyimpan data dan kami telah mengambil 5 data kehadiran pengguna selama 30 hari. Dan setiap kehadiran akan mencatat waktu dan tanggal sehingga ini menjadi data berukuran 7 byte.
Jadi total memori yang dibutuhkan adalah
5 * 30 * 7 = 1050 jadi di sini kita membutuhkan lebih banyak 32 byte
Tetapi jika kami akan menggunakan 4 pengguna maka kami wajib
4 * 30 * 7 = 840
Di sini kami telah melakukan demonstrasi proyek ini dengan mengambil 5 memori pengguna. Dengan ini, kami tidak dapat menyimpan 32 byte atau 5 catatan kehadiran dari pengguna ke- 5.
Anda dapat mencobanya dengan 4 pengguna dengan mengubah beberapa baris dalam kode. Saya telah membuat komentar di kode di mana perubahan diperlukan.
Diagram Sirkuit dan Deskripsi Proyek Sistem Absensi Sidik Jari
Rangkaian proyek sistem absensi berbasis sidik jari ini, seperti terlihat pada diagram di atas cukup sederhana. Ini memiliki Arduino untuk mengontrol semua proses proyek, tombol tekan untuk mendaftar, menghapus, memilih ID dan untuk kehadiran, bel untuk peringatan, LED untuk indikasi dan LCD untuk menginstruksikan pengguna dan menampilkan pesan yang dihasilkan.
Seperti yang ditunjukkan pada diagram rangkaian, tombol tekan terhubung langsung ke pin A0 (ENROLL), A1 (DEL), A2 (ATAS), A3 (BAWAH) dari Arduino sehubungan dengan ground Dan LED Kuning terhubung ke pin Digital D7 dari Arduino sehubungan dengan ground melalui resistor 1k. Modul Sidik Jari Rx dan Tx langsung terhubung ke Serial pin D2 dan D3 (Software Serial) Arduino. Pasokan 5v digunakan untuk menyalakan modul sidik jari yang diambil dari papan Arduino. Sebuah bel juga dihubungkan pada pin A5. LCD 16x2 dikonfigurasi dalam mode 4-bit dan RS, EN, D4, D5, D6, dan D7-nya langsung terhubung ke pin Digital D13, D12, D11, D10, D9, dan D8 dari Arduino.
Penjelasan Kode:
The sistem absensi sidik jari kode untuk Arduino diberikan dalam bagian berikutnya. Meskipun kode dijelaskan dengan baik dengan komentar, di sini kita membahas beberapa bagian penting dari kode. Kami menggunakan perpustakaan sidik jari untuk menghubungkan modul sidik jari dengan papan Arduino.
Pertama-tama, kami menyertakan file header dan mendefinisikan pin input dan output dan menentukan variabel makro dan yang dideklarasikan. Setelah ini, dalam fungsi setup, kami memberikan arahan ke pin yang ditentukan dan memulai LCD dan modul sidik jari
Setelah itu kita harus menulis kode untuk mendownload data absensi.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (mendaftar, INPUT_PULLUP); pinMode (atas, INPUT_PULLUP); pinMode (bawah, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (cocok, INPUT_PULLUP); pinMode (buzzer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (buzzer, LOW); if (digitalRead (mendaftar) == 0) {digitalWrite (buzzer, HIGH); penundaan (500); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("Harap tunggu"); lcd.setCursor (0,1); lcd.print ("Data Downloding");
Setelah itu, kita harus menulis kode untuk menghapus data kehadiran dari EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Harap Tunggu"); lcd.setCursor (0,1); lcd.print ("Mengatur Ulang….."); untuk (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); untuk (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Penyetelan Ulang Sistem"); penundaan (1000); }
Setelah itu, kami memulai modul sidik jari, menampilkan pesan selamat datang melalui LCD dan juga modul RTC awal.
Setelah itu, dalam fungsi loop, kita telah membaca waktu RTC dan menampilkannya di LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Waktu->"); lcd.print (now.hour (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Tanggal->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Setelah itu, menunggu sidik jari mengambil input dan membandingkan ID gambar yang diambil dengan ID yang disimpan. Jika terjadi kecocokan, lanjutkan ke langkah berikutnya. Dan memeriksa kunci register del juga
int result = getFingerprintIDez (); if (hasil> 0) {digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); penundaan (100); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (hasil); lcd.setCursor (0,1); lcd.print ("Harap Tunggu…."); penundaan (1000); kehadiran (hasil); lcd.clear (); lcd.print ("Kehadiran"); lcd.setCursor (0,1); lcd.print ("Terdaftar"); penundaan (1000); digitalWrite (indFinger, HIGH); kembali; }
Diberikan void checkKeys () fungsi digunakan untuk memeriksa Enroll atau tombol DEL ditekan atau tidak dan apa yang harus dilakukan jika ditekan. Jika tombol ENROLL ditekan, fungsi Enroll () dipanggil dan tombol DEL ditekan maka fungsi delete () dipanggil.
void delet () berfungsi untuk memasukkan ID yang akan dihapus dan memanggil fungsi uint8_t deleteFingerprint (uint8_t id) yang akan menghapus jari dari record.
Diberikan Fungsi digunakan untuk mengambil gambar sidik jari dan mengubahnya menjadi template dan menyimpan juga dengan ID yang dipilih ke dalam memori modul sidik jari.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID jari:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Letakkan Jari"); penundaan (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Fungsi yang diberikan digunakan untuk menyimpan waktu dan tanggal kehadiran di slot EEPROM yang dialokasikan
batal hadir (int id) {int user = 0, eepLoc = 0; jika (id == 1) {eepLoc = 0; pengguna = pengguna1 ++; } lain jika (id == 2) {eepLoc = 210; pengguna = pengguna2 ++; } lain jika (id == 3)………….
Fungsi yang diberikan digunakan untuk mengambil data dari EEPROM dan mengirim ke monitor serial
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); jika (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); jika (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….