我正在尝试将 ESP32 开发套件 V1 与 MISO、MOSI 和 CLK 与 sd 阅读器和 RFID 阅读器并联使用。如果我拔下 SD 卡读卡器,RFID 读卡器就可以工作。当我插入 SD 卡时,它会正确初始化,但 RFID 不会为此扫描或发送任何信息。
/*
* Rui Santos
* Complete Project Details http://randomnerdtutorials.com
*/
#include <MFRC522.h> // for the RFID
#include <SPI.h> // for the RFID and SD card module
#include <SD.h> // for the SD card
// define pins for RFID
#define CS_RFID 32
#define RST_RFID 33
// define select pin for SD card module
#define CS_SD 26
// Create a file to store the data
File myFile;
// Instance of the class for RFID
MFRC522 rfid(CS_RFID, RST_RFID);
// Variable to hold the tag's UID
String uidString;
// Instance of the class for RTC
void setup() {
Serial.begin(9600);
while(!Serial); // for Leonardo/Micro/Zero
// Init SPI bus
SPI.begin();
// Init MFRC522
rfid.PCD_Init();
// Setup for the SD card
Serial.print("Initializing SD card...");
if(!SD.begin(CS_SD)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// Setup for the RTC
}
void loop() {
//look for new cards
digitalWrite(CS_SD, HIGH);
if(rfid.PICC_IsNewCardPresent()) {
readRFID();
logCard();
}
delay(10);
}
void readRFID() {
rfid.PICC_ReadCardSerial();
Serial.print("Tag UID: ");
uidString = String(rfid.uid.uidByte[0]) + " " + String(rfid.uid.uidByte[1]) + " " +
String(rfid.uid.uidByte[2]) + " " + String(rfid.uid.uidByte[3]);
Serial.println(uidString);
}
void logCard() {
// Enables SD card chip select pin
digitalWrite(CS_SD,LOW);
// Open file
myFile=SD.open("DATA.txt", FILE_WRITE);
// If the file opened ok, write to it
if (myFile) {
Serial.println("File opened ok");
myFile.print(uidString);
myFile.print(", ");
}
else {
Serial.println("error opening data.txt");
}
// Disables SD card chip select pin
digitalWrite(CS_SD,HIGH);
}
我已经做了 7 个小时,并尝试了许多不同的事情,例如使用 VSPI 和 HSPI 总线,下拉/上拉 cs 引脚上的电阻,更改库属性,添加一个电阻将 SD 的 MOSI 连接到 MOSI的射频识别。没有任何效果。这是一个高级设计项目,我正在将它整合到一个更大的项目中。我也尝试过其他 Stack Overflow 解决方案,但一无所获。我只需要基本的工作,然后我就可以将它用于我的整个项目。任何帮助将不胜感激。