微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RFID MFRC522 自动测试失败 - ESP32

如何解决RFID MFRC522 自动测试失败 - ESP32

下午好。

我在我的项目中加入了一个 RFID - RC522 板来识别用户并做出相应的反应。

起初,一切正常,模块在初始化和读取标签时没有任何问题。

我决定对系统进行一些压力测试,以检查在 24/7 全天候工作时是否有任何部件出现问题。所以我打开系统去度假。当我回来时,RFID 模块无法读取任何标签。我尝试重新连接所有东西,最终让它再次工作。然而,当我重新启动系统时,它又停止工作了。

由于我的连接大部分是焊接的,那些不使用 ICD 连接器的连接我测试了所有电缆的连续性,我知道问题不在我的连接上。

我写了一个代码,将固件信息转储到串口中,并继续执行自动测试,直到成功。几天前我第一次测试它时,它无法获取固件信息或自动测试成功。当时它也无法读取任何标签。今天它设法获取固件信息,但它卡在自动测试的循环中。奇怪的是,尽管自动测试失败,但它可以读取标签

我上网查了一下,发现这似乎是这个模块的一个常见问题,而且通常与软件问题有关。为了仔细检查,我检查了电路板的所有组件,没有任何明显损坏的迹象。

我在模块中使用 13.56MHz 标签,经过压力测试,它仅保持 24/7 全天候运行 2 周,并且在此期间没有使用该系统。我正在使用 Doit DevKit1 ESP32 板来控制一切。

这是我目前仅用于测试电路板的代码。这是对MFRC522库自带的rfid_check代码的简单修改


#include <SPI.h>

#include <MFRC522.h>



#define RST_PIN         27 // D2 / 27         // Configurable,see typical pin layout above

#define SS_PIN          14 // D3 / 14         // Configurable,see typical pin layout above



MFRC522 mfrc522(SS_PIN,RST_PIN);  // Create MFRC522 instance



//MFRC522 mfrc522(SS_PIN);  // Create MFRC522 instance



/**

 * Check firmware only once at startup

 */

void setup() {

  Serial.begin(115200);   // Initialize serial communications with the PC

  Serial.println("Waiting for user input");

  while (!Serial.available());

  Serial.println("User input received. Initializing the test.");

  SPI.begin();          // Init SPI bus

  Serial.println("Will initialize the RFID!");

  mfrc522.PCD_Init();   // Init MFRC522 module

  delay(50);

  mfrc522.PCD_DumpVersionToSerial();

  

  bool hasFailed = false;



  while(!mfrc522.PCD_PerformSelftest()){

    hasFailed = true;

    Serial.println("It Failed again! Trying again in 500 ms.");

    mfrc522.PCD_Reset();

    delay(500);

  }



  if(hasFailed){

    mfrc522.PCD_Init();   // re-Init MFRC522 module

    Serial.println("Since it Failed on the self-test,I will initialize again");

  }

  else{

  Serial.println("Initialized without failing!");

  }

}



void loop() {} // nothing to do

结果:

Serial result

我的问题是:这是电路板故障的迹象还是软件上的错误?如何使代码更健壮,例如如何不时自动检查电路板是否仍然正常工作?我现在正在做的是执行自动测试,如果失败,我会重置电路板,直到它正常工作为止,但这不是一个方法,因为到目前为止,它可能无法通过自动测试,但仍然能够读取标签。该板是否存在长时间工作的已知问题?我需要它连续几个月 24/7 正常工作,而无需技术人员的任何干预,因为我打算使用它。董事会行为不稳定的原因可能是什么?我使用的是短电缆(~2m),所以 SPI 通信应该没有任何问题。

任何帮助将不胜感激。感谢您抽出宝贵时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。