Эмуляция стандартного периферийного USB-устройства Mifare с помощью RFID-RC522
Оборудование
Плата: Arduino Nano V3.0
Модуль: RFID-RC522 13,56 МГц
Кабель: USB A — мини-USB B
Конфигурация
Физический
Код
/*
* -------------------------------------------------- -------------------------------------------------- ------------------
* Пример скетча/программы, показывающий, как считывать данные с PICC в последовательный порт.
* -------------------------------------------------- -------------------------------------------------- ------------------
* Это пример библиотеки MFRC522; для получения дополнительной информации и других примеров см.: https://github.com/miguelbalboa/rfid
*
* Пример скетча/программы, показывающий, как считывать данные с PICC (то есть с RFID-метки или карты) с использованием RFID на основе MFRC522.
* Считыватель на интерфейсе Arduino SPI.
*
* Когда Arduino и модуль MFRC522 подключены (см. раскладку контактов ниже), загрузите этот скетч в Arduino IDE.
* затем проверьте/скомпилируйте и загрузите его. Чтобы увидеть вывод: используйте Tools, Serial Monitor 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/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));
}
См.: https://github.com/miguelbalboa/rfid/tree/master. /примеры
Цель
Универсальное USB-совместимое устройство чтения/записи Mifare NFC
Таким образом, вы можете получить эти устройства, которые просто подключаются непосредственно к вашему обычному компьютеру через USB и в основном функционируют как обычное HID или периферийное устройство. У меня есть несколько отличных от тех, когда я исследовал последствия для безопасности, связанные с CRYPTO-1 & Карты контроля доступа MiFare Classic. Все они в основном работают одинаково и выдают один и тот же стандартный вывод.
Дело в том, что у меня мало опыта работы с Arduino и разработкой оборудования в целом. USB-порт Arduino, очевидно, используется для последовательной связи с IDE для программирования MEGA328P, и я могу использовать последовательный интерфейс IDE, плоттер и т. д. Но, похоже, он не хочет играть ни с одним из других приложений (MiFare Classic). Universal tooKit и т. д.), которые «просто работают» с (неаффилированными) коммерческими/приобретенными в магазине устройствами.
@voices, 👍3
Обсуждение1 ответ
Вы должны использовать Arduino Mini и библиотеку Keyboard.h, которая поставляется с arduino IDE. Arduino Nano не имеет процессора с поддержкой HID.
Попробуйте это с мини:
#include <Keyboard.h>
void setup() {
// делаем вывод 2 входом и включаем
// подтягивающий резистор, чтобы он стал высоким, если только
// подключен к земле:
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
//если кнопка нажата отправить сообщение
if (digitalRead(2) == LOW) {
Keyboard.print("Hello!");
}
}
Сейчас я соберу то же самое, только что протестировал Arduino Mini и добавлю к нему rc522.
ты пробовал? как дела?, @voices
- Библиотека I2C MIFARE RC522
- Arduino Nano (клон) не распознается
- Как подключить Arduino Nano к ноутбуку с Linux
- Использование последовательных контактов TX/ RX для связи по USB
- Исключение в потоке "main" java.awt.AWTError: Can't connect to X11 window server using 'localhost:1.0' as the value of the DISPLAY variable
- Считыватель Rfid и экран SD-карты не работают вместе
- В Linux Min21 невозможно получить доступ к инструментам/порту (выделено серым цветом)
- Беспроводной Bluetooth USB-хаб с использованием Arduino nano
Я предполагаю, что коммерческие продукты предоставляют другой интерфейс для USB-хоста (ПК). На Uno/Nano есть дополнительный чип, который предоставляет виртуальный последовательный интерфейс через USB. В Uno можно перепрограммировать этот чип на интерфейс USB, что вы ему скажете (на Nano может быть невозможно подключиться к правильным контактам из-за размера. Никогда этого не делал). Или вы используете Arduino/чип, который уже имеет встроенную поддержку USB, например Leonardo. Хотя я не знаю, сможете ли вы имитировать интерфейс Mifare., @chrisl