在本教程中,我們?cè)O(shè)計(jì)了一個(gè)使用MSP430 和 RFID 閱讀器讀取 RFID卡的系統(tǒng)。RFID 代表 射頻識(shí)別。每張卡都有一個(gè)唯一的ID,這使其成為許多身份驗(yàn)證應(yīng)用程序的完美選擇,例如在辦公室,購物中心和許多其他地方,只允許持有授權(quán)卡的人進(jìn)入。RFID在購物中心用于阻止盜竊的發(fā)生,產(chǎn)品將被標(biāo)記為RFID芯片,如果有人帶著RFID芯片離開建筑物,則會(huì)自動(dòng)發(fā)出警報(bào),從而停止盜竊。RFID標(biāo)簽設(shè)計(jì)得像沙粒一樣小。RFID認(rèn)證系統(tǒng)易于設(shè)計(jì)且成本低廉。如今,一些學(xué)校和學(xué)院使用RFID作為出勤登記。
所需材料
1. MSP430 啟動(dòng)板
2. EM-18 (無線射頻識(shí)別讀寫器模塊)
3. 16*2液晶顯示器
4. 電位器
5. 面包板
6. 跳線
軟件:Energia IDE
EM-18 無線射頻識(shí)別讀寫器
每張RFID卡中都嵌入了一個(gè)唯一的ID,RFID閱讀器用于讀取RFID卡號(hào)。EM-18 RFID閱讀器的工作頻率為125 KHz,并配有片上天線,可采用5V電源供電。它提供串行輸出以及 weigand 輸出。范圍約為8-12厘米。串行通信參數(shù)為9600bps,8個(gè)數(shù)據(jù)位,1個(gè)停止位。
EM-18 RFID閱讀器提供的輸出為12位ASCII格式。在 12 位數(shù)字中,前 10 位數(shù)字是卡號(hào),后兩位數(shù)字是卡號(hào)的異或結(jié)果。最后兩位數(shù)字用于錯(cuò)誤檢查。
例如,從讀卡器讀取的卡號(hào)是0200107D0D62,那么卡上的卡號(hào)將如下所示。
02 – 序言
00107D0D = 十進(jìn)制1080589。
62 是 (02 XOR 00 XOR 10 XOR 7D XOR 0D) 的 XOR 值。
因此,卡上的數(shù)字是0001080589。
MSP430 RFID閱讀器電路圖和工作原理圖
我們將使用 MSP430 的硬件 UART,因此,請(qǐng)確保板上的 RXD 和 TXD 跳線處于硬件 UART 模式。然后將EM-18的發(fā)射連接到MSP430的RXD(P1.1)。
在進(jìn)一步討論之前,我們需要了解串行通信。這里的RFID模塊以串行方式將數(shù)據(jù)發(fā)送到控制器。它具有其他通信模式,但為了便于通信,我們選擇RS232。模塊的RS232引腳連接到MSP430的RXD引腳。
RFID 模塊發(fā)送的數(shù)據(jù)如下:
現(xiàn)在,為了在RFID閱讀器和MSP430之間建立連接,我們需要在MSP430中啟用串行通信。MSP430 中的串行通信可以通過使用單個(gè)命令來完成。
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相同,易于使用。在這個(gè)項(xiàng)目的末尾給出了完整的代碼,在這里我們解釋了它的幾個(gè)部分。
首先,包括用于LCD顯示的庫,并聲明字符數(shù)組以存儲(chǔ)RFID號(hào)碼。
#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ù)存儲(chǔ)在 Serial.read() 的輸入[計(jì)數(shù)] 數(shù)組中,并使用 while 循環(huán)將其逐個(gè)顯示在 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啟動(dòng)板在LCD上讀取和顯示RFID號(hào)碼的方式。
-
RFID
+關(guān)注
關(guān)注
388文章
6152瀏覽量
237876 -
msp430
+關(guān)注
關(guān)注
180文章
2403瀏覽量
229325 -
閱讀器
+關(guān)注
關(guān)注
0文章
301瀏覽量
27921
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論