Sistem Absensi RFID Canggih v2.0 – Solusi Tanpa Ethernet
Komponen dan Perlengkapan
Arduino UNO × 1
Kabel jumper (generik) × 1
Modul RFID RC522 × 1
Aplikasi dan Layanan Online
https://www.parikshacrack.com/gadgetProgrammers/addrfidwin64.zip (Hanya untuk pengguna Windows)
https://www.parikshacrack.com/gadgetProgrammers/markattendancewin64.zip (Hanya untuk pengguna Windows)
Tentang Proyek Ini
Versi pertama “Sistem Absensi RFID Online (Tanpa Ethernet)” mungkin terlihat sedikit rumit bagi para hobiis yang tidak memiliki keterampilan pemrograman. Dengan Sistem Absensi RFID Online Versi 2, kami telah melangkah satu langkah lagi dan menghilangkan bagian pemrograman. Dengan hanya melakukan beberapa koneksi, Anda akan dapat membuat Sistem Absensi Online Anda sendiri.
Dalam versi sistem absensi ini, kami akan meluncurkan sistem absensi dengan semua persyaratan sistem absensi nyata. Ini memiliki LCD Display.
Bagaimana Cara Kerjanya?
Rangkaian :
Jika Anda bingung dengan koneksi, lihat bagian skematik untuk Koneksi Pin.
Rangkaian untuk LCD SCREEN:
pin3 ke grd dengan resistor 220 ohm
Pin RS LCD ke pin digital A0
Pin Enable LCD ke pin digital A1
Pin D4 LCD ke pin digital 5
Pin D5 LCD ke pin digital 4
Pin D6 LCD ke pin digital 3
Pin D7 LCD ke pin digital 2
Pin R/W LCD ke ground
Pin VSS LCD ke ground
Pin VCC LCD ke 5V
Pemrograman:
Langkah 1: Untuk menggunakan Sistem Absensi RFID Online kami, Anda perlu melakukan langkah-langkah berikut:
Buat Grup Pengguna Absensi
BuatKunci Validasi
Untuk melakukan langkah-langkah di atas, silakan per ke URL di bawah ini dan buat Grup Pengguna Absensi dan Buat Kunci Validasi Gratis.
Catatan: Ini hanya untuk OS Windows. kami sedang bekerja keras untuk OS lainnya.
Ekstrak file dari dua folder zip di atas dan simpan file-file ini di PC Anda dan pilih sesuai dengan arsitektur Windows Anda. (PC 32 atau 64 bit).
Langkah 3: Hubungkan Arduino dan Pembaca RFID ke PC yang sama.
Langkah 4: Silakan salin dan tempel kode Arduino seperti yang diberikan di bagian kode ke editor Arduino. Sekarang jalankan dan unggah kode Arduino ke perangkat.
Langkah 5: Sekarang jalankan Aplikasi Desktop “addRFIDTagsProg” yang dapat Anda temukan di Folder “addRFIDTagsProg.zip”.
Jika semuanya terhubung dengan sempurna, maka Aplikasi “addRFIDTagsProg” akan terbuka dan kotak teks akan ditampilkan seperti pada gambar di bawah ini, jika tidak layar kosong akan ditampilkan.
Diagram di bawah ini meminta port yang harus dipilih untuk komunikasi, silakan pilih sesuai ketersediaan Anda.
setelah ini Anda akan melihat jendela di bawah ini.
Sekarang masukkan Kunci Validasi yang telah Anda buat di Langkah 1 dan Tekan tombol validate key.
Itu memvalidasi Anda.
Setelah Validasi, Anda dapat menambahkan pengguna Menggunakan jendela yang sama di atas, itu akan meminta kunci validasi hanya sekali.
Untuk menambahkan pengguna, silakan jalankan program di atas setelah validasi, maka itu akan menampilkan layar seperti yang diberikan di bawah ini, pilih port yang tersedia lagi:
Setelah memilih port bebas yang benar, itu akan menampilkan layar di bawah ini.
Layar di atas digunakan untuk menambahkan Pengguna, untuk ini Anda perlu mendekatkan kartu Anda di depan RFID RC522, lalu itu akan menampilkan TAG UID di depan UID dan kemudian Anda hanya perlu memasukkan nama pengguna yang akan terkait dengan kartu ini dan tekan enter (tombol akan muncul setelah mendekatkan kartu).
Jika pengguna berhasil ditambahkan, itu akan menampilkan pesan sukses dan Anda dapat melihat pengguna di panel web.
Langkah 6: Sekarang Anda dapat menambahkan pengguna (karyawan/siswa) ke grup pengguna Anda. Untuk itu, Anda perlu Login ke Aplikasi Web kami. Pergi ke URL di bawah ini dan Login.
Pergi ke Tab User’s -> Pending User List, dari sini Anda dapat menetapkan Tag RFID ke karyawan/siswa mereka.
Langkah 7: Jalankan Aplikasi Desktop “markOnlineAttendance” yang dapat Anda temukan di folder “markattendancewin64.zip”.
Layar akan terbuka seperti pada gambar di bawah ini yang menunjukkan Status: connected.
Untuk menandai absensi, jaga Tag RFID dekat Pembaca RFID beberapa detik dan absensi akan ditandai untuk orang yang Tag RFID ini miliknya.
Langkah 8: Untuk melihat absensi semua karyawan/siswa dalam sebulan atau setahun, Silakan ikuti langkah-langkah berikut.
Pergi ke Tab Attendance Controls -> View Attendance.
Pilih Bulan dan Tahun.
Klik Tombol “show”.
Daftar harus ditampilkan seperti pada gambar di bawah ini.
Hore !!! Selesai.
Jika Anda suka, berikan apresiasi.
Silakan berteriak di kotak komentar jika Anda memiliki pertanyaan.
Kode
Kode Arduino
Kode ArduinoArduino
Kode ini digunakan untuk membaca UID 8 Digit pengguna (KARTU ID) dan mencetaknya pada serial printer serta mengirimkannya ke processing.
/* -------------------------------------------------------------------------------------------------------------------- Contoh sketsa/program yang menunjukkan cara membaca NUID baru dari PICC ke serial. -------------------------------------------------------------------------------------------------------------------- Ini adalah contoh perpustakaan MFRC522; untuk detail lebih lanjut dan contoh lain lihat: https://github.com/miguelbalboa/rfid Contoh sketsa/program yang menunjukkan cara membaca data dari PICC (yaitu: Tag RFID atau Kartu) menggunakan Pembaca RFID berbasis MFRC522 pada antarmuka SPI Arduino. Ketika Arduino dan modul MFRC522 terhubung (lihat tata letak pin di bawah), muat sketsa ini ke Arduino IDE lalu verifikasi/kompilasi dan unggah. Untuk melihat output: gunakan Tools, Serial Monitor dari IDE (tekan Ctrl+Shft+M). Saat Anda menyajikan PICC (yaitu: Tag RFID atau Kartu) pada jarak pembacaan Pembaca/PCD MFRC522, output serial akan menampilkan jenis, dan NUID jika kartu baru telah terdeteksi. Catatan: Anda mungkin melihat pesan “Timeout in communication” saat mengeluarkan PICC dari jarak pembacaan terlalu awal. @license Dirilis ke domain publik. Rangkaian untuk LCD SCREEN: pin3 ke grd dengan resistor 220 ohm Pin RS LCD ke pin digital A0 Pin Enable LCD ke pin digital A1 Pin D4 LCD ke pin digital 5 Pin D5 LCD ke pin digital 4 Pin D6 LCD ke pin digital 3 Pin D7 LCD ke pin digital 2 Pin R/W LCD ke ground Pin VSS LCD ke ground Pin VCC LCD ke 5V Resistor 10K: ujung ke +5V dan ground penyangga ke pin VO LCD (pin 3) Rangkaian RFID : Tata letak pin yang digunakan biasanya: ----------------------------------------------------------------------------------------- MFRC522 Arduino Arduino Arduino Arduino Arduino Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro Signal Pin Pin Pin Pin Pin Pin ----------------------------------------------------------------------------------------- RST/Reset RST 9 5 D9 RESET/ICSP-5 RST SPI SS SDA(SS) 10 53 D10 10 10 SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 */ #include <SPI.h> #include <MFRC522.h> // include the library code: #include <LiquidCrystal.h> // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = A0, en = A1, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); #define SS_PIN 10 #define RST_PIN 9 int writeVal; int greenLedPin = A2; int redLedPin = A3; int orangeLedPin = 6; int buzzerPin = A4; boolean chkConn = false; MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class MFRC522::MIFARE_Key key; // Init array that will store new NUID byte nuidPICC[4]; boolean isValidating = false; void setup() { Serial.begin(9600); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 pinMode(greenLedPin, OUTPUT); pinMode(redLedPin, OUTPUT); digitalWrite(buzzerPin, OUTPUT); for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } lcd.begin(16, 2); lcd.setCursor(0, 0); // lcd.print("Welcome To GadgetProgrammer"); // for (int i = 0; i < 26; i++) { // lcd.scrollDisplayRight(); // delay(100); // } lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("GadgetProgrammer"); delay(100); lcd.setCursor(0, 1); lcd.print(" Not Connected! "); establishConnection(); } void loop() { lcd.setCursor(0, 1); char retOutput; if (Serial.available() > 0) { retOutput = Serial.read(); lcd.blink(); if (retOutput == 'A') { chkConn = true; analogWrite(orangeLedPin,0); lcd.print("Swipe Your Card!"); } if(retOutput == 'V'){ analogWrite(orangeLedPin,1000); lcd.print("Validating Group"); isValidating = true; delay(1000); } if(retOutput == 'S'){ lcd.print("Validation Done!"); glowGreenLed(1000); isValidating = false; delay(1000); } } if (chkConn && !retOutput != "") { if (retOutput == '1') { lcd.print("Attendance Done!"); glowGreenLed(1000); delay(4000); } else if (retOutput == '0') { lcd.print("Network Error !"); glowRedLed(1000); delay(4000); } else if (retOutput == '2') { lcd.print("User Not Found!"); glowRedLed(1000); delay(4000); } else if (retOutput == '5') { lcd.print("Network Error!"); glowRedLed(1000); delay(4000); } //if not in validation process then swipe your card if(isValidating == false){ lcd.setCursor(0, 1); analogWrite(orangeLedPin,0); lcd.print("Swipe Your Card!"); } //lcd.clear(); // Look for new cards } if ( ! rfid.PICC_IsNewCardPresent()) return; // Verify if the NUID has been readed if ( ! rfid.PICC_ReadCardSerial()) return; //Serial.print(F("PICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); //Serial.println(rfid.PICC_GetTypeName(piccType));//Printing type of card // Check is the PICC of Classic MIFARE type if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { //Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } String s; for (byte i = 0; i < 4; i++) { nuidPICC[i] = rfid.uid.uidByte[i]; } //Serial.println(F("The NUID tag is:")); //Serial.print(F("In hex: ")); printHex(rfid.uid.uidByte, rfid.uid.size); Serial.println(); lcd.setCursor(0,1); lcd.print("Reading Card...!"); // Halt PICC rfid.PICC_HaltA(); // Stop encryption on PCD rfid.PCD_StopCrypto1(); delay(1000); } /** Helper routine to dump a byte array as hex values to Serial. */ void printHex(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? "0" : ""); Serial.print(buffer[i], HEX); } } /** Helper routine to dump a byte array as dec values to Serial. */ void printDec(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? "0" : ""); Serial.print(buffer[i], DEC); } } void glowGreenLed(int delaytime) { digitalWrite(orangeLedPin,LOW); digitalWrite(greenLedPin, HIGH); digitalWrite(redLedPin, LOW); tone(buzzerPin, 5000, 300); if (delaytime > 0) { delay(delaytime); digitalWrite(greenLedPin, LOW); noTone(buzzerPin); } } void glowRedLed(int delaytime) { digitalWrite(orangeLedPin,LOW); digitalWrite(greenLedPin, LOW); digitalWrite(redLedPin, HIGH); digitalWrite(buzzerPin, HIGH); delay(1000); tone(buzzerPin, 5000); //noTone(buzzerPin); if (delaytime > 0) { delay(delaytime); digitalWrite(redLedPin, LOW); noTone(buzzerPin); } } void glowOrangeLed(){ analogWrite(orangeLedPin,100); delay(100); } //contacting with processing sending A to Serial Port void establishConnection() { while (Serial.available() <= 0 && !chkConn) { Serial.println("A"); glowOrangeLed(); delay(200); } } void printLcdMsg(String msg, int col, int row) { if (msg.equals("") || row < 0 || col < 0) { row = 0; col = 1; } lcd.setCursor(col, row); lcd.print(msg); }