0

好吧,所以我对 Arduino 很陌生,不久前从 eBay 上买了一个 Mega2560 入门套件以及其他一些配件,我有一个“仿冒”板,但到目前为止它似乎对其他所有东西都很好用。无论如何,我购买了一个 MF522-AN RFID 阅读器,但无法让它工作。我已经尝试了在此页面上找到的代码:

http://www.grantgibson.co.uk/blog/2012/04/how-to-get-started-with-the-mifare-mf522-an-and-arduino/

当我把所有东西都连接起来时,它只会给我一个空白的串行页面,并且 TX 和 RX 灯保持不亮。我已经尝试根据此页面建议的两个引脚来连接它:

http://www.b2cqshop.com/products/203-arduino-rfid-module-kit-1356-mhz-with-tags-spi-w-and-r-by-cooqrobot.aspx

没事了。我已经尝试了它附带的 RFID 标签和我的钥匙扣进入我的宿舍,但没有任何效果,Arduino 软件上的串行窗口仍然是空白的。这是我试图运行的代码:

http://pastie.org/4235666

4

3 回答 3

1

尝试取消注释第 186-196 行:

// Serial.println("The card's number is  : ");
// etc

每当标签进入范围时,这应该会提供一些详细的输出。

于 2012-10-31T22:07:37.383 回答
1

首先确保所有连接都正确。如果您的 MF522-AN 有引脚标记,请按此顺序进行。如果没有,请从左下角的引脚开始。

您使用的代码是检查第一对卡号是否与格兰特使用的相同(第 200-204 行):

if(serNum[0] == 88) { // Is the first pair equal to 88?
   Serial.println("Hello Grant");
   } 
else if(serNum[0] == 173) { // Is the first pair equal to 173?
   Serial.println("Hello David");
   }

可能您的卡片与这两个示例中的任何一个都不匹配。如果要逐对打印卡号,请注释这些行 (200-204) 和取消注释行 (186-196):

  Serial.println("The card's number is  : ");
  Serial.print(serNum[0]);
  Serial.print(" , ");
  Serial.print(serNum[1],BIN);
  Serial.print(" , ");
  Serial.print(serNum[2],BIN);
  Serial.print(" , ");
  Serial.print(serNum[3],BIN);
  Serial.print(" , ");
  Serial.print(serNum[4],BIN);
  Serial.println(" ");

如果要打印检测到卡的确认信息,还可以取消注释行 (173-177):

  Serial.println("Card detected");
  Serial.print(str[0],BIN);
  Serial.print(" , ");
  Serial.print(str[1],BIN);
  Serial.println(" ");

如果您发现 Dr.Leong 的原始代码令人困惑,请试试这个。我还在那里包含了引脚和 SPI 信息。在示例代码中,所有卡号对也都转换为十进制数字。

于 2013-04-10T14:56:30.020 回答
0

我不知道您是否已经尝试过,但是您可能需要稍微更改从 Arduino 到 RFID 阅读器的连接,因为您拥有的 mega 2560 的 SPI 引脚与演示原本用于的 UNO 不同. 我相信 51. 52 和 53 负责.. 你应该查看 Arduino 网站上的 Mega 2560 页面。

-本

于 2013-03-18T05:15:03.753 回答