Parallax RFID Reader(SKU28140)是一個 RFID 的讀取器,可以配合 Arduino 開發板使用。將這篇文章提供的程式碼燒錄到 Arduino 中,在感應到 RFID 標籤時將會透過序列埠輸出標籤的識別碼(UID)。
Parallax RFID Reader 有四個腳位,分別是 VCC、GND、SOUT、/ENABLE。請以下列規則進行連接:
VCC → Arduino 5V
GND → Arduino GND
SOUT → 10 腳位
/ENABLE → 9 腳位
程式碼:
1#include <SoftwareSerial.h>
2
3#define enablePin 9 // Connects to the RFID's ENABLE pin
4#define rxPin 10 // Serial input (connects to the RFID's SOUT pin)
5#define txPin 11 // Serial output (unused)
6
7#define BUFSIZE 11
8
9#define RFID_START 0x0A
10#define RFID_STOP 0x0D
11
12SoftwareSerial rfidSerial = SoftwareSerial(rxPin, txPin);
13
14void setup()
15{
16 pinMode(enablePin, OUTPUT);
17 pinMode(rxPin, INPUT);
18
19 digitalWrite(enablePin, HIGH);
20
21 Serial.begin(9600);
22 while (!Serial);
23 Serial.println("\n\nParallax RFID Card Reader");
24
25 rfidSerial.begin(2400);
26
27 Serial.flush();
28}
29
30void loop()
31{
32 digitalWrite(enablePin, LOW);
33
34 char rfidData[BUFSIZE];
35 char offset = 0;
36 rfidData[0] = 0;
37 while(1)
38 {
39 if (rfidSerial.available() > 0)
40 {
41 rfidData[offset] = rfidSerial.read();
42 if (rfidData[offset] == RFID_START)
43 {
44 offset = -1;
45 }
46 else if (rfidData[offset] == RFID_STOP)
47 {
48 rfidData[offset] = 0;
49 break;
50 }
51
52 offset++;
53 if (offset >= BUFSIZE) offset = 0;
54 }
55 }
56
57 Serial.println(rfidData);
58 Serial.flush();
59}