[ATX] RFID with Robo-Creator

264436_522034187854190_1096266961_n (1)

    เป็นที่ทราบกันอยู่แล้วว่าซอฟต์แวร์ Arduino ที่ใช้ใน POPBOT-XT และ Wiring ที่ใช้ใน Robo-Creator มีจุดกำเนิดเริ่มต้นมาจากที่เดียวกัน มีความคล้ายคลึงในการเขียนโปรแกรมค่อนข้างมาก ดังนั้นเมื่อนำมาติดต่อกับอุปกรณ์ต่าง ๆ ก็แทบจะใช้โค้ดตัวอย่างเดียวกันได้เลย

945248_522039461186996_1399103134_n

     ก่อนหน้านี้ทาง inex แนะนำวิธีการเขียนโปรแกรมติดต่อระหว่างบอร์ด POP-XT กับเครื่องอ่าน NFC/RFID โดยใช้ตัวอย่างที่อ้างอิงจากเวปไซต์ adafruit และ elechouse ซึ่งดัดแปลงซอร์สโค้ดเพียงเล็กน้อยก็สามารถใช้งานกับ POP-XT ได้  ดังนั้นเมื่อนำมาใช้งานกับ Robo-Creator จึงไม่จำเป็นต้องแก้ไขโค้ดโปรแกรมมากนัก โดยทำตามขั้นตอนดังนี้

943369_522040391186903_2136865466_n

     1. ดาวน์โหลดไลบรารี่สำหรับติดต่อเครื่องอ่าน NFC/RFID จากArdafruit โดยเข้าไปที่ https://github.com/adafruit/Adafruit_NFCShield_I2C/archive/master.zip

946394_522040577853551_359581438_n

2. แตกโฟลเดอร์ Adafruit_NFCShield_I2C-master ไปไว้ที่ C:\Wiring\libraries      

3. เปิดไฟล์ Adafruit_NFCShield_I2C.cpp ภายในโฟลเดอร์ Adafruit_NFCShield_I2C-master มาแก้ไข  มีจุดที่ต้องแก้ไข 3 จุดดังนี้
      3.1 บรรทัดที่ 43-47 จากเดิม  
         #if ARDUINO >= 100
             #include “Arduino.h”
          #else
              #include “WProgram.h”
           #endif
ให้แก้เหลือเพียงบรรทัดเดียวคือ
         #include “wiring.h”

        3.2 บรรทัดที่ 72-76 จากเดิม  
           #if ARDUINO >= 100
                  Wire.write((uint8_t)x);
             #else
                  Wire.send(x);
               #endif  
 ให้แก้เหลือเพียงบรรทัด
            Wire.write((uint8_t)x);

          3.3 บรรทัดที่ 86-90 จากเดิม
                #if ARDUINO >= 100
                       return Wire.read();
                 #else
                       return Wire.receive();
                  #endif
ให้แก้เหลือเพียงบรรทัด
               return Wire.read();

            3.4 ทำการบันทึกไฟล์ที่แก้ไขให้เรียบร้อย

4.  เปิดไฟล์ Adafruit_NFCShield_I2C.h ขึ้นมาแก้ไข ในบรรทัด 32-36 จากเดิม
       #if ARDUINO >= 100
            #include “Arduino.h”
        #else
             #include “WProgram.h”
        #endif
    ให้แก้เหลือเพียงบรรทัดเดียวคือ
         #include “wiring.h”

5. ทำการเชื่อมต่อสายระหว่างบอร์ด Robo-Creator ในตำแหน่งดังรูป ขา SDA ของเครื่องอ่าน ต่อเข้ากับขา SDA/1 ของ Robo-Creator ขา SCL ของเครื่องอ่าน ต่อเข้ากับขา SCL/0 ของ Robo-Creator ขา IRQ ของเครื่องอ่าน ต่อกับขา RX1/2 ของ Robo-Creator

6. เปิดโปรแกรม Wiring และเขียนโปรแกรมเพื่ออ่านค่าจากการ์ด RFID ดังนี้

 

/**************************************************************************/
#include <wire.h>
#include <adafruit_nfcshield_i2c.h>
#include <atx.h>
 
#define IRQ   (2)
#define RESET (3)  // ไม่จำเป็นต้องต่อก็ได้
Adafruit_NFCShield_I2C NFC(IRQ, RESET);
unsigned long versiondata ;
 
void setup(void) {
  Serial.begin(115200);
  NFC.begin();
  versiondata = NFC.getFirmwareVersion();
  if (! versiondata) {
    lcd("No NFC Reader");
    while (1); // halt
  }
  lcd("NFC Ver.%d.%d",(versiondata>>16) & 0xFF,(versiondata>>8) & 0xFF);
  NFC.SAMConfig();  // configure board to read RFID tags
}
 
void loop(void) {
  byte success;
  byte uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
  byte uidLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
  success = NFC.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  if (success) {
      lcd("#n%d.%d.%d.%d",uid[0],uid[1],uid[2],uid[3]);
  }
}

946549_522039184520357_271084476_n
Facebook Comments