jasonqoo0622 发表于 2013-8-12 11:18:34

求助 F100讀取RFID

本帖最后由 jasonqoo0622 于 2013-8-12 11:23 编辑

各位大家好

小弟最近在網路上面買了F100 RFID讀寫卡模組MFRC522(如下圖)




小弟使用的是Arduino Uno

並且想要試著使用這個讀寫卡模組讀取RFID的資料

我嘗試使用賣家給的程式碼並且依照網路上的資料去對腳位

可是在serial print卻都沒有反應

不知道是不是小弟腳位對應上有問題 或是賣家提供的程式碼有問題

想上來請教大家 謝謝~

http://wenku.baidu.com/view/64c10a10a300a6c30c229fb0?fr=prin
這是賣家提供的資訊


小弟連接腳位的方式是
   F100               Arduino Uno
VCC3V3   <=>         3.3V
UART_RX   <=>   Digital Pin 1(TX)
UART_TX   <=>   Digital Pin 0(RX)
GND          <=>          GND

中間Pin1 Pin0相對應的TX RX我有交替換過去嘗試

以下是程式碼:

int led = 13;

void setup(){

Serial.begin(9600);

pinMode(led, OUTPUT);

}

char gBuffer;

int gIndex=0;


void readLine(){

gIndex=0;

while(true){

    int iAvailable = Serial.available();

    if(iAvailable > 0){

       for(int i=0; i<iAvailable; i++){

         gBuffer = Serial.read();

         gIndex++;

       }

       if(gBuffer == '\r'){

         return;
       }

    }

}

}

void printBuffer(){

for(int i=0; i<gIndex; i++){

    Serial.print(gBuffer);

}
//parse data here

}

boolean atPrint(){

Serial.print("at+print\r");

readLine();

String response = gBuffer;

if(response.indexOf("+print") != -1){

   printBuffer();

   return true;

}

return false;

}

boolean atSet(){

Serial.print("at+set block=04 number=01\r");

readLine();

String response = gBuffer;

if(response.indexOf("+set") != -1){

   printBuffer();

   return true;

}

return false;

}

boolean atQuery(){

Serial.print("AT+QUERY\r");

readLine();

String response = gBuffer;

if(response.indexOf("FAIL") != -1){

    return false;

}

if(response.indexOf("+query") != -1){

   printBuffer();

   return true;

}

return false;

}

boolean atRead(){

int iNumber = 1;

Serial.print("AT+READ number=01\r");

readLine();

String response = gBuffer;

if(response.indexOf("FAIL") != -1){

    return false;

}

if(response.indexOf("+read") == -1){

   return false;

}

printBuffer();

//the read times depends on the read block number

for(int i=0; i<iNumber; i++){

    readLine();

    response = gBuffer;

    if(response.indexOf("FAIL") != -1){

      return false;

    }

    if(response.indexOf("+read") == -1){

       return false;

    }

    printBuffer();

}

return true;

}

boolean atWrite(){

Serial.print("AT+WRITE data=12345678901234567890123456789012\r");

readLine();

   String response = gBuffer;

if(response.indexOf("FAIL") != -1){

    return false;

}

if(response.indexOf("+write") == -1){

   return false;

}

printBuffer();

//read result

readLine();

response = gBuffer;

if(response.indexOf("FAIL") != -1){

    return false;

}

if(response.indexOf("+write") == -1){

   return false;

}

printBuffer();

return true;

}

void blink(int num){

for(int i=0; i<num; i++){

    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

    delay(200);               // wait for a second

    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

    delay(200);            // wait for a second

}

}

void loop(){

   blink(2);

   if(atPrint() == true){

   digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
   }else{

   digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

   }
   
   delay(2000);

   blink(4);

   if(atSet() == true){

   digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

   }else{

   digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

   }

   delay(4000);

   blink(8);
   
   if(atQuery() == true){

   digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

   }else{

   digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
   }

   delay(4000);

   blink(3);
   
   if(atRead() == true){

   digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

   }else{

   digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

   }

   delay(4000);

   blink(6);
   
   if(atWrite() == true)

   {

   digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

   }else{

   digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

   }

   delay(2000);
}

p857211 发表于 2013-8-13 13:14:37

感應線圈有接上嗎?

jasonqoo0622 发表于 2013-8-14 11:04:28

有接上 第一張圖的外圍部分 就是天線
页: [1]
查看完整版本: 求助 F100讀取RFID