Итак, я использую ESP32 с дисплеем TT GO (см. Распиновку на рисунке ниже) и хочу использовать RFID-модуль RC522, однако я получаю сообщение об ошибке связи, и версия прошивки неизвестна. Я использую Arduino IDE, библиотеку SPI и библиотеку MFRC522.
Я потратил весь день, просматривая inte rnet, я Прочитал множество постов на форумах и попробовал решения, которые были предоставлены (такие как: припаять контакты, проверить проводку снова ...). Я также читал и смотрел бесчисленные учебники, но все безрезультатно. Когда я пытался использовать модуль RFID на Arduino UNO, все работало замечательно, но мне пришлось использовать ESP32. Мне кажется, что я все перепробовал, поэтому я просто надеюсь, что кто-то столкнулся с той же проблемой и нашел решение.
Ниже приведен мой код, это пример DumpInfo библиотеки MFRC522, немного модифицированный потому что, как я уже сказал, я попробовал кучу «решений». RC522 имеет 8 контактов: 3,3 В, GND, RST, RQ, MOSI, MISO, SCK и SDA. 3,3 В подключено к 3,3 В ESP32, GND к GND ESP32. RST - это вывод сброса, который подключен к GPIO22 (определяется как RST_PIN). SDA - это ведомый контакт выбора, который подключен к GPIO21 (определяется как SS_PIN). Затем есть контакты SCK, MOSI и MISO, которые подключены соответственно к GPIO25, GPIO26 и GPIO27 (определены как SCK_PIN, MOSI_PIN и MISO_PIN). Вывод RQ используется для прерываний, которые нам не нужны, поэтому он ни к чему не подключен.
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 22 //GPIO22
#define SS_PIN 21 //GPIO21
#define MISO_PIN 27 //GPIO27
#define MOSI_PIN 26 //GPIO26
#define SCK_PIN 25 //GIPO25
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
SPIClass spi(HSPI);
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
spi.begin(SCK_PIN, MISO_PIN, MOSI_PIN);
spi.setDataMode(SPI_MODE3);
mfrc522.PCD_Init(); // Init MFRC522
delay(5000); // Optional delay. Some board do need more time after init to be ready, see Readme
mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}
void loop() {
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Dump debug info about the card; PICC_HaltA() is automatically called
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
В результате появляется несколько случайных символов, а затем на последовательном мониторе появляется следующее:
Firmware Version: 0x0 = (unknown)
WARNING: Communication failure, is the MFRC522 properly connected?
Scan PICC to see UID, SAK, type, and data blocks...
Как я уже говорил, это своего рода последнее средство. Я надеюсь, что кто-то был в такой же ситуации и мог бы предоставить некоторую полезную информацию, которую, я надеюсь, еще где-то не читал.