RFID-RC522 Невозможно прочитать с MIFARE Ultralight
Я испробовал много способов получить и распечатать UID и другие данные из MIFARE Ultralight, но это всегда заканчивалось ошибкой. Я использую считыватель RFID-RC522
с Arduino UNO и библиотекой MFRC522.
Обычно я могу получить и напечатать чип типа PICC, но это единственное, что работает.
Вот как я подключил свой считыватель RC522:
<img src="https://i.ytimg.com/vi/23aMjljCLZI/maxresdef ault.jpg ">
Это мой код:
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
MFRC522 rfid(SS_PIN, RST_PIN);
unsigned long noSignal = 0;
bool lastState = true;
bool read = true;
void setup()
{
pinMode(2, OUTPUT); //Красный светодиод
pinMode(3, OUTPUT); //Зеленый светодиод
Serial.begin(9600);
SPI.begin();
while (!Serial);
rfid.PCD_Init();
Serial.println("RFID ctecka byla uspesne spustena."); // Печатает «Считыватель RFID успешно запущен»;
Serial.println();
changeLed(true);
}
void changeLed(bool red)
{
digitalWrite(2, red);
digitalWrite(3, !red);
}
void loop()
{
if (millis() - noSignal >= 300)
{
changeLed(true);
read = true;
}
bool state = !rfid.PICC_IsNewCardPresent() && !rfid.PICC_ReadCardSerial();
if (state != lastState)
if (state)
noSignal = millis();
else if (read)
{
read = false;
changeLed(false);
noSignal = millis();
Serial.println("---------Cip detekovan----------"); // Печатает «Обнаружен чип»;
Serial.println();
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
Serial.print("Znacka cipu: ");//Выводит тип чипа
Serial.println(rfid.PICC_GetTypeName(piccType));
rfid.PICC_DumpToSerial(&rfid.uid); // Вот ошибка
Serial.println();
Serial.println("---------Cteni skoncilo----------");//выводит "Чтение завершено"
Serial.println();
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
lastState = state;
}
Снимок серийного монитора:
Возможно, важно то, что когда я вызываю PCD_DumpVersionToSerial()
, я получаю:
Firmware Version: 0x12 = (unknown)
Где-то я читал, что мой Arduino не совместим с MIFARE Ultralight, и мне нужны карты MIFARE Classic. Это правда? Могу ли я решить эту проблему, используя другую библиотеку или аппаратную проблему? Спасибо
Кстати. Извините за мой английский, это не мой родной язык.
ИЗМЕНИТЬ: Я спросил своего друга, у которого тоже есть Arduino из того же магазина, что и я, может ли он читать карты MIFARE Ultralight. Он сказал, что у него это работает. Так что моя проблема, вероятно, будет на аппаратной стороне. У нас обоих есть неофициальные Arduino от aliexpress.
@David Moškoř, 👍0
1 ответ
В первых строках кода есть две строки, которые говорят:
#define RST_PIN 9
#define SS_PIN 10
Они определяют контакт RESET на контакте D9, а SDA на контакте D10. Итак, у вас возникла ошибка подключения, попробуйте подключиться, как показано на рисунке, и все будет готово.
- Использование прерываний с RC522
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- rfid_default_keys проверить с помощью RC522
- MFRC522: прошивка неизвестна
- MFRC522 не сканируется карта
- RFID-RC522 не работает, горит красный светодиод
- Считывание одновременно RFID-МЕТКИ с помощью нескольких RFID-считывателей [MFRC522]
- Arduino Uno - Как записать персональные данные в NTAG213 с помощью RFID-RC522
Извините, я ошибся. Я подключил контакты, как на вашей картинке. Я обновлю свой вопрос., @David Moškoř
@DavidMoškoř, вы пробовали оригинальный пример?, @Coder_fox
Да, тот же результат, @David Moškoř
Возможно ли, что мои карты используют шифрование «DES3», которое мой Arduino не может расшифровать?, @David Moškoř
@DavidMoškoř возможно, ваша карта использует другую частоту., @Coder_fox