การใช้งาน rfid modules แบบที่ 1

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

Upload: know2pro

Post on 28-Jul-2015

264 views

Category:

Documents


8 download

DESCRIPTION

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

TRANSCRIPT

Page 1: การใช้งาน RFID Modules แบบที่ 1

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

Page 2: การใช้งาน RFID Modules แบบที่ 1

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

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

(Using the PSoC microcontroller with RFID Module.)

RFID คืออะไร

RFID ยอมาจากคําวา Radio Frequency Identification เปนระบบฉลากหรือปายอิเล็กทรอนิกส (Tag) ถูกพัฒนามาต้ังแตป ค.ศ. 1980 ปายนี้สามารถอานและเขียนคาขอมูล

ไดโดยผาน คล่ืนวิทยุ จากท่ีมีระยะหาง ดังนั้นเมื่อนําปายนี้ไปติดอยูกับวัตถุตางๆแลวบันทึกขอมูลของวัตถุนั้นใว เชน ผลิต ที่ไหน ใครเปนผูผลิต ผลิตอยางไร ผลิตวันไหน และเมื่อไร ประกอบไปดวยช้ินสวนกี่ช้ิน และแตละช้ิน มาจากท่ีไหน ก็จะสามารถใชปายนี้เปนตัวระบุเอกลักษณของวัตถุได การอานขอมูลของวัตถุนั้น ไมจําเปนตองถูกตองหรือสัมผัสท่ีตัววัตถุ (Contact-Less)

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

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

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

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

RFID Tag

แท็กชนิดแอ็กตีฟ (Active Tag) แท็กชนิดน้ีจะมีแบตเตอร่ีอยูภายในซึ่งใชเปนแหลงจายไฟขนาดเล็ก เพื่อปอนพลังงานไฟฟาใหแท็กทํางานโดยปกติ โดยแท็กชนิดน้ีมีฟงกชั่นการทํางานท่ัวไปท้ังอานและเขียนขอมูลลงในแท็กได และการท่ีตองใชแบตเตอร่ีจึงทําใหแท็กชนิดแอคตีฟมีอายุการใชงานจํากัดตามอายุของแบตเตอรี ่เมื่อแบตเตอรี่หมดก็ตองนําแท็กไปท้ิงไมสามารถนํากลับมาใชใหมได เน่ืองจากจะมีการซีล (seal) ท่ีตัวแท็กจึงไมสามารถเปล่ียนแบตเตอร่ีได อยางไรก็ตามถาสามารถออกแบบวงจรของแท็กใหกินกระแสไฟนอยๆ ก็อาจจะมีอายุการใชงานนานนับสิบป แท็กชนิดแอ็กทีฟน้ีจะมีหนวยความจําภายในขนาดใหญไดถึง 1เมกะไบตมีกําลังสงสูงและระยะการรับสงขอมูลไกลสูงสุดถึง 6 เมตร ซึ่งไกลกวาแท็กชนิดพาสซีฟ นอกจากน้ียังทํางานในบริเวณท่ีมีสัญญาณรบกวนไดดี แมแท็กชนิดน้ีจะมีขอดีอยูหลายขอแตก็มีขอเสียเรื่องราคาตอหนวยซึ่งแพง

1.

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

2.

RFID Reader

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

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

Page 3: การใช้งาน RFID Modules แบบที่ 1

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

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

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

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

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

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

Page 4: การใช้งาน RFID Modules แบบที่ 1

Data : ขอมูลท่ีสง ข้ึนอยูกับคําส่ังChecksum : คา Checksum เกิดจากการ xor กันต้ังแต Header ถึง Data มีขนาด 1 ไบต

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

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

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

Page 5: การใช้งาน RFID Modules แบบที่ 1

Data : ขอมูลท่ีสง ข้ึนอยูกับคําส่ังChecksum : คา Checksum เกิดจากการ xor กันต้ังแต Header ถึง Data มีขนาด 1 ไบต

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

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

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

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

Page 6: การใช้งาน RFID Modules แบบที่ 1

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

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

Page 7: การใช้งาน RFID Modules แบบที่ 1

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

ไฟลทดสอบ 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 bytesBYTE byte_length;/*---------------------------------------------------------------------------------void LCD_clr_line(unsigned char j)function : clear LCD on line number j (0 or 1)input line number j----------------------------------------------------------------------------------*/

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

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

Page 8: การใช้งาน RFID Modules แบบที่ 1

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 statuschar Notag_Str[] = "No tag "; // No tag string for 0x01 statuschar Colli_Str[] = "Collision occur"; // Collision occur string for 0x0A statuschar Chksm_Str[] = "Checksum error "; // Checksum error string for 0xF0 status

LCD_1_Start(); // Initialize LCDUART_1_CmdReset(); // Reset Command BufferUART_1_Start(UART_1_PARITY_NONE); // Start UARTLCD_1_Position(0,0); // Set LCD positionLCD_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 Bufferfor (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 successLCD_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}

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

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

Page 9: การใช้งาน RFID Modules แบบที่ 1

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");}}}

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

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