3
Interfacing with POPBOT-XT เครื่องอ่าน NFC/RFID ที่เราจะติดต่อกันนี้ใช้ชิปเบอร์ยอดนิยม PN532 ซึ่งปกติชิปตัวนี้จะอยู่ในเครื่องโทรศัพท์สมาร์ทโฟน ที่ติดตั้ง NFC โดยจะทำาหน้าที่ทั้งอ่านเขียนการ์ด รวมถึง สื่อสารกันระหว่างเครื่องโทรศัพท์ที่มี NFC ด้วยกัน เครื่องอ่าน NFC/RFID นี้จะมาพร้อมขดลวดเสาอากาศย่านความถี่ 13.56MHz ซึ่งใช้งานได้อย่างดีกับการ์ด Mifare Classic ไอซี PN532 ออกแบบมาให้สื่อสารให้ไมโครคอนโทรลเลอร์ได้หลายรูปแบบไม่ว่าจะเป็นการสื่อสารอนุกรม, การสื่อสารแบบ SPI หรือ I2C บัส โดยในที่นี้จะเลือกใช้การสื่อสารแบบ I2C บัสกับ POP-BOT XT ซึ่งต้องขอบคุณ Ladayada/Adafruit (http://learn.adafruit.com/adafruit-pn532-rfid-nfc/arduino-library) และ elechouse.com http://www.elechouse.com/elechouse/index.php?main_page=product_in- fo&cPath=90_93&products_id=2205 สำาหรับไลบรารี่ที่ช่วยให้การติดต่อกับเครื่องอ่านเป็นเรื่องง่าย สำาหรับบอร์ดควบคุม ตามตัวอย่างนี้เลือกใช้บอร์ด POPXT หรือจะใช้บอร์ด Unicon ก็ได้โดยการทำางานของบอร์ดทั้ง สองนี้จะเหมือนกัน โดยเน้นการแสดงผลค่าที่อ่านได้ที่หน้าจอกราฟิก LCD RFID/NFC

RFID/NFC Interfacing with POPBOT-XT

Embed Size (px)

DESCRIPTION

ตัวอย่างการเชื่อมต่อสายและการเขียนโปรแกรมเพื่อติดต่อเครื่องอ่าน RFID/NFC

Citation preview

Page 1: RFID/NFC Interfacing with POPBOT-XT

Interfacing with POPBOT-XT

เครื่องอ่านNFC/RFIDที่เราจะติดต่อกันนี้ใช้ชิปเบอร์ยอดนิยมPN532ซึ่งปกติชิปตัวนี้จะอยู่ในเครื่องโทรศัพท์สมาร์ทโฟน

ที่ติดตั้งNFC โดยจะทำาหน้าที่ทั้งอ่านเขียนการ์ด รวมถึง สื่อสารกันระหว่างเครื่องโทรศัพท์ที่มีNFCด้วยกัน เครื่องอ่าน

NFC/RFIDนี้จะมาพร้อมขดลวดเสาอากาศย่านความถี่13.56MHzซึ่งใช้งานได้อย่างดีกับการ์ดMifareClassic

ไอซีPN532ออกแบบมาให้สื่อสารให้ไมโครคอนโทรลเลอร์ได้หลายรูปแบบไม่ว่าจะเป็นการสื่อสารอนุกรม,การสื่อสารแบบSPI

หรือI2Cบัสโดยในที่นี้จะเลือกใช้การสื่อสารแบบI2CบัสกับPOP-BOTXTซึ่งต้องขอบคุณ

Ladayada/Adafruit (http://learn.adafruit.com/adafruit-pn532-rfid-nfc/arduino-library)

และ elechouse.com http://www.elechouse.com/elechouse/index.php?main_page=product_in-

fo&cPath=90_93&products_id=2205

สำาหรับไลบรารี่ที่ช่วยให้การติดต่อกับเครื่องอ่านเป็นเรื่องง่าย

สำาหรับบอร์ดควบคุม ตามตัวอย่างนี้เลือกใช้บอร์ดPOPXTหรือจะใช้บอร์ดUniconก็ได้โดยการทำางานของบอร์ดทั้ง

สองนี้จะเหมือนกันโดยเน้นการแสดงผลค่าที่อ่านได้ที่หน้าจอกราฟิกLCD

RFID/NFC

Page 2: RFID/NFC Interfacing with POPBOT-XT

การเชื่อมต่อการเชื่อมต่อบอร์ดPOP-BOTXTเข้ากับเครื่องอ่านNFC/RFIDจะเชื่อมต่อผ่านบอร์ดJCON-PORT4เพื่อสะดวกในการ

ต่อและไม่ต้องตัดสายสัญญาณสำาหรับผู้ที่มีประสบการณ์แล้วอาจเลือกใช้การตัดสายบัดกรีเข้าที่เครื่องอ่านโดยตรงเลยก็ได้โดย

ขาที่เชื่อมต่อมี4ขาคือ+5V SDA SCL GND

ติดตั้งไลบรารี่ไลบรารี่สามารถดาวน์โหลดได้ที่

http://www.elechouse.com/elechouse/images/product/PN532%20NFC%20Module/PN532_NFC_elechouse.rar

หลังจากแตกไฟล์แล้วให้นำาไปเก็บไว้ในโฟลเดอร์Arduino/librariesโดยอาจจะสร้างเป็นโฟลเดอร์ชื่อnfcขึ้นมาก็ได้ดังรูป

Page 3: RFID/NFC Interfacing with POPBOT-XT

โค้ดตัวอย่างการทำางาน

//ไลบรารีส่�าหรับการตดิตอ่กบัเครอืงอา่น NFC และ RFID#include <nfc.h>// ไลบรารีส่�าหรับหุน่ยนต ์POPBOT-XT#include <popxt.h>

NFC_Module NFC; // ใชค้ลาส NFCunsigned long versiondata;void setup(){ glcdMode(3); // จอแสดงผลแนวนอน NFC.begin(); versiondata = NFC.get_version(); // ตรวจสอบเวอรช์ัน่ if (!versiondata) { setTextColor(GLCD_RED); glcd(1,0,”Didn’t find PN53x board”); // แจง้ขอ้ความถา้ตรวจไมพ่บเครือ่งอา่น while (1); // halt } setTextSize(2); setTextColor(GLCD_WHITE);glcd(0,0,”NFC Reader”); setTextSize(1); setTextColor(GLCD_BLUE); // แสดงเวอรช์ัน่ glcd(2,0,”Version%d.%d”,(versiondata>>16)&0xFF,(versiondata>>8)&0xFF); /* Set normal mode, and disable SAM */ NFC.SAMConfiguration(); //ก�าหนดโหมดการท�างาน}void loop(){ byte BUF[32],STA; STA = NFC.InListPassiveTarget(BUF); //อา่นคา่ NFC เกบ็ในบฟัเฟอร์ if(STA && BUF[0] == 4){ // ตรวจสอบขนาดวา่เป็น mifare หรอืไม่ setTextColor(GLCD_SKY); glcd(4,0,”UUID Size %d Byte”,BUF[0]); // แจง้ขนาด setTextColor(GLCD_GREEN);glcd(6,0,”UUID:”); for(int i=0; i<BUF[0]; i++){ // น�าคา่รหสัทีอ่า่นไดจ้ากการด์หรอืแทก๊มาแสดง setTextColor(GLCD_YELLOW);glcd(6,5+(i*4),”%d “,BUF[i+1]); } }}

ผลลัพธ์การทำางานตัวอย่างนี้จะเป็นการอ่านค่าจากเครื่องอ่าน ตรวจสอบดูว่ามีเครื่องอ่านเชื่อมต่ออยู่หรือไม่ ถ้ามีการเชื่อมจะแสดงเวอร์ชั่นของชิป

จากนั้นจะเป็นการอ่านค่าการ์ดมาเก็บไว้ในบัฟเฟอร์ถ้าตรวจพบว่าการ์ดมีรูปแบบเป็น4ไบต์ตามมาตรฐานของMifareให้นำา

ค่ามาแสดงที่หน้าจอGLCD