Считыватель RFID RC522 не читает чип NTAG216

У меня есть модуль RFID-RC522 на основе чипа MFRC522. Этот чип описан в техническом описании как поддерживающий протоколы «ISO/IEC 14443 A/MIFARE и NTAG». Я подключил его к Arduino Uno, используя рекомендованную проводку в документации для библиотеки MFRC522, которую я использую. У меня есть скетч, который (среди прочего) опрашивает наличие новой карты:

void setup() {
    lcd.setup ();       // инициализируем ЖК-дисплей
    SPI.begin();        // Инициируем шину SPI
    mfrc522.PCD_Init(); // Инициализация карты MFRC522
}

void loop() {
    // Ищем новые карты
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
        return;
    }
    lcd.println ("Found new card");
    ...
}

Этот скетч правильно определяет наличие карты, поставляемой с модулем (я полагаю, что это карта Mifare Classic), но не определяет мой имплант NTAG216. Кто-нибудь знает, почему он не может найти имплантированный чип?

, 👍0

Обсуждение

пожалуйста, предоставьте больше вашего кода, из того, что вы предоставили, все, что я вижу, это то, что ваш ЖК-дисплей будет постоянно печатать «Найдена новая карта» снова и снова ... плюс, у вас есть «возврат» в основном цикле ???, @Madivad

@Madivad, этого кода будет достаточно, чтобы напечатать «Найдена новая карта», когда любая совместимая карта подносится близко к считывателю - возможно, сама карта неисправна?, @Jaromanda X

Привет @JaromandaX, проблема в том, что оператор печати находится за пределами условного выражения if, но внутри основного цикла выполнения, который будет просто постоянно печатать «Найдена новая карта». Найдена новая карта. Найдена новая карта. до бесконечности, @Madivad

@Madivad, вы были бы правы, если бы условный «возврат» отсутствовал, однако он не отсутствует, и поэтому вы не правы, @Jaromanda X

@JaromandaX Я понимаю вашу точку зрения и исправляюсь. Возврат **выполняется**, если нет новой карты и выполнение остановлено, но пока карта присутствует, println будет просто повторяться. **До чего** не доходит ОП. Я понял это сейчас. Раньше я не рассматривал «возврат» в основном цикле и не понимал его последствий. Пока я не провел несколько экспериментов :), @Madivad

Мои извинения за возрождение такого старого сообщения, но было ли это когда-либо решено. У меня точно такая проблема. Любая помощь будет оценена по достоинству., @jraydoran


1 ответ


2

Я получил комплект RFID (RF522) только на этой неделе, но еще не имел возможности поиграть с ним, а также у меня нет имплантата NTAG216. Но я помню, когда я исследовал их, я увидел пару сообщений, связанных с «Ошибками аутентификации». Проблема для вас (возможно) в том, что они были на Python, а не на C:

https://github.com/mxgxw/MFRC522-python/issues/24

и ссылка Cotix

https://github.com/mj3052/MFRC522-Pi

Посмотрите на них и посмотрите, что они могут вам сказать.

Проблема с функцией PICC_IsNewCardPresent() заключается в том, что она дает ответ Да/Нет, а не "Да, но есть ошибка". В этом случае он также вернет false. Но другой код может дать вам подсказку - вам придется покопаться в библиотеке...

,

Хм. AIUI Я должен быть в состоянии прочитать UID чипа без аутентификации (иначе как бы вы узнали, какой пароль использовать для аутентификации в системе с несколькими картами?), но, как вы предлагаете, я просмотрю библиотеку и посмотрите, есть ли способ узнать об ошибках при обнаружении карт. Жаль, что это, кажется, единственная доступная библиотека Arduino для этого чипа, а в AFAICT почти полностью отсутствует документация :(, @Jules

Изучив это дальше, это не звучит как правильный ответ. Аутентификация требует, чтобы чип был в «активном» состоянии, прежде чем вы сможете начать процесс аутентификации, и предполагается, что метод «PICC_IsNewCardPresent» находит карты, которые находятся в «неактивном» состоянии, и переводит одну из них в «активное», поэтому должен иметь возможность обрабатывать поиск карты без предварительной аутентификации., @Jules