MFRC522 работает только иногда
/*
* -------------------------------------------------- -------------------------------------------------- -----------------
* Пример эскиза/программы, показывающий, как считывать данные из PICC в последовательный порт.
* -------------------------------------------------- -------------------------------------------------- -----------------
* Это пример библиотеки MFRC522; дополнительную информацию и другие примеры см.: https://github.com/miguelbalboa/rfid.
*
* Пример эскиза/программы, показывающий, как считывать данные с PICC (то есть: RFID-метки или карты) с использованием RFID на основе MFRC522.
* Ридер на интерфейсе Arduino SPI.
*
* Когда Arduino и модуль MFRC522 подключены (см. расположение контактов ниже), загрузите этот скетч в Arduino IDE.
* затем проверьте/скомпилируйте и загрузите его. Чтобы увидеть результат: используйте «Инструменты», «Последовательный монитор» IDE (нажмите Ctrl+Shft+M). Когда
* вы подносите PICC (то есть: RFID-метку или карту) на расстоянии считывания считывателя/PCD MFRC522, последовательного выхода
* покажет ID/UID, тип и любые блоки данных, которые он может прочитать. Примечание. Вы можете увидеть сообщения «Тайм-аут связи»
* при слишком раннем удалении PICC с расстояния считывания.
*
* Если ваш ридер поддерживает это, этот эскиз/программа будет читать все представленные PICC (то есть: чтение нескольких тегов).
* Таким образом, если вы поставите две или более PICC друг на друга и представите их читателю, он сначала выведет все
* подробности первого, а затем следующего PICC. Обратите внимание, что это может занять некоторое время, поскольку все блоки данных будут удалены, поэтому
* держите PICC на расстоянии считывания до завершения.
*
* @license выпущен в общественное достояние.
*
* Типичное расположение контактов:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Настраивается, см. типичное расположение контактов выше
#define SS_PIN 10 // Настраивается, см. типичное расположение контактов выше
MFRC522 MFRC522(SS_PIN, RST_PIN); // Создаём экземпляр MFRC522
void setup() {
Serial.begin(9600); // Инициализируем последовательную связь с ПК
while (!Serial); // Ничего не делать, если последовательный порт не открыт (добавлено для Arduino на базе ATMEGA32U4)
SPI.begin(); // Инициализация шины SPI
MFRC522.PCD_Init(); // Инициализируем MFRC522
MFRC522.PCD_DumpVersionToSerial(); // Показать подробную информацию о PCD - сведения о устройстве чтения карт MFRC522
Serial.println(F("Scan PICC to see UID, type, and data blocks..."));
Serial.print("...");
}
void loop() {
// Ищем новые карты
if ( ! MFRC522.PICC_IsNewCardPresent()) {
Serial.print("IsNewCardPresent");
return;
}
// Выбираем одну из карт
if ( ! MFRC522.PICC_ReadCardSerial()) {
Serial.print("ReadCardSerial");
return;
}
// Дамп отладочной информации о карте; PICC_HaltA() вызывается автоматически
MFRC522.PICC_DumpToSerial(&(MFRC522.uid));
}
Недавно я приобрел RFID-модуль RC522 для своего Arduino UNO. Я все подключил, запустил IDE, скачал нужную библиотеку и запустил пример программы DumpInfo. При первом запуске все прошло хорошо, и когда я вставил карту, я получил правильный дамп данных.
Однако сегодня я запустил его, все сбросил, запустил новую программу для очистки Arduino, перезагрузил компьютер, и он все равно не работал. В последовательном мониторе пишет, что все в порядке, никаких сообщений об ошибках или чего-то еще. Но когда я кладу перед ним карту, абсолютно ничего не происходит.
Любая помощь будет полезна!
@Devon Freeland, 👍4
Обсуждение3 ответа
Проверьте источник питания. Я видел так много странных результатов от непостоянных/недопитанных цепей. Это стоит посмотреть.
Как выглядит ваша схема? Вы питаете RFID-считыватель от Arduino или от собственного источника? Заземления соединены?
Я подключаю его от Arduino, и он получает достаточно энергии, поскольку отправляет и получает данные. Территория в порядке., @Devon Freeland
Если я прав, то контакты модуля вы припаяли сами, и я рекомендую вам отпаять контакты и припаять их заново.
Я также использовал RFID-модуль RC522 с Arduino и столкнулся с такой же проблемой с модулем. Мне этот способ помог.
Первое, что вы можете попробовать, это увеличить скорость передачи данных до 115200 бод. Я использую другую библиотеку, и в auth_read_write.ino
нарисуйте Serial.begin()< В комментариях /code> говорится: «Читайте как можно быстрее. Существует ограничение на то, как долго нам разрешено читать теги».
Если изменение скорости передачи данных не помогло, прочтите ответ: RFID-RC522 не работает, горит красный светодиод. Там есть ссылка на другую библиотеку, которая мне помогла.
- Как использовать RFID-RC522 с Arduino?
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Использование прерываний с RC522
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- rfid_default_keys проверить с помощью RC522
- MFRC522: прошивка неизвестна
- MFRC522 не сканируется карта
Ослабленное соединение?, @Majenko
Определенно нет, я убедился, что все они хорошо связаны, и это привело бы к ошибке в Мониторе, если бы кто-то не общался., @Devon Freeland
Вы видите номер прошивки и тд при запуске скетча?, @SoreDakeNoKoto
Да. Там написано Версия прошивки: 0x92 = v2.0 Сканируйте PICC, чтобы увидеть UID, тип и блоки данных..., @Devon Freeland
И вы вообще не внесли никаких изменений в свой код с тех пор, как в последний раз получали результаты? Вы используете ту же карту, что и раньше? Также проводить/размахивать им в пределах 5 см от RC522?, @SoreDakeNoKoto
Никаких изменений в коде нет. Я использую те же карты и нахожусь в пределах 5 см от считывателя., @Devon Freeland
Должен ли я вместо этого попробовать использовать соединения ICSP?, @Devon Freeland
Вы можете попробовать, хотя это странно. Судя по всему, установлена двусторонняя связь, так как вы можете прочитать версию. Кроме того, этот код уже работал у вас раньше (не один раз?). Возможно, вам следует попробовать подключить его к какому-то другому источнику. Также попробуйте поместить операторы Serial.print в каждый блок IF в цикле(), чтобы увидеть, являются ли эти условия ответственными., @SoreDakeNoKoto
Я попытался добавить строки Serial.print, и он просто рассылает последовательный монитор с помощью isnewcardpresent, что означает, что он проходит через этот цикл. Я пытался провести карту впереди во время, но она не вышла из цикла., @Devon Freeland
На самом деле у меня нет возможности подключить его из какого-либо другого места, и я не уверен, к чему вы это клонили., @Devon Freeland
запустил новую программу для очистки Arduino
- можете ли вы объяснить это?, @Nick GammonПросто нажмите новую кнопку в IDE и запустите ее, пока она подключена к Arduino, чтобы очистить ее., @Devon Freeland
Итак, я считаю, что это некая форма состояния, в которую входит RFID-модуль, когда я выключаю свой компьютер. Как мне перезагрузить модуль?, @Devon Freeland
«Просто нажал новую кнопку в IDE и запустил ее, пока она была подключена к Arduino, чтобы очистить ее». - и после этого вы загрузили другую программу? RFID-то? Я не вижу смысла загружать другой код «чтобы его очистить». С таким же успехом вы можете вставить DVD со «Звездными войнами» в свой DVD-плеер, «чтобы очистить его», прежде чем смотреть что-то совсем другое., @Nick Gammon
Да, после этого я загрузил другую программу. Спасибо за язвительное замечание. Нет, проблема не в программировании, а в том, что модуль не сбрасывается правильно после перезагрузки компьютера или перехода в спящий режим. Так как питание модуля отключается, а потом восстанавливается. Я знаю, что дело не в программе, потому что мне обратно от модуля приходит версия прошивки., @Devon Freeland