當前位置: 首頁 > 傳感測量產(chǎn)品 > 數(shù)據(jù)采集產(chǎn)品 > RFID系統(tǒng) > 讀寫器
發(fā)布日期:2022-05-20 點擊率:44
在某些酒店以及其他地方,我們曾經(jīng)看到過使用RFID的門鎖,您無需鑰匙即可解鎖房間。給你一張卡片,然后只需要把它放在一個RFID閱讀器的前面,就可以實現(xiàn)解鎖,閱讀器發(fā)出嗶嗶聲,并且LED指示燈閃爍。這種RFID門鎖可以在家中輕松制作實現(xiàn),您可以將其安裝在任何門上。這些門鎖通常是電動操作的門鎖,當你施加一定的電壓(通常為12V)時它會打開。
在本篇文章中,我們使用Arduino開發(fā)板和繼電器來觸發(fā)電動門鎖,并且使用RFID進行驗證,因此RFID功能是一項功能。如果您在RFID閱讀器附近放置錯誤的RFID卡,蜂鳴器會發(fā)出警報,提示卡錯誤。
所需的材料
● Arduino UNO開發(fā)板
● 帶標簽的EM-18讀卡器模塊
● 5v的繼電器
● LED指示燈
● 蜂鳴器
● 連接導(dǎo)線
● 電阻
● RFID電動門鎖
Arduino的RFID門鎖電路原理圖
以下是使用Arduino的RFID智能門鎖電路原理圖
EM-18 RFID閱讀器
RFID代表射頻識別。每個RFID卡都嵌入了一個唯一的ID,并使用RFID閱讀器讀取RFID卡號。 EM-18 RFID閱讀器的工作頻率為125 KHz,配有一個片上天線,可以使用5V電源供電。它提供WEIGAND協(xié)議的串行輸出。通信范圍大約8-12厘米。串行通信參數(shù)為9600bps、8個數(shù)據(jù)位、1個停止位。這種無線射頻識別被用于許多系統(tǒng)中:
● 基于RFID的考勤系統(tǒng),
● 安全系統(tǒng)
● 投票機
● 電子收費公路定價
EM-18 RFID閱讀器提供的輸出采用12位ASCII碼格式。 12位數(shù)字中的前10位數(shù)是卡號,后兩位數(shù)是卡號的異或結(jié)果。最后兩位數(shù)字用于錯誤檢查。
例如,從讀卡器讀取的卡號是0200107D0D62,則卡上的卡號將如下所示。
02 - 前導(dǎo)符
00107D0D = 1080589(十進制)。
62是(02 XOR 00 XOR 10 XOR 7D XOR 0D)的XOR值。
因此卡上的號碼是0001080589
代碼和說明
在本文的末尾處提供了RFID智能門鎖的完整代碼。
在下面的代碼中,RFID標簽號存儲在“char標簽”中。 “180088F889E1”是存儲在發(fā)送應(yīng)答器微芯片中的我的RFID標簽號碼。標簽號碼的長度是12,我們已經(jīng)定義了類似“char input [12]”的數(shù)組,12定義了字符的個數(shù)或數(shù)組的大小。
char tag[] ="180088F889E1";
char input[12];
int count = 0;
boolean flag = 0;
復(fù)制代碼
現(xiàn)在,在下面的代碼中,我們設(shè)置了Arduino UNO開發(fā)板的引腳以進行操作,serial.begin()用于串行數(shù)據(jù)傳輸。這里引腳2用于繼電器操作,引腳3用于備用紅色LED,引腳4用于蜂鳴器。
void setup()
{
pinMode(2,OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}
復(fù)制代碼
代碼的條件主體是void loop(),對于備用紅色LED,引腳3保持高電平,直到執(zhí)行任何任務(wù)。
我們將使用if條件檢查是否有任何可用的串行數(shù)據(jù)。意味著我們將檢查是否有任何RFID標簽正在掃描。如果有任何串行數(shù)據(jù)(RFID標簽號)到來,我們會將其保存在我們?yōu)楸4鍾FID標簽號而定義的輸入[]數(shù)組中。
void loop(
{
digitalWrite(3,1);
if(Serial.available())
{
count = 0;
while(Serial.available() && count < 12)
{
input[count] = Serial.read();
count++;
delay(5);
}
復(fù)制代碼
現(xiàn)在我們將比較掃描的RFID卡號。用我們在char tag []數(shù)組中定義的數(shù)字。如果兩個匹配都匹配,那么我們將標志變量設(shè)置為1,如果掃描了錯誤的卡或兩個數(shù)字不匹配,那么我們將標志變量設(shè)置為0。
if(count == 12)
{
count =0;
flag = 1;
while(count<12 && flag !=0)
{
if(tag[count]==input[count])
flag = 1;
else
flag= 0;
}
復(fù)制代碼
如果您放置正確的RFID標簽,則標志等于1,在這種情況下,引腳2變?yōu)楦唠娖?繼電器工作),此時引腳3變?yōu)榈碗娖剑舆t5秒后,兩個引腳將返回至其初始條件。繼電器將進一步連接到電動門鎖,因此繼電器打開后,門鎖將打開,5秒鐘后將再次鎖定。
if(flag == 1)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
delay(5000);
digitalWrite(2,LOW);
}
復(fù)制代碼
如果您放置錯誤的RFID卡,該標志將為零,并且蜂鳴器開始發(fā)出蜂鳴聲,提醒該RFID卡錯誤。
if(flag == 0)
{
for(int k =0; k<= 10; k++)
{
digitalWrite(4,HIGH);
delay(300);
digitalWrite(4,LOW);
delay(300);
}
}
復(fù)制代碼
基于Arduino的RFID門鎖的工作過程
RFID系統(tǒng)由兩部分組成:一個RFID標簽和一個讀卡器。 RFID標簽由集成電路和天線組成,集成電路用于存儲數(shù)據(jù),天線用于將數(shù)據(jù)傳輸?shù)絉FID讀取器模塊。每當RFID標簽進入RFID閱讀器范圍時,RF信號為標簽供電,然后標簽開始串行傳輸數(shù)據(jù)。 RFID閱讀器進一步接收數(shù)據(jù),閱讀器將其發(fā)送給Arduino板。然后,根據(jù)微控制器中的代碼執(zhí)行不同的任務(wù)。
在我們的電路中,我們已經(jīng)在代碼中保存了RFID標簽的價值。所以,只要特定的標簽進入范圍內(nèi),繼電器就會被激活。在這里,我們已經(jīng)連接了一個帶有繼電器的LED來演示,但是這個LED可以被電動門鎖取代,所以只要繼電器被激活,鎖就會打開。
如果我們掃描任何其他RFID卡,蜂鳴器會發(fā)出蜂鳴聲,因為它是錯誤的RFID標簽。因此,對于門鎖系統(tǒng),我們使用這個概念,即只有使用正確的RFID標簽才能打開門。 5秒鐘后,繼電器自動關(guān)閉,5秒鐘后門將關(guān)閉,您可以更改代碼中的延遲時間。
下一篇: PLC、DCS、FCS三大控
上一篇: 基于SOA的軟件架構(gòu)將