同时使用 RFID 和 SD 卡读卡器,SPI 和 ESP32 不工作

问题描述 投票:0回答:0

我正在尝试将 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 解决方案,但一无所获。我只需要基本的工作,然后我就可以将它用于我的整个项目。任何帮助将不胜感激。

esp32 spi rfid arduino-esp8266 arduino-esp32
© www.soinside.com 2019 - 2024. All rights reserved.