ESP32 RFID RC522 - версия прошивки 0x0 + ошибка связи - PullRequest
0 голосов
/ 04 апреля 2020

Итак, я использую ESP32 с дисплеем TT GO (см. Распиновку на рисунке ниже) и хочу использовать RFID-модуль RC522, однако я получаю сообщение об ошибке связи, и версия прошивки неизвестна. Я использую Arduino IDE, библиотеку SPI и библиотеку MFRC522.

ESP32 with TTGO display pinout

Я потратил весь день, просматривая 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...

Как я уже говорил, это своего рода последнее средство. Я надеюсь, что кто-то был в такой же ситуации и мог бы предоставить некоторую полезную информацию, которую, я надеюсь, еще где-то не читал.

...