RFID-RC522 не работает с клоном Arduino Uno
Я использую эту библиотеку https://github.com/miguelbalboa/rfid и использую DumpInfo.ino. оттуда:
/*
* --------------------------------------------------------------------------------------------------------------------
* Example sketch/program showing how to read data from a PICC to serial.
* --------------------------------------------------------------------------------------------------------------------
* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
*
* Example sketch/program showing how to read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID
* Reader on the Arduino SPI interface.
*
* When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE
* then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When
* you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output
* will show the ID/UID, type and any data blocks it can read. Note: you may see "Timeout in communication" messages
* when removing the PICC from reading distance too early.
*
* If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading).
* So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all
* details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so
* keep the PICCs at reading distance until complete.
*
* @license Released into the public domain.
*
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno/101 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, SAK, type, and data blocks..."));
}
void loop() {
// Ищем новые карты
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Выбираем одну из карт
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Дамп отладочной информации о карте; PICC_HaltA() вызывается автоматически
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
Когда я все правильно подключаю и загружаю этот скетч, в моем последовательном мониторе отображается следующее: ">
Я попробовал это с другим дешевым Arduino Uno, я подключил его точно так же и отсканировал одну карту, все работает отлично:
Поэтому я предполагаю, что модуль RC522 работает нормально, и, вероятно, есть проблема с этой платой Arduino Uno.
Что я пробовал дальше, но безуспешно:
- Скопируйте загрузчик с работающей Arduino Uno на неработающую Arduino Uno.
- Переключите ATMEGA328P с работающего Arduino Uno на этот Arduino Uno, который не работает.
Я протестировал все контакты (на плате, которые не работают) на функциональность ШИМ и цифрового выхода с помощью Firmata Test, и в этом тесте все нормально.
Вы можете посмотреть изображения этой платы Arduino Uno здесь.
Итак, мой вопрос: что-то не так с самой платой или я что-то делаю не так?
Спасибо!
@fireover, 👍-1
Обсуждение1 ответ
Попробуйте использовать этот код:
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define SERVO_PIN 3
Servo myservo;
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN); // Создать экземпляр MFRC522.
void setup()
{
Serial.begin(9600); // Инициируем последовательную связь
SPI.begin(); // Инициируем шину SPI
mfrc522.PCD_Init(); // Инициировать MFRC522
myservo.attach(SERVO_PIN);
myservo.write( 70 );
delay(7500);
myservo.write( 0 );
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Ищем новые карты
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Выбираем одну из карт
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
// Показать UID на последовательном мониторе
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "69 C8 E2 2A") // меняем здесь UID карты
{
Serial.println("Authorized access");
Serial.println();
myservo.write( 70 );
delay(7500);
myservo.write( 0 );
}
else {
Serial.println(" Access denied");
delay(DENIED_DELAY);
}
}
- Использование прерываний с RC522
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- rfid_default_keys проверить с помощью RC522
- MFRC522: прошивка неизвестна
- MFRC522 не сканируется карта
- RFID-RC522 не работает, горит красный светодиод
- Считывание одновременно RFID-МЕТКИ с помощью нескольких RFID-считывателей [MFRC522]
- Arduino Uno - Как записать персональные данные в NTAG213 с помощью RFID-RC522
уменьшите свой скетч до минимального кода, необходимого для демонстрации сбоя, и опубликуйте скетч, @jsotola
@jsotola Я опубликовал код, который использую. Я думаю, что я не могу уменьшить его, его пример кода из библиотеки RC522. Что меня больше всего смущает, так это то, почему код не работает на этом Arduino Uno, но прекрасно работает на другом очень идентичном Arduino Uno., @fireover
спасибо за включение кода .... на самом деле, вы можете уменьшить код .... удалить все в блоке loop () .... сбой уже существует в setup () ........... .. перепроверьте проводку ...... если вы используете макетную плату, перестройте схему на другой части макетной платы, @jsotola
@jsotola Я уменьшил код, как вы говорите, и проверил проводку (я использую прямое соединение от модуля к считывателю с помощью кабеля «мама-папа»), результаты все те же., @fireover