如何解决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
结果:
我的问题是:这是电路板故障的迹象还是软件上的错误?如何使代码更健壮,例如如何不时自动检查电路板是否仍然正常工作?我现在正在做的是执行自动测试,如果失败,我会重置电路板,直到它正常工作为止,但这不是一个好方法,因为到目前为止,它可能无法通过自动测试,但仍然能够读取标签。该板是否存在长时间工作的已知问题?我需要它连续几个月 24/7 正常工作,而无需技术人员的任何干预,因为我打算使用它。董事会行为不稳定的原因可能是什么?我使用的是短电缆(~2m),所以 SPI 通信应该没有任何问题。
任何帮助将不胜感激。感谢您抽出宝贵时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。