You are on page 1of 9

PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

1 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

การใชงาน RFID Modules แบบที่ 1

การใชงานไมโครคอนโทรลเลอร PSoC กับโมดูลอารเอฟไอดี

(Using the PSoC microcontroller with RFID Module.)

RFID คือ อะไร

R FID ยอ มาจากคําวา Radio Frequency Identification เปนระบบฉลากหรือปายอิเล็กทรอนิกส (Tag) ถูกพัฒนามาตั้งแตป ค.ศ. 1980 ปายนี้สามารถอานและเขียนคาขอมูล
ไดโดยผาน คลื่นวิทยุ จากที่มีระยะหาง ดังนั้นเมื่อนําปายนี้ไปติดอยูกับวัตถุตางๆแลวบันทึกขอมูลของวัตถุนั้นใว เชน ผลิต ที่ไหน ใครเปนผูผลิต ผลิตอยางไร ผลิตวันไหน และเมื่อ
ไร ประกอบไปดวยชิ้นสวนกี่ชิ้น และแตละชิ้น มาจากที่ไหน ก็จะสามารถใชปายนี้เปนตัวระบุเอกลักษณของวัตถุได การอานขอมูลของวัตถุนั้น ไมจําเปนตองถูกตองหรือสัมผัสที่ตัว
วัตถุ (Contact-Less)

RFID ทํางานอยางไร

สวนประกอบของระบบ RFID

ส วนประกอบในระบบ RFID จะมีหลักๆ อยู 2 สวนดวยกัน คือ สวนแรกคือฉลากหรือปายขนาดเล็กที่จะถูก ผนึกอยูกับวัตถุที่เราสนใจ โดยฉลากนี้จะทําการบันทึกขอมูลเกี่ยวกับวัตถุชิ้นนั้นๆ เอาไวฉ ลากดังกลาว มีชื่อเรียก

วา ทรานสพอนเดอร (Transponder, Transmitter & Responder) หรือที่เรียกกันโดยทั่ว ไปวา ?แท็ก? (Tag) สวนที่สองก็คืออุปกรณสําหรับอานหรือเขียนขอมูลภายในแท็ก มีชื่อเรียกวา ทรานสซิฟเวอร (Transceiver,
Transmitter & Receiver) หรือที่เรียกกันโดยทั่ว ๆ ไปวา ?เครื่องอาน? โดยปกติแท็ก จะไม?มีแบตเตอรี่อยู?ภายในหรือไม?จําเป?นต?องรับแหล?งจ?ายไฟใด ๆ เพราะจะทํางานโดยอาศัยพลังงานไฟฟ?าที่เกิดจากการเหนี่
ยวนําคลื่นแม?เหล็กไฟฟ?าจากตัวอ?าน แท็กชนิดนี้เ รียกวาแท็กพาสซีฟ (Passive Tag) มีน้ําหนักเบาและมีขนาดเล็ก แตมีแท็กอีกชนิดหนึ่งที่เ รียกวาชนิดแอ็กทีฟ (Active tag) จะมีแบตเตอรี่อยูภ ายใน

RFID Tag

1. แท็กชนิดแอ็กตีฟ (Active Tag) แท็กชนิดนี้จะมีแบตเตอรี่อยูภ ายในซึ่งใชเ ปนแหลงจายไฟขนาดเล็ก เพื่อปอนพลังงานไฟฟาใหแท็กทํางานโดยปกติ โดยแท็กชนิดนี้มีฟงกชั่นการทํางานทั่วไปทั้งอานและเขียนขอมูล


ลงในแท็กได และการที่ตองใชแบตเตอรี่จึงทําใหแท็กชนิดแอคตีฟมีอายุการใชงานจํากัดตามอายุของแบตเตอรี่ เมื่อแบตเตอรี่หมดก็ตองนําแท็กไปทิ้งไมสามารถนํากลับมาใชใ หมได เนื่องจากจะมีการซีล (seal) ที่ตัว
แท็กจึงไมสามารถเปลี่ยนแบตเตอรี่ไ ด อยางไรก็ตามถาสามารถออกแบบวงจรของแท็กใหกินกระแสไฟนอยๆ ก็อาจจะมีอายุการใชงานนานนับสิบป แท็กชนิดแอ็กทีฟนี้จะมีหนวยความจําภายในขนาดใหญไดถึง 1
เมกะไบตมีกําลังสงสูงและระยะการรับสงขอมูลไกลสูงสุดถึง 6 เมตร ซึ่งไกลกวาแท็กชนิดพาสซีฟ นอกจากนี้ยังทํางานในบริเวณที่มีสัญญาณรบกวนไดดี แมแท็กชนิดนี้จะมีขอดีอยูหลายขอแตก็มีขอเสียเรื่องราคาตอ
หนวยซึ่งแพง
2. แท็กชนิดพาสซีฟ (Passive Tag) จะไมมีแบตเตอรี่อยูภายในหรือไมจําเปนตองรับแหลงจายไฟใด ๆ เพราะจะทํางานโดยอาศัยพลังงานไฟฟาที่เ กิดจากการเหนี่ยวนําคลื่นแมเ หล็กไฟฟาจากตัวอานตองมูล จึงทําให
แท็กชนิดพาสซีฟมีน้ําหนักเบาและเล็ก ราคาถูกกวา และมีอายุการใชงานไมจํากัด แตขอเสียก็คือระยะการรับสงขอมูลใกล ประมาณไมเ กิน 1.5 เมตร มีหนวยความจําขนาดเล็กซึ่งโดยทั่ว ๆ ไปประมาณ 32 ถึง 128 บิต
และตัวเครื่องอานจะตองมีความไวและกําลังที่สูง นอกจากนี้แท็กชนิดพาสซีฟมักจะมีปญหาเมื่อนําไปใชงานในสิ่งแวดลอมที่มีสัญญาณแมเ หล็กไฟฟารบกวนสูงอีกดวยนแตเ มื่อพิจารณาเรื่องราคาก็ทําใหแท็กชนิดนี้ไ ด
รับความนิยมมากกวา

