在本教程中,我們設(shè)計了一個使用MSP430 和 RFID 閱讀器讀取 RFID卡的系統(tǒng)。RFID 代表 射頻識別。每張卡都有一個唯一的ID,這使其成為許多身份驗證應(yīng)用程序的完美選擇,例如在辦公室,購物中心和許多其他地方,只允許持有授權(quán)卡的人進入。RFID在購物中心用于阻止盜竊的發(fā)生,產(chǎn)品將被標記為RFID芯片,如果有人帶著RFID芯片離開建筑物,則會自動發(fā)出警報,從而停止盜竊。RFID標簽設(shè)計得像沙粒一樣小。RFID認證系統(tǒng)易于設(shè)計且成本低廉。如今,一些學(xué)校和學(xué)院使用RFID作為出勤登記。
所需材料
1. MSP430 啟動板
2. EM-18 (無線射頻識別讀寫器模塊)
3. 16*2液晶顯示器
4. 電位器
5. 面包板
6. 跳線
軟件:Energia IDE
EM-18 無線射頻識別讀寫器
每張RFID卡中都嵌入了一個唯一的ID,RFID閱讀器用于讀取RFID卡號。EM-18 RFID閱讀器的工作頻率為125 KHz,并配有片上天線,可采用5V電源供電。它提供串行輸出以及 weigand 輸出。范圍約為8-12厘米。串行通信參數(shù)為9600bps,8個數(shù)據(jù)位,1個停止位。
EM-18 RFID閱讀器提供的輸出為12位ASCII格式。在 12 位數(shù)字中,前 10 位數(shù)字是卡號,后兩位數(shù)字是卡號的異或結(jié)果。最后兩位數(shù)字用于錯誤檢查。
例如,從讀卡器讀取的卡號是0200107D0D62,那么卡上的卡號將如下所示。
02 – 序言
00107D0D = 十進制1080589。
62 是 (02 XOR 00 XOR 10 XOR 7D XOR 0D) 的 XOR 值。
因此,卡上的數(shù)字是0001080589。
MSP430 RFID閱讀器電路圖和工作原理圖
我們將使用 MSP430 的硬件 UART,因此,請確保板上的 RXD 和 TXD 跳線處于硬件 UART 模式。然后將EM-18的發(fā)射連接到MSP430的RXD(P1.1)。
在進一步討論之前,我們需要了解串行通信。這里的RFID模塊以串行方式將數(shù)據(jù)發(fā)送到控制器。它具有其他通信模式,但為了便于通信,我們選擇RS232。模塊的RS232引腳連接到MSP430的RXD引腳。
RFID 模塊發(fā)送的數(shù)據(jù)如下:
現(xiàn)在,為了在RFID閱讀器和MSP430之間建立連接,我們需要在MSP430中啟用串行通信。MSP430 中的串行通信可以通過使用單個命令來完成。
Serial.begin(9600);
data = Serial.read();
如上圖所示,RFID的通信是通過每秒9600比特的波特率完成的。因此,為了使MSP430建立這樣的波特率并開始串行通信,我們使用命令“Serial.begin(9600);”。這里 9600 是波特率,是可變的。
現(xiàn)在,一旦設(shè)置波特率,MSP就可以接收串行數(shù)據(jù)了。此數(shù)據(jù)由命令“data = Serial.read();”獲取。通過此命令,串行數(shù)據(jù)以名為整數(shù)的“數(shù)據(jù)”形式獲取。
一旦將卡靠近讀卡器,讀卡器讀取串行數(shù)據(jù)并將其發(fā)送到MSP,MSP將被編程為在LCD中顯示該值,因此我們將在LCD上具有卡的ID。
代碼和說明
我們將在Energia IDE中編寫代碼。它與Arduino IDE相同,易于使用。在這個項目的末尾給出了完整的代碼,在這里我們解釋了它的幾個部分。
首先,包括用于LCD顯示的庫,并聲明字符數(shù)組以存儲RFID號碼。
#include
LiquidCrystal lcd(P2_0, P2_1, P2_2, P2_3, P2_4, P2_5);
char input[12];
在設(shè)置功能中,通過定義波特率9600來啟用LCD和串行通信。
void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
...
..
在循環(huán)功能中,我們將檢查串行數(shù)據(jù)是否可用。如果可用,將數(shù)據(jù)存儲在 Serial.read() 的輸入[計數(shù)] 數(shù)組中,并使用 while 循環(huán)將其逐個顯示在 LCD 上。
while(Serial.available() && count < 12) ? ? ?// Read 12 characters and store them in input array
{
input[count] = Serial.read(); //storing 12 characters one by one
Serial.print(input[count]);
lcd.print(input[count]);
delay(300);
count++;
if (count==12)
{
lcd.print(" ");
count = 0; // once 12 characters are read get to start and wait for second ID
…
…
這就是我們使用MSP430啟動板在LCD上讀取和顯示RFID號碼的方式。
-
RFID
+關(guān)注
關(guān)注
388文章
6152瀏覽量
237874 -
msp430
+關(guān)注
關(guān)注
180文章
2403瀏覽量
229325 -
閱讀器
+關(guān)注
關(guān)注
0文章
301瀏覽量
27921
發(fā)布評論請先 登錄
相關(guān)推薦
評論