Библиотека RDM6300 не работает на ESP8266

У меня есть RFID-модуль RDM6300, который я пытаюсь подключить к ESP8266 с помощью библиотеки rdm6300.h.

У меня все это работало вместе с другими компонентами, но мы подключились к ESP8266, но нам пришлось перейти от макетной платы к реальной проводной настройке. Все продолжало работать, кроме считывателя RFID. Раньше я делал это, ссылаясь на этот подход (более или менее):

#include <rdm6300.h>

#define RDM6300_RX_PIN 4
#define READ_LED_PIN 13

Rdm6300 rdm6300;

void setup()
{
    Serial.begin(115200);

    pinMode(READ_LED_PIN, OUTPUT);
    digitalWrite(READ_LED_PIN, LOW);

    rdm6300.begin(RDM6300_RX_PIN);

    Serial.println("\nPlace RFID tag near the rdm6300...");
}

void loop()
{
    /* if non-zero tag_id, update() returns true- a new tag is near! */
    if (rdm6300.update())
        Serial.println(rdm6300.get_tag_id(), HEX);

    digitalWrite(READ_LED_PIN, rdm6300.is_tag_near());

    delay(10);
}

но теперь, после перестановки, он просто перестал читать теги. Что я сделал, так это отключил все от ESP и оставил подключенным к нему только RDM6300 с образцом кода. К сожалению, он, похоже, не обнаруживает никаких тегов.

Чтобы проверить, не выходят ли компоненты из строя по какой-либо причине, я решил протестировать его, используя библиотеку SoftwareSerial.h следующим образом:

#include <SoftwareSerial.h>
SoftwareSerial RFID(2, 3); // RX и TX

int i;

void setup()
{
  RFID.begin(9600);    // запустить последовательный считыватель RFID
  Serial.begin(9600);  // start serial to PC 
}

void loop()
{
  if (RFID.available() > 0) 
  {
     i = RFID.read();
     Serial.print(i, DEC);
     Serial.print(" ");
  }
}

и это сработало совершенно нормально. Я смог прочитать полезную нагрузку, поступающую с чипа:

2 30 31 30 46 33 46 38 44 39 31 32 44 3

Но, поскольку я не хочу реализовывать все, что связано с декодированием этого последовательного потока, я решил спросить ваше мнение, что здесь может быть не так. Раньше это работало без каких-либо проблем, но теперь это не так.

Есть кое-что интересное, что я тоже заметил. Когда я запускаю первый обрезанный код и меняю используемый контакт ESP8266 с 4 на 16(D0) и загружаю его, как только я перемещаю тег близко к антенне, индикатор оборудования, связанный с этим выводом, начинает мигать, и когда я возвращаю тег (подальше от антенны), он перестает мигать.

Это заставляет меня думать, что на аппаратном уровне все в порядке, но возникают некоторые проблемы с программным обеспечением.

, 👍-1

Обсуждение

Примечание к Serial скетчу sw: вывод 3-это аппаратный серийный RX, @Juraj

разве библиотека rdm6300 не реализует что-то вроде sw Serial? вы пробовали sw Serial с выводом 4 и rdm6300 с выводом 2?, @Juraj

@Juraj это реализация: https://github.com/arduino12/rdm6300/blob/master/src/rdm6300.cpp, @user2128702

да, это встроенный последовательный sw, @Juraj

@Juraj, как это помогает в моем случае?, @user2128702

вы пробовали sw Serial с выводом 4 и rdm6300 с выводом 2?, @Juraj

Я использую один вывод при подключении между ESP8266 и RDM6300. Это может быть любой цифровой вывод., @user2128702

да, но вывод 2 работает с программным обеспечением. вы пробовали это с библиотекой RDM6300?, @Juraj

Да, я сделал это, и в этом проблема, что раньше это работало, а теперь не работает. Я описал это в своем вопросе., @user2128702

в вопросе вы пишете о 4 и 16 с библиотекой RDM6300. и вы пишете, что pin 2 работает с программным обеспечением. итак, вы пробовали " rdm6300.begin(2);"?, @Juraj

Я попробовал это, и индикатор GPIO2 на борту мигает, когда тег находится рядом, но " rdm6300.update()` никогда не возвращает значение true. Таким образом, я не могу обнаружить фактический тег и прочитать его идентификатор. Это моя проблема., @user2128702


1 ответ


0

Что решило проблему для меня, так это перейти в диспетчер плат в Arduino IDE и обновить его до последней версии:

Затем я получил следующую ошибку при компиляции:

Плата generic (платформа esp8266, пакет esp8266) неизвестна

Чтобы исправить это, я последовал этим инструкциям.

И я также удалил библиотеку rdm6300 из C:\Program Файлы\Arduino\библиотеки и переместил его в C:\Users\myusername\Documents\Arduino\libraries

,