RFID Reader

2 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

คูมือMifare Read/Write Module รุน RFM015M-1

วงจรสําหรับการทดลอง (Logic diagram)

รูปแบบคําสั่งการติดตอกับตัวอาน

Header : Communication header มีขนาด 1 ไบต มีคาเปน 0xBA บอกวาเปนการติดตอจาก Host ไปสูโมดูล
Len : ความยาวของขอมูลที่สงนับจาก Command ถึง Checksum มีขนาด 1 ไบต
Command : คําสั่ง มีขนาด 1 ไบต

3 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

Data : ขอมูลที่สง ขึ้นอยูกับคําสั่ง


Checksum : คา Checksum เกิดจากการ xor กันตั้งแต Header ถึง Data มีขนาด 1 ไบต

Header : Communication header มีขนาด 1 ไบต มีคาเปน 0xBD บอกวาเปนการติดตอจากโมดูล ไปสู Host
Len : ความยาวของขอมูลที่สงนับจาก Command ถึง Checksum มีขนาด 1 ไบต
Command : เปนคําสั่งที่ไ ดรับจาก Host มีขนาด 1 ไบต
Status : สถานะการทํางาน มีขนาด 1 ไบต

4 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

Data : ขอมูลที่สง ขึ้นอยูกับคําสั่ง


Checksum : คา Checksum เกิดจากการ xor กันตั้งแต Header ถึง Data มีขนาด 1 ไบต

รูปแบบคําสั่งใหตัวอาน อานคา Serial number ของแท็ก

คําสั่งในรูปเลขฐานสิบหกที่สงใหกับตัวอาน 0xBA,0x02,0x01,0xB9

5 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

ผลการทดลองเมื่อไมมีแท็ก

6 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

ผลการทดลองเมื่อมีแท็ก

ไฟลทดสอบ Source Code และ ไฟลสําหรับทดสอบ Hex file

//----------------------------------------------------------------------------
// Mifare Read/Write RFID Module
// Model RFM015M-1
//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros


#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include <stdlib.h>

BYTE RxdataBuff[21];
BYTE sel_card[4]={0xBA,0x02,0x01,0xB9}; // Select Mifare card command return 10 bytes
BYTE byte_length;
/*---------------------------------------------------------------------------------
void LCD_clr_line(unsigned char j)
function : clear LCD on line number j (0 or 1)
input line number j
----------------------------------------------------------------------------------*/

7 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

void LCD_clr_line(unsigned char j)


{
LCD_1_Position(j,0);
LCD_1_PrCString(" ");
}

void main()
{
BYTE i;
char Cardf_Str[] = "Selected Card "; // Card selected string for 0x00 status
char Notag_Str[] = "No tag "; // No tag string for 0x01 status
char Colli_Str[] = "Collision occur"; // Collision occur string for 0x0A status
char Chksm_Str[] = "Checksum error "; // Checksum error string for 0xF0 status

LCD_1_Start(); // Initialize LCD


UART_1_CmdReset(); // Reset Command Buffer
UART_1_Start(UART_1_PARITY_NONE); // Start UART
LCD_1_Position(0,0); // Set LCD position
LCD_1_PrCString("BaudRate = 9600 ");

while(1)
{
PRT0DR |= 0X80;
while(PRT0DR & 0X80) //Test tag detect signal
{ // low level indicating tag in detection range;
LCD_1_Position(0,0); // high level indicating tag out.
LCD_1_PrString(Notag_Str); // Print "No tag" on the LCD ;
}
UART_1_CmdReset(); // Reset UART Command Buffer
for (i=0;i<4;i++)
{
UART_1_PutChar(sel_card[i]); // Send a character to UART TX port
}

if(UART_1_cGetChar()==0xBD)
{
byte_length = UART_1_cGetChar();
for (i=0;i<byte_length;i++)
{
RxdataBuff[i] = UART_1_cGetChar(); // Get a character from UART RX data register
}
LCD_1_Position(0,0);
switch(RxdataBuff[1]) // Check status byte
{
case 0x00: // If 0x00 : Operation success
LCD_1_PrString(Cardf_Str); // Print "Card selected" on the LCD ;
LCD_1_Position(1,0);
LCD_1_PrCString("SN: ");
for (i=2;i<6;i++)
{
LCD_1_PrHexByte(RxdataBuff[i]); // Print serial number of the card detected
}

8 of 9 09-Jun-10 1:17 AM
PrintWhatYouLike on RFID (Radio Frequency Identification) http://www.printwhatyoulike.com/print?url=http%3A%2F%2Fwww.rfidbasic.com%2Fmain.php%3Ft...

break;
case 0x01:
LCD_1_PrString(Notag_Str); // Print "No tag" on the LCD ;
LCD_clr_line(1);
break;
case 0x0A:
LCD_1_PrString(Colli_Str); // Print "Collision occur" on the LCD ;
LCD_clr_line(1);
break;
case 0xF0:
LCD_1_PrString(Chksm_Str); // Print "Checksum error" on the LCD ;
LCD_clr_line(1);
break;
}
}
else
{
LCD_1_Position(0,0);
LCD_1_PrCString("Cardreader error");
}
}
}

9 of 9 09-Jun-10 1:17 AM

You might also like