在本篇文章中,我們將使用STM32和RFID讀卡器設計一個讀取RFID卡的系統(tǒng)。 RFID表示射頻識別,它使用無線電頻率讀取信息。 RFID用于許多認證系統(tǒng),如電梯乘坐系統(tǒng)、自動收費系統(tǒng)、醫(yī)院患者信息維護系統(tǒng)、自動數(shù)據(jù)收集等。本文中,我們將學習如何使用STM32F103C8微控制器連接EM-18 RFID讀卡器模塊來讀取RFID標簽的唯一ID。
所需的組件
● STM32F103C8控制器
● EM-18 RFID讀卡器模塊
● RFID卡
● 1602 LCD顯示屏模塊
● 面包板
● 連接線
在將RFID與STM32連接之前,首先我們將了解RFID標簽和RFID讀卡器。
RFID標簽
RFID標簽由一組盤繞天線和一片微芯片組成,可以與附近的讀卡器無線通信。市場上有各種形狀和尺寸的不同類型的RFID標簽。很少有人使用不同的頻率進行通信。我們將使用125Khz無源RFID卡,其中包含唯一的ID數(shù)據(jù)。
當您將RFID標簽放在明亮的燈光前時,您可以觀察標簽內(nèi)部的線圈和微芯片。
基本上有兩種類型的RFID標簽:無源和有源
無源RFID標簽從EM-18等讀卡器模塊產(chǎn)生的磁場中獲取能量,并用它為微芯片的電路供電。然后芯片將信息發(fā)送給讀卡器。
有源RFID標簽需要單獨供電,并包含高達1MB的讀/寫內(nèi)存。
EM-18 RFID讀卡器
每個RFID卡都嵌入有一個唯一ID,并且使用RFID讀取器可以讀取RFID卡號。 EM-18 RFID讀卡器的工作頻率為125 KHz,它配有一個片上天線,可以用5V電源供電。它提供串行輸出。范圍大約8-12厘米。串行通信參數(shù)為9600bps、8個數(shù)據(jù)位、1個停止位。這種無線射頻識別用于許多系統(tǒng),如基于RFID的考勤系統(tǒng)、安全系統(tǒng)、投票機以及電子收費公路定價等等。
EM-18 RFID讀器卡提供的輸出為12位ASCII格式。在12位數(shù)中,前10位是卡號,后兩位是卡號的XOR結果。最后兩位數(shù)字用于錯誤校驗。
例如,從讀卡器讀取到的卡號為0200107D0D62,然后卡上的卡號將如下所示。
02- 前導符
00107D0D =十進制的1080589。
62是(02 XOR 00 XOR 10 XOR 7D XOR 0D)的XOR值。
因此卡上的號碼是0001080589。
EM-18的引腳詳細信息
EM-18 RFID讀卡器有九個引腳。在9個引腳中,2個引腳沒有連接,所以我們只需要考慮7個端子。下表顯示了EM-18的引腳說明。
EM-18 RFID模塊的規(guī)格參數(shù)
● 讀取距離:10厘米
● 工作溫度:0oC至+80oC
● 通訊參數(shù):9600bps
● 電流消耗:<50mA
● 工作頻率:125 kHz
● 工作電壓:5v
電路圖和連接
STM32F103C8和EM-18讀卡器模塊之間的連接如下:
編程STM32F103C8用于讀取RFID
在之前的文章中,我們了解了使用USB端口編程STM32F103C8T6板。所以我們現(xiàn)在不需要FTDI燒寫器。只需通過STM32的USB端口將其連接到PC,然后開始使用ARDUINO IDE進行編程。在ARDUINO IDE中對STM32進行編程以讀取RFID標簽非常簡單
1.首先,包括用于使用LCD顯示函數(shù)的LCD顯示庫。然后定義LCD引腳并初始化LCD顯示屏。
#include
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
2.接下來在void setup()函數(shù)中,我們需要將LCD顯示模式設置為16x2,并使用PA10引腳以波特率9600開始串行通信(這是STM32F103C8的SERIAL1通信端口RX1,它與EM-18 TX引腳相連。
lcd.begin(16, 2);
Serial1.begin(9600);
pinMode(PA10,INPUT);
3.接下來顯示歡迎信息并在一段時間后擦除屏幕。
lcd.print("CIRCUIT DIGEST"); //Prints at LCD display
lcd.setCursor(0, 1); //Set courser to second line
lcd.print("RFID WITH STM32"); //Prints at LCD display
delay(5000); //Delay for 5 Seconds
lcd.clear(); //Clears LCD display
lcd.setCursor(0,0); //Sets cursor at First Line
lcd.print("RFID TAG NO:"); //Prints at LCD display
lcd.setCursor(0,1);
4.在void loop()函數(shù)中,一旦STM32F103C8的串行引腳提供EM-18 RFID讀取器模塊(標簽ID)的數(shù)據(jù),該字符將逐位存儲并在LCD顯示屏上逐個顯示。
{
while(Serial1.available() && count < 12)? ?? ?? ?
{
RFID[count] = Serial1.read();
count++;
lcd.print(RFID[count]);
if (count==12)
{
lcd.print(" ");
count = 0;
lcd.setCursor(0, 1);
}
}
}
現(xiàn)在只需在STM32中上傳完整的代碼,您的系統(tǒng)即可運行。然后將RFID標簽放在RFID閱讀器上,您就會看到標簽ID出現(xiàn)在1602 LCD顯示屏上。
編輯:hfy
-
RFID
+關注
關注
388文章
6191瀏覽量
238535 -
讀卡器
+關注
關注
2文章
419瀏覽量
39463 -
STM32
+關注
關注
2272文章
10923瀏覽量
357534 -
燒寫器
+關注
關注
0文章
18瀏覽量
13206 -
STM32F103C8
+關注
關注
1文章
23瀏覽量
8116
發(fā)布評論請先 登錄
相關推薦
評論