Подключение Модуля чтения RFID карт YS-RFID2 к esp32

Никак не могу подключить Модуль чтения RFID карт YS-RFID2 125 кГц, TK4100 UART 5V к esp32. Не видит данные и всё. Уже что только не пробовал. Подскажите, куда направить взгляд, может что-то не то делаю?

#define TX_PIN 10  //tx
#define RX_PIN 11 //rx

void setup() {
    Serial.begin(115200);
    Serial2.begin(9600);
    Serial.println("...INIT...");
}
void loop() {
    if (Serial2.available())
    {
        String tag = "";
        while (Serial2.available() > 0) {
            char c = Serial2.read();
            tag += c;
    }
    Serial.print("Tag detected: ");
    Serial.println(tag);
    delay(10);
}

Здесь нет ошибки?

Нет. Пины пробовал несколько раз менять местами Rx/TX

А у этой штуки это точно UART? Вот тут у китайцев чуть поболее, чем в наших магазинах написано. https://aliexpress.ru/item/1005004388589398.html?sku_id=12000029005110731 Но я что-то так и не понял, что это тут за пины TXD и RXD. Слова UART вообще не вижу, и про скорости ничего нет.

А есть Нано/Уно попробовать подключить? У этого модуля, пишут, питание 5в.
Может логика не подходит?

Мне в исходнике скобки не нравятся. Парность не сходится. Где-то обманывают, код не тот.

1 лайк

Да вроде есть UART

Уно/Нано нету. 5в и подключаю

  1. Setting method of serial port baud rate:
    (1) The serial port receiving format is: “Set the baud rate: xxxx@”
    Baud rate: 4800, 9600, 57600, 115200 If you want to set the baud rate to 9600, send: “Set the
    baud rate: 96000”

Вы скорость порта на устройстве настроили? В описании не указано умолчательное значение, поэтому никто не знает, на какой скорости оно вам отвечает.

Проще всего подключить его напрямую к порту компьютера и пообщаться в терминалке с ним.

Пробовал все предложенные скорости

Так может он ни на какой ни шлет, пока ему явно команду инициализации порта не пришлют?

В автономном режиме без МК метки запоминает, опознает?

Попробуйте через делитель 1кОм + 2кОм подключить пин TX
модуля к пину RX ESP32.
RX модуля вообще не подключайте

Да, запоминает, в out кидает 0/1 в соответствии с картой

Пробовал задавать

Serial2.write("Set the baud rate: 9600@");

Это как?) Можно схему

Наберите в гугле “согласование уровней 3.3в и 5в UART”

Вы считаете, что в результате Serial2 работает на 10 и 11 пине, или это по другому поводу ?
К каким пинам вы подключаете Serial2 ?
Проверьте работоспособность Serial2 тестовым скетчем, соединив его RX и TX пины (для перестраховки можно резистором на 1 кОм).

Если не изменяет память Serial2 на 4 и на 25, изменяет, на 38 пиновой плате на 16 и 17

Я ESP32 юзаю очень редко, знаю плохо, поэтому спросил:

Выше правильно сказали про пины, но всё равно может не работать.
Пробуйте инициализировать Serial2 так:

Спойлер
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);
  delay(300);

}

void loop() {
  static char a = '0';
  char b;
  Serial2.print(a);
  if (a++ > '~')
    a = '0';

  if (Serial.available())
  {
    b = Serial.read();
    Serial.println(b);
  }
  delay(100);
}

Запустив простой скетч, можно проверить, живы ли порты после 5в))

Спойлер

Спойлер

P.S. Код и картинку немного подправил