0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何構(gòu)建一個(gè)基于RFID的考勤系統(tǒng)?

科技觀察員 ? 來(lái)源:homemade-circuits ? 作者:homemade-circuits ? 2023-07-27 10:30 ? 次閱讀

在這篇文章中,我們將構(gòu)建一個(gè)基于RFID的考勤系統(tǒng),該系統(tǒng)可以記錄給定時(shí)間窗口內(nèi) 12 名學(xué)生/教職員工的出勤情況,該系統(tǒng)最多可以記錄每人 255
名考勤。

什么是RFID考勤系統(tǒng)

我們不需要任何關(guān)于基于RFID的考勤系統(tǒng)的介紹,它被用于大學(xué),辦公室,圖書館,以了解一個(gè)人在什么時(shí)間進(jìn)出多少次或多少人。

在這個(gè)項(xiàng)目中,我們將構(gòu)建一個(gè)最簡(jiǎn)單的基于RFID的考勤系統(tǒng),該系統(tǒng)不會(huì)使項(xiàng)目過(guò)于復(fù)雜。

在這個(gè)項(xiàng)目中,我們將使用RTC模塊,該模塊用于在給定的時(shí)間段內(nèi)啟用和禁用考勤系統(tǒng),以便我們可以阻止遲到者。

RFID模塊“RFID-RC522”可以在基于恩智浦的RFID標(biāo)簽上進(jìn)行讀寫操作。恩智浦是全球RFID標(biāo)簽的領(lǐng)先生產(chǎn)商,我們可以輕松地在線和離線商店購(gòu)買它們。

使用16 x 2 LCD顯示屏,用于顯示時(shí)間,日期,出席人數(shù)等信息。

最后使用Arduino板,這是項(xiàng)目的大腦。您可以選擇任何版本的主板。

現(xiàn)在讓我們繼續(xù)看原理圖:

Arduino 到 LCD 顯示屏連接:

只需按照下圖連接接線,并使用 10 千歐姆電位計(jì)調(diào)整對(duì)比度。

Arduino 到 RFID 模塊連接:

RFID 模塊必須由 3.3V 供電,5V 可能會(huì)損壞板載組件。RFID-RC522模塊在與Arduino通信時(shí)采用SPI通信協(xié)議工作。

電路的其余部分:

Arduino可以由9V墻上適配器供電。有一個(gè)蜂鳴器和 LED 指示檢測(cè)到卡。提供了 4
個(gè)按鈕,用于查看考勤、清除內(nèi)存以及“是”和“否”按鈕。

硬件部分到此結(jié)束。

現(xiàn)在我們必須為 RTC 模塊設(shè)置正確的時(shí)間才能執(zhí)行此操作,按照以下步驟完成硬件設(shè)置。

打開 Arduino IDE。

導(dǎo)航到文件》示例》DS1307RTC》設(shè)置時(shí)間。

上傳代碼。

將代碼上傳到Arduino后,打開串行監(jiān)視器?,F(xiàn)在,RTC與計(jì)算機(jī)的時(shí)間同步。

現(xiàn)在,您必須找到所有12個(gè)RFID卡/標(biāo)簽的UID或唯一標(biāo)識(shí)號(hào)。要查找 UID,請(qǐng)上傳以下代碼并打開串行監(jiān)視器。
//-------------------------Program developed by
R.Girish------------------//

#include 《SPI.h》

#include 《MFRC522.h》

#define SS_PIN 10

#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

void setup()

{

Serial.begin(9600);

SPI.begin();

rfid.PCD_Init();

}

void loop() {

if ( ! rfid.PICC_IsNewCardPresent())

return;

if ( ! rfid.PICC_ReadCardSerial())

return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

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, your card/tag
can‘t be read :(”));

return;

}

String StrID = “” ;

for (byte i = 0; i 《 4; i ++)

{

StrID +=

(rfid.uid.uidByte[i] 《 0x10 ? “0” : “”) +

String(rfid.uid.uidByte[i], HEX) +

(i != 3 ? “:” : “” );

}

StrID.toUpperCase();

Serial.print(“Your card’s UID: ”);

Serial.println(StrID);

rfid.PICC_HaltA ();

rfid.PCD_StopCrypto1 ();

}

//-------------------------Program developed by
R.Girish------------------//

打開串行監(jiān)視器。

掃描RFID模塊上的卡/標(biāo)簽。

現(xiàn)在,您將看到每張卡的一些十六進(jìn)制代碼。

寫下來(lái),我們將在下一個(gè)程序中輸入這些數(shù)據(jù)。

主程序:

//-------------------------Program developed by
R.Girish------------------//

#include 《LiquidCrystal.h》

#include 《EEPROM.h》

#include 《SPI.h》

#include 《MFRC522.h》

#include 《Wire.h》

#include 《TimeLib.h》

#include 《DS1307RTC.h》

#define SS_PIN 10

#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

const int rs = 7;

const int en = 6;

const int d4 = 5;

const int d5 = 4;

const int d6 = 3;

const int d7 = 2;

const int LED = 8;

boolean ok = false;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

const int list = A0;

const int CLM = A1;

const int yes = A2;

const int no = A3;

int H = 0;

int M = 0;

int S = 0;

int i = 0;

int ID1 = 0;

int ID2 = 0;

int ID3 = 0;

int ID4 = 0;

int ID5 = 0;

int ID6 = 0;

int ID7 = 0;

int ID8 = 0;

int ID9 = 0;

int ID10 = 0;

int ID11 = 0;

int ID12 = 0;

char UID[] = “”;

// **************************** SETTINGS ************************ //

// ------ From -------- // (Set the time range for attendance in hours 0 to
23)

int h = 21; // Hrs

int m = 00; // Min

// ------- To ------- //

int h1 = 21; // Hrs

int m1 = 50; //Min

// ---------------- SET UIDs ----------------- //

char UID1[] = “F6:97:ED:70”;

char UID2[] = “45:B8:AF:C0”;

char UID3[] = “15:9F:A5:C0”;

char UID4[] = “C5:E4:AD:C0”;

char UID5[] = “65:1D:AF:C0”;

char UID6[] = “45:8A:AF:C0”;

char UID7[] = “15:9F:A4:C0”;

char UID8[] = “55:CB:AF:C0”;

char UID9[] = “65:7D:AF:C0”;

char UID10[] = “05:2C:AA:04”;

char UID11[] = “55:7D:AA:04”;

char UID12[] = “BD:8A:16:0B”;

// -------------- NAMES -----------------------//

char Name1[] = “Student1”;

char Name2[] = “Student2”;

char Name3[] = “Student3”;

char Name4[] = “Student4”;

char Name5[] = “Student5”;

char Name6[] = “Student6”;

char Name7[] = “Student7”;

char Name8[] = “Student8”;

char Name9[] = “Student9”;

char Name10[] = “Student10”;

char Name11[] = “Student11”;

char Name12[] = “Student12”;

// ********************************************************** //

void setup()

{

Serial.begin(9600);

lcd.begin(16, 2);

SPI.begin();

rfid.PCD_Init();

pinMode(yes, INPUT);

pinMode(no, INPUT);

pinMode(list, INPUT);

pinMode(LED, OUTPUT);

pinMode(CLM, INPUT);

digitalWrite(CLM, HIGH);

digitalWrite(LED, LOW);

digitalWrite(yes, HIGH);

digitalWrite(no, HIGH);

digitalWrite(list, HIGH);

}

void loop()

{

if (digitalRead(list) == LOW)

{

Read_data();

}

if (digitalRead(CLM) == LOW)

{

clear_Memory();

}

tmElements_t tm;

if (RTC.read(tm))

{

lcd.clear();

H = tm.Hour;

M = tm.Minute;

S = tm.Second;

lcd.setCursor(0, 0);

lcd.print(“TIME:”);

lcd.print(tm.Hour);

lcd.print(“:”);

lcd.print(tm.Minute);

lcd.print(“:”);

lcd.print(tm.Second);

lcd.setCursor(0, 1);

lcd.print(“DATE:”);

lcd.print(tm.Day);

lcd.print(“/”);

lcd.print(tm.Month);

lcd.print(“/”);

lcd.print(tmYearToCalendar(tm.Year));

delay(1000);

} else {

if (RTC.chipPresent())

{

lcd.setCursor(0, 0);

lcd.print(“RTC stopped?。?!”);

lcd.setCursor(0, 1);

lcd.print(“Run SetTime code”);

} else {

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Read error!”);

lcd.setCursor(0, 1);

lcd.print(“Check circuitry!”);

}

}

if (H == h)

{

if (M == m)

{

ok = true;

}

}

if (H == h1)

{

if (M == m1)

{

ok = false;

}

}

if ( ! rfid.PICC_IsNewCardPresent())

return;

if ( ! rfid.PICC_ReadCardSerial())

return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

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, your card/tag
can‘t be read :(”));

}

String StrID = “” ;

for (byte i = 0; i 《 4; i ++)

{

StrID +=

(rfid.uid.uidByte[i] 《 0x10 ? “0” : “”) +

String(rfid.uid.uidByte[i], HEX) +

(i != 3 ? “:” : “” );

}

StrID.toUpperCase();

if (ok == false)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Attendance is”);

lcd.setCursor(0, 1);

lcd.print(“Closed.”);

delay(1000);

}

if (ok)

{

//-----------------------------------//

if (StrID == UID1)

{

ID1 = EEPROM.read(1);

ID1 = ID1 + 1;

if (ID1 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID1 != 256)

{

EEPROM.write(1, ID1);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !??!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID2)

{

ID2 = EEPROM.read(2);

ID2 = ID2 + 1;

if (ID2 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID2 != 256)

{

EEPROM.write(2, ID2);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。。 保?

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID3)

{

ID3 = EEPROM.read(3);

ID3 = ID3 + 1;

if (ID3 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID3 != 256)

{

EEPROM.write(3, ID3);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。?!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID4)

{

ID4 = EEPROM.read(4);

ID4 = ID4 + 1;

if (ID4 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID4 != 256)

{

EEPROM.write(4, ID4);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !?。 保?

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID5)

{

ID5 = EEPROM.read(5);

ID5 = ID5 + 1;

if (ID5 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID5 != 256)

{

EEPROM.write(5, ID5);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。。 保?

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID6)

{

ID6 = EEPROM.read(6);

ID6 = ID6 + 1;

if (ID6 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID6 != 256)

{

EEPROM.write(6, ID6);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。。 保?

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID7)

{

ID7 = EEPROM.read(7);

ID7 = ID7 + 1;

if (ID7 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID7 != 256)

{

EEPROM.write(7, ID7);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。?!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID8)

{

ID8 = EEPROM.read(8);

ID8 = ID1 + 1;

if (ID8 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID8 != 256)

{

EEPROM.write(8, ID8);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID9)

{

ID9 = EEPROM.read(9);

ID9 = ID9 + 1;

if (ID9 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID9 != 256)

{

EEPROM.write(9, ID9);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。?!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID10)

{

ID10 = EEPROM.read(10);

ID10 = ID10 + 1;

if (ID10 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID10 != 256)

{

EEPROM.write(10, ID10);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !?。 保?

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID11)

{

ID11 = EEPROM.read(11);

ID11 = ID11 + 1;

if (ID11 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID11 != 256)

{

EEPROM.write(11, ID11);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。?!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID12)

{

ID12 = EEPROM.read(12);

ID12 = ID12 + 1;

if (ID12 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID12 != 256)

{

EEPROM.write(12, ID12);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered ?。?!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

if (StrID != UID1 || StrID != UID2 || StrID != UID3 || StrID != UID4

|| StrID != UID5 || StrID != UID6 || StrID != UID7 || StrID != UID8

|| StrID != UID9 || StrID != UID10 || StrID != UID11 || StrID != UID12)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Unknown RFID”);

lcd.setCursor(0, 1);

lcd.print(“Card !?。 保?

for (i = 0; i 《 3; i++)

{

digitalWrite(LED, HIGH);

delay(200);

digitalWrite(LED, LOW);

delay(200);

}

}

rfid.PICC_HaltA ();

rfid.PCD_StopCrypto1();

}

}

void Read_data()

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name1);

lcd.print(“:”);

lcd.print(EEPROM.read(1));

lcd.setCursor(0, 1);

lcd.print(Name2);

lcd.print(“:”);

lcd.print(EEPROM.read(2));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name3);

lcd.print(“:”);

lcd.print(EEPROM.read(3));

lcd.setCursor(0, 1);

lcd.print(Name4);

lcd.print(“:”);

lcd.print(EEPROM.read(4));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name5);

lcd.print(“:”);

lcd.print(EEPROM.read(5));

lcd.setCursor(0, 1);

lcd.print(Name6);

lcd.print(“:”);

lcd.print(EEPROM.read(6));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name7);

lcd.print(“:”);

lcd.print(EEPROM.read(7));

lcd.setCursor(0, 1);

lcd.print(Name8);

lcd.print(“:”);

lcd.print(EEPROM.read(8));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name9);

lcd.print(“:”);

lcd.print(EEPROM.read(9));

lcd.setCursor(0, 1);

lcd.print(Name10);

lcd.print(“:”);

lcd.print(EEPROM.read(10));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name11);

lcd.print(“:”);

lcd.print(EEPROM.read(11));

lcd.setCursor(0, 1);

lcd.print(Name12);

lcd.print(“:”);

lcd.print(EEPROM.read(12));

delay(2000);

}

void clear_Memory()

{

lcd.clear();

lcd.print(0, 0);

lcd.print(F(“Clear All Data?”));

lcd.setCursor(0, 1);

lcd.print(F(“Long press: Y/N”));

delay(2500);

Serial.print(“YES”);

if (digitalRead(yes) == LOW)

{

EEPROM.write(1, 0);

EEPROM.write(2, 0);

EEPROM.write(3, 0);

EEPROM.write(4, 0);

EEPROM.write(5, 0);

EEPROM.write(6, 0);

EEPROM.write(7, 0);

EEPROM.write(8, 0);

EEPROM.write(9, 0);

EEPROM.write(10, 0);

EEPROM.write(11, 0);

EEPROM.write(12, 0);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(F(“All Data Cleared”));

lcd.setCursor(0, 1);

lcd.print(F(“****************”));

delay(1500);

}

if (digitalRead(no) == LOW);

{

return;

}

}

//-------------------------Program developed by
R.Girish------------------//

---------------- 設(shè)置用戶界面----------------- //

字符 UID1[] = “F6:97:ED:70”;

字符 UID2[] = “45:B8:AF:C0”;

字符 UID3[] = “15:9F:A5:C0”;

char UID4[] = “C5:E4:AD:C0”;

字符 UID5[] = “65:1D:AF:C0”;

char UID6[] = “45:8A:AF:C0”;

字符 UID7[] = “15:9F:A4:C0”;

char UID8[] = “55:CB:AF:C0”;

字符 UID9[] = “65:7D:AF:C0”;

字符 UID10[] = “05:2C:AA:04”;

字符 UID11[] = “55:7D:AA:04”;

字符 UID12[] = “BD:8A:16:0B”;

//----------------------------------------------//

您這里有地名:

--------------名字-----------------------//

字符名稱 1[] = “學(xué)生 1”;

字符名稱 2[] = “學(xué)生 2”;

字符名稱 3[] = “學(xué)生 3”;

字符名稱 4[] = “學(xué)生 4”;

字符名稱 5[] = “學(xué)生 5”;

字符名稱 6[] = “學(xué)生 6”;

字符名稱 7[] = “學(xué)生 7”;

字符名稱 8[] = “學(xué)生 8”;

字符名稱 9[] = “學(xué)生 9”;

字符名稱 10[] = “學(xué)生 10”;

字符名稱 11[] = “學(xué)生 11”;

字符名稱 12[] = “學(xué)生 12”;

//--------------------------------------------//

將學(xué)生 1、學(xué)生 2 替換為您想要的任何名稱或保持原樣。

您必須設(shè)置從何時(shí)到考勤系統(tǒng)應(yīng)該處于活動(dòng)狀態(tài)的時(shí)間,其余時(shí)間當(dāng)我們掃描RFID標(biāo)簽/卡時(shí),系統(tǒng)不會(huì)注冊(cè)考勤:

------從--------//

整數(shù) h = 21;小時(shí)

int m = 00;最小值

-------自-------//

整數(shù) h1 = 21;小時(shí)

int m1 = 50;最小值

//-------------------------//

上半部分是開始時(shí)間,下半部分是結(jié)束時(shí)間。您必須輸入從 0 到 23 的小時(shí)和從 00 到 59 的分鐘。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RFID
    +關(guān)注

    關(guān)注

    388

    文章

    6152

    瀏覽量

    237912
  • 考勤系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    11213
  • DIY制作
    +關(guān)注

    關(guān)注

    2

    文章

    32

    瀏覽量

    9261
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)如何用RFID做課堂考勤系統(tǒng)?

    最近在做一個(gè)課設(shè),是基于RFID技術(shù)的課堂考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),但是不知道從何處下手?以前也沒(méi)怎么學(xué)習(xí),但是這次想要自己完成,求指導(dǎo)!
    發(fā)表于 08-06 23:33

    如何去設(shè)計(jì)種基于51單片機(jī)的射頻RFID考勤上課班統(tǒng)計(jì)系統(tǒng)

    如何去設(shè)計(jì)種基于51單片機(jī)的射頻RFID考勤上課班統(tǒng)計(jì)系統(tǒng)?有哪些設(shè)計(jì)方案?
    發(fā)表于 10-19 09:42

    基于單片機(jī)射頻RFID卡公司考勤系統(tǒng)方案設(shè)計(jì)資料分享

    STC89C52單片機(jī)電路+RFID模塊電路+1602液晶顯示電路+按鍵電路+蜂鳴器報(bào)警電路+電源電路組成。1、模擬公司系統(tǒng)有3張卡,分別代表依次是張三、李四、王二。2、任何一個(gè)人刷卡成功能,1602液晶響應(yīng)顯示,未刷卡顯示空“
    發(fā)表于 11-10 06:12

    介紹個(gè)如何使用RFID技術(shù)構(gòu)建個(gè)單片機(jī)門禁系統(tǒng)

    4.1.2 軟件部分4.2 軟件總體流程圖4.3 密碼子程序4.4 數(shù)據(jù)采集子程序4.5 顯示子程序4.6 存儲(chǔ)子程序5 實(shí)現(xiàn)效果6 最后1 簡(jiǎn)介Hi,大家好,這里是丹成學(xué)長(zhǎng),今天向大家介紹個(gè) 如何使用RFID技術(shù)
    發(fā)表于 02-18 07:22

    如何利用RFID制作個(gè)自動(dòng)點(diǎn)名考勤系統(tǒng)

    作為名教師,傳統(tǒng)上的出勤(點(diǎn)名)是項(xiàng)耗時(shí)的任務(wù),如果自動(dòng)化,教師可以專注于其他教學(xué)活動(dòng)。在本項(xiàng)目中,RFID閱讀器模塊和RFID卡將用于實(shí)現(xiàn)自動(dòng)
    的頭像 發(fā)表于 05-11 17:00 ?4358次閱讀
    如何利用<b class='flag-5'>RFID</b>制作<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>自動(dòng)點(diǎn)名<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    構(gòu)建個(gè)基于RFID的非接觸式溫度監(jiān)測(cè)系統(tǒng)

    在本教程中,我們將使用帶有 Arduino 的非接觸式溫度傳感器構(gòu)建個(gè)基于 RFID 的非接觸式溫度監(jiān)測(cè)系統(tǒng)。
    發(fā)表于 08-11 16:53 ?1451次閱讀
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>基于<b class='flag-5'>RFID</b>的非接觸式溫度監(jiān)測(cè)<b class='flag-5'>系統(tǒng)</b>

    使用AVR微控制器構(gòu)建個(gè)生物識(shí)別考勤系統(tǒng)

    在這個(gè)項(xiàng)目中,我們將使用 AVR 微控制器構(gòu)建個(gè)生物識(shí)別考勤系統(tǒng)取代人工考勤程序。該
    發(fā)表于 08-24 15:49 ?660次閱讀
    使用AVR微控制器<b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>生物識(shí)別<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    使用Raspberry Pi 4和RFID模塊的考勤系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《使用Raspberry Pi 4和RFID模塊的考勤系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 12-01 14:29 ?0次下載
    使用Raspberry Pi 4和<b class='flag-5'>RFID</b>模塊的<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    基于RFID考勤系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《基于RFID考勤系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 12-06 14:26 ?0次下載
    基于<b class='flag-5'>RFID</b>的<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    如何搭建樹莓派RFID考勤系統(tǒng)?

    電子發(fā)燒友網(wǎng)站提供《如何搭建樹莓派RFID考勤系統(tǒng)?.zip》資料免費(fèi)下載
    發(fā)表于 12-14 09:47 ?2次下載
    如何搭建樹莓派<b class='flag-5'>RFID</b><b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>?

    基于RFID模塊的在線考勤系統(tǒng)

    本方案是僅使用 RFID 模塊和 PHP&MYSQL 的在線考勤系統(tǒng),適用于所有類型的出勤要求的實(shí)用程序。這是 Arduino 世界中個(gè)獨(dú)
    發(fā)表于 12-21 11:23 ?0次下載

    基于樹莓派和sb組件RFID HAT的考勤系統(tǒng)

    Raspberry Pi的RFID HAT×1個(gè)軟件應(yīng)用程序和在線服務(wù):樹莓派手動(dòng)工具和制造機(jī):多功能工具,螺絲刀RFID考勤系統(tǒng)
    發(fā)表于 01-05 16:39 ?2次下載

    基于RFID的智能考勤系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《基于RFID的智能考勤系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 02-02 16:21 ?6次下載
    基于<b class='flag-5'>RFID</b>的智能<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    使用Arduino的基于RFID考勤系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino的基于RFID考勤系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 06-14 11:08 ?4次下載
    使用Arduino的基于<b class='flag-5'>RFID</b>的<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>

    使用Arduino基于RFID考勤系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino基于RFID考勤系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 06-25 11:51 ?0次下載
    使用Arduino基于<b class='flag-5'>RFID</b>的<b class='flag-5'>考勤</b><b class='flag-5'>系統(tǒng)</b>