您已經在一些酒店和其他地方看到了RFID門鎖機制,在那里您不需要鑰匙即可解鎖房間。你會得到一張卡,你只需要把它放在一個RFID閱讀器盒前面,鎖就會通過嗶嗶聲和LED閃爍解鎖。此RFID門鎖可以在家中輕松制作,您可以將其安裝在任何門上。這些門鎖只是電動門鎖,當您對其施加一些電壓(通常為 12v)時會打開。
在這個項目中,我們使用Arduino和繼電器來觸發電動門鎖和RFID進行身份驗證,因此您的RFID標簽將充當鑰匙。如果您在RFID閱讀器附近放置了錯誤的RFID卡,蜂鳴器將發出嗶嗶聲以提醒錯誤的卡。
所需材料:
Arduino UNO
EM-18 帶標簽的讀卡器模塊
繼電器 5v
發光二極管
蜂鳴器
連接線
Arduino RFID門鎖電路圖
EM-18 無線射頻識別讀寫器:
RFID代表射頻識別。每張RFID卡中都嵌入了一個唯一的ID,RFID閱讀器用于讀取RFID卡號。EM-18 RFID閱讀器的工作頻率為125 KHz,并配有片上天線,可采用5V電源供電。它提供串行輸出以及 weigand 輸出。范圍約為8-12厘米。串行通信參數為9600bps,8個數據位,1個停止位。
EM-18 RFID閱讀器提供的輸出為12位ASCII格式。在 12 位數字中,前 10 位數字是卡號,后兩位數字是卡號的異或結果。最后兩位數字用于錯誤檢查。
例如,從讀卡器讀取的卡號是0200107D0D62,那么卡上的卡號將如下所示。
02 – 序言
00107D0D = 十進制1080589。
62 是 (02 XOR 00 XOR 10 XOR 7D XOR 0D) 的 XOR 值。
因此,卡上的數字是0001080589
代碼和說明:
完整的RFID門鎖Arduino代碼在本項目結束時給出。
在下面的代碼中,RFID標簽編號存儲在“char標簽”中。“180088F889E1”是我存儲在應答器微芯片中的RFID標簽號碼。標簽號的長度為 12,我們定義了像“char input [12]”這樣的數組,12 定義了 no。字符或數組大小。
char tag[] ="180088F889E1";
char input[12];
int count = 0;
boolean flag = 0;
現在,在下面的代碼中,我們設置了Arduino UNO板的引腳用于操作,并且serial.begin()用于串行數據傳輸。此處,引腳 2 用于繼電器操作,引腳 3 用于備用紅色 LED,引腳 4 用于蜂鳴器。
void setup()
{
pinMode(2,OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}
代碼的條件主體是 void loop() ,對于備用紅色 LED,引腳 3 保持 HIGH 狀態,直到執行任何任務。
我們將使用 if 條件檢查是否有任何可用的串行數據。意味著我們將檢查是否有任何RFID標簽被掃描。如果有任何串行數據(RFID標簽號),我們會將其保存在我們定義的用于保存RFID標簽編號的input[]數組中。
void loop(
{
digitalWrite(3,1);
if(Serial.available())
{
count = 0;
while(Serial.available() && count < 12)
{
input[count] = Serial.read();
count++;
delay(5);
}
現在我們將比較掃描的RFID卡號。使用我們在 char tag[] 數組中定義的數字。如果兩個 umber 匹配,則我們將標志變量設置為 1,如果掃描了錯誤的卡或兩個數字都不匹配,則我們將標志變量設置為 0。
if(count == 12)
{
count =0;
flag = 1;
while(count<12 && flag !=0)?
{
if(tag[count]==input[count])
flag = 1;
else
flag= 0;
}
如果您放置正確的 RFID 標簽,則標志等于 1,在這種情況下,引腳 2 變為高電平(繼電器通過該標簽運行),引腳 3 此時變為低電平,延遲 5 秒后,兩個引腳將恢復其初始狀態。繼電器將進一步連接到電動門鎖,因此在繼電器打開的情況下,門鎖將被打開,5 秒后它將再次被鎖定。
if(flag == 1)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
delay(5000);
digitalWrite(2,LOW);
}
如果您放置了錯誤的RFID 卡,標志將為零,蜂鳴器開始發出嗶嗶聲,提醒 RFID 卡錯誤。
if(flag == 0)
{
for(int k =0; k<= 10; k++)
{
digitalWrite(4,HIGH);
delay(300);
digitalWrite(4,LOW);
delay(300);
}
}
基于Arduino的RFID門鎖的工作原理
RFID系統由兩個組件組成:RFID標簽和閱讀器。RFID標簽由集成電路和天線組成,集成電路用于存儲數據,天線用于將數據傳輸到RFID閱讀器模塊。每當RFID標簽進入RFID閱讀器的范圍內時,RF信號為標簽供電,然后標簽開始串行傳輸數據。數據進一步由RFID閱讀器接收,閱讀器將其發送到Arduino板。之后,根據微控制器中的代碼執行不同的任務。
在我們的電路中,我們已經在代碼中保存了RFID標簽的值。因此,每當該特定標簽進入范圍內時,繼電器就會被激活。在這里,我們將LED與繼電器連接起來進行演示,但是該LED可以用電動門鎖代替,因此每當繼電器被激活時,鎖都會打開。
如果我們掃描任何其他RFID卡,蜂鳴器將開始發出嗶嗶聲,因為它是錯誤的RFID標簽。因此,對于門鎖系統,我們使用了這個概念,即只有使用正確的RFID標簽才能打開門。繼電器本身將在 5 秒后停用,門將在 5 秒后關閉,您可以在代碼中更改此延遲。
char tag[] ="180088F889E1";
char input[12];
int count = 0;
boolean flag = 0;
void setup()
{
pinMode(2,OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(3,1);
if(Serial.available())
{
count = 0;
while(Serial.available() && count < 12)
{
input[count] = Serial.read();
count++;
delay(5);
}
if(count == 12)
{
count =0;
flag = 1;
while(count<12 && flag !=0)?
{
if(tag[count]==input[count])
flag = 1;
else
flag= 0;
}
if(flag == 1)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
delay(5000);
digitalWrite(2,LOW);
}
if(flag == 0)
{
for(int k =0; k<= 10; k++)
{
digitalWrite(4,HIGH);
}
}
}
}
}
-
繼電器
+關注
關注
132文章
5320瀏覽量
148581 -
RFID
+關注
關注
387文章
6107瀏覽量
237394 -
Arduino
+關注
關注
187文章
6464瀏覽量
186651
發布評論請先 登錄
相關推薦
評論