Arduino rfid модуль mfrc522: делаем простой сканер

Использование RFID модуля MFRC522 и Ардуино

16 октября в 15:04

Уроки / Arduino, RFID

Сделаем на основе RFID-считывателя MFRC522 и микроконтроллера Arduino простой в использовании ключ или ключ-сканер брелка.

Если у вас есть модуль RFID MFRC522, светодиоды, резисторы, провода, arduino uno, макетная плата и 9-вольтная батарея (по желанию), тогда вы сможете сделать этот интересный проект.

Комплектующие

Как мы уже перечислили выше, для создания этого проекта вам понадобятся:

  • модуль RFID MFRC522,
  • светодиоды,
  • резисторы,
  • провода,
  • arduino uno,
  • макетная плата,
  • 9-вольтная батарея (опция).

Модуль RFID MFRC522 можно купить в большинстве интернет-магазинов, кроме того его можно найти в таких магазинах, как Амазон или АлиЭкспресс. Остальные детали довольно простые и, скорее всего, они у вас есть, но даже если нет, их легко купить или взять со старых проектов или плат

И, конечно, нам понадобится Arduino IDE – среда разработки для плат и микроконтроллеров Ардуино.

Подключаем RFID MFRC522 к Arduino

Подключите RFID к ардуино, соединения всех контактов ниже:

RFID → Arduino
VCC → 3.3В RST → D9 GND → GND MISO → D12 MOSI → D11 SCK → D13

NSS (или SDA) → D10

Подключите красный светодиод к контакту 8, а зеленый – к контакту 7 с резистором 1 МОм перед ним. Затем заземлите светодиоды.

Подключаем аккумуляторную батарею 9В

Подключите аккумуляторную батарею 9В сначала к держателю батареи, а затем соедините плюс и VIN на ардуине и GND (замлю) батареи к GND на ардуине.

Код проекта

Вы можете скачать библиотеку (zip-файл) и взять код для Ардуино ниже. После загрузки кода красный светодиод должен быть включен. Если вы поднесете 13,56 Mhz ID-карту к сканеру, зеленый светодиод должен будет включиться.

Скачать arduino-mfrc522.ino#include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); int redled = 8; int greenled = 7; void setup() { SPI.begin(); mfrc522.

PCD_Init(); pinMode(redled, OUTPUT); pinMode(greenled, OUTPUT); } void loop() { digitalWrite(redled, HIGH); // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.

PICC_ReadCardSerial()) { return; } digitalWrite(redled, LOW); digitalWrite(greenled, HIGH); delay(1000); digitalWrite(greenled, LOW); digitalWrite(redled, HIGH); }

На этом всё. Хороших вам проектов.

Источник: https://ArduinoPlus.ru/rfid-modul-mfrc522-arduino/

Чтение и запись RFID меток. Модуль RC522 для Arduino

Сегодня я расскажу про RFID модуль RC522, на базе чипа MFRC522. Питание 3.3В, дальность обнаружения до 6см. Предназначен для чтения и записи RFID меток с частотой 13.56 МГц. Частота в данном случае очень важна, так как RFID метки существуют в трех частотных диапазонах:

  • Метки диапазона LF (125—134 кГц)
  • Метки диапазона HF (13,56 МГц)
  • Метки диапазона UHF (860—960 МГц)

Конкретно этот модуль работает с метками диапазона HF, в частности с протоколом MIFARE.

Для работы с модулем можно использовать стандартную библиотеку RFID входящую в Arduino IDE, однако есть и другая библиотека, написанная специально под данный модуль – MFRC522 (1 Мб). Обе библиотеки вполне удобны, однако в MFRC522 больше специальных функций, позволяющих максимально сократить итоговый код программы.

Подключение

Некоторые столкнуться с проблемой – название пинов в большинстве уроков и руководств может не соответствовать распиновке на вашем модуле. Если в скетчах указан пин SS, а на вашем модуле его нет, то скорее всего он помечен как SDA. Ниже я приведу таблицу подключения модуля для самых распространенных плат.

MFRC522 Arduino Uno Arduino Mega Arduino Nano v3 Arduino Leonardo/Micro Arduino Pro Micro
RST 9 5 D9 RESET/ICSP-5 RST
SDA(SS) 10 53 D10 10 10
MOSI 11 (ICSP-4) 51 D11 ICSP-4 16
MISO 12 (ICSP-1) 50 D12 ICSP-1 14
SCK 13 (ICSP-3) 52 D13 ICSP-3 15
3.3V 3.3V 3.3V Стабилизатор 3,3В Стабилизатор 3,3В Стабилизатор 3,3В
GND GND GND GND GND GND

Пины управления SS(SDA) и RST задаются в скетче, так что если ваша плата отличается от той, что я буду использовать в своих примерах, а использую я UNO R3, указывайте пины из таблицы в начале скетча:

#define SS_PIN 10
#define RST_PIN 9

Пример №1: Считывание номера карты

Рассмотрим пример из библиотеки RFID  – cardRead. Он не выдает данные из карты, а только ее номер, чего обычно бывает достаточно для многих задач.

#include #include #define SS_PIN 10
#define RST_PIN 9 RFID rfid(SS_PIN, RST_PIN); // Данные о номере карты храняться в 5 переменных, будем запоминать их, чтобы проверять, считывали ли мы уже такую карту int serNum0; int serNum1; int serNum2; int serNum3; int serNum4; void setup()
{ Serial.begin(9600); SPI.begin(); rfid.init(); } void loop()
{ if (rfid.isCard()) { if (rfid.readCardSerial()) { // Сравниваем номер карты с номером предыдущей карты if (rfid.serNum[0] != serNum0 && rfid.serNum[1] != serNum1 && rfid.serNum[2] != serNum2 && rfid.serNum[3] != serNum3 && rfid.serNum[4] != serNum4 ) { /* Если карта – новая, то считываем*/ Serial.println(” “); Serial.println(“Card found”); serNum0 = rfid.serNum[0]; serNum1 = rfid.serNum[1]; serNum2 = rfid.serNum[2]; serNum3 = rfid.serNum[3]; serNum4 = rfid.serNum[4]; //Выводим номер карты Serial.println(“Cardnumber:”); Serial.print(“Dec: “); Serial.print(rfid.serNum[0],DEC); Serial.print(“, “); Serial.print(rfid.serNum[1],DEC); Serial.print(“, “); Serial.print(rfid.serNum[2],DEC); Serial.print(“, “); Serial.print(rfid.serNum[3],DEC); Serial.print(“, “); Serial.print(rfid.serNum[4],DEC); Serial.println(” “); Serial.print(“Hex: “); Serial.print(rfid.serNum[0],HEX); Serial.print(“, “); Serial.print(rfid.serNum[1],HEX); Serial.print(“, “); Serial.print(rfid.serNum[2],HEX); Serial.print(“, “); Serial.print(rfid.serNum[3],HEX); Serial.print(“, “); Serial.print(rfid.serNum[4],HEX); Serial.println(” “); } else { /* Если это уже считанная карта, просто выводим точку */ Serial.print(“.”); } } } rfid.halt();
}

Скетч залился, светодиод питания на модуле загорелся, но модуль не реагирует на карту? Не стоит паниковать, или бежать искать “правильные” примеры работы.

Скорее всего, на одном из пинов просто нет контакта – отверстия на плате немного больше чем толщина перемычки, так что стоит попробовать их переставить. На плате не горит светодиод? Попробуйте переставить перемычку, ведующую в 3.

3В, и убедитесь, что на плате она подключена именно к 3.3В, подача питания в 5В может вашу плату запросто убить.

Допустим, все у вас заработало. Тогда, считывая модулем RFID метки, в мониторе последовательного порта увидим следующее:

Здесь я считывал 3 разных метки, и как видно все 3 он успешно считал.

Пример №2: Считывание данных с карты

Рассмотрим более проработанный вариант – будет считывать не только номер карты, но и все доступные для считывания данные. На этот раз возьмем пример из библиотеки MFRC522 – DumpInfo.

#include #include #define RST_PIN 9 // #define SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance void setup() { Serial.begin(9600); // Инициализируем монитор последовательного порта while (!Serial); // Ничего не делаем пока он не открыт (для Arduino на чипе ATMEGA32U4) SPI.begin(); // Инициализируем SPI шину mfrc522.PCD_Init(); // Инициализируем RFID модуль ShowReaderDetails(); // Выводим данные о модуле MFRC522 Serial.println(F(“Scan PICC to see UID, type, and data blocks…”));
} void loop() { // Ищем новую карту if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Выбираем одну из карт if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // Выводим данные с карты mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
} void ShowReaderDetails() { // Получаем номер версии модуля byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F(“MFRC522 Software Version: 0x”)); Serial.print(v, HEX); if (v == 0x91) Serial.print(F(” = v1.0″)); else if (v == 0x92) Serial.print(F(” = v2.0″)); else Serial.print(F(” (unknown)”)); Serial.println(“”); // Когда получаем 0x00 или 0xFF, передача данных нарушена if ((v == 0x00) || (v == 0xFF)) { Serial.println(F(“WARNING: Communication failure, is the MFRC522 properly connected?”)); }
}

Если предыдущий пример работал без ошибок, то и в этом проблем возникнуть не должно. Хотя, проездной на метро, без проблем выдававший номер карты в предыдущем примере, в этом оказался с неопределяемым типом данных, и модуль ничего кроме номера карты считать не смог.

Как результат, считав данные с карты, получим ее тип, идентификатор, и данные из 16 секторов памяти. Следует отметить, что карты стандарта MIFARE 1K состоят из 16 секторов, каждый сектор состоит из 4 блоков, а каждый блок содержит 16 байт данных.

Пример №3: Запись нового идентификатора на карту

В этом примере мы рассмотрим смену идентификатора карты (UID). Важно знать, что далеко не все карты поддерживают смену идентификатора. Карта может быть перезаписываемой, но это означает лишь перезаписываемость данных. К сожалению, те карты, которые были у меня на руках, перезапись UID не поддерживали, но код скетча я здесь на всякий случай приведу.

#include #include /* Задаем здесь новый UID */
#define NEW_UID {0xDE, 0xAD, 0xBE, 0xEF}
#define SS_PIN 10
#define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.println(F(“Warning: this example overwrites the UID of your UID changeable card, use with care!”)); for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) { delay(50); return; } // Считываем текущий UID Serial.print(F("Card UID:")); for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); // Записываем новый UID byte newUid[] = NEW_UID; if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) { Serial.println(F("Wrote new UID to card.")); } // Halt PICC and re-select it so DumpToSerial doesn't get confused mfrc522.PICC_HaltA(); if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) { return; } // Считываем данные с карты Serial.println(F("New UID and contents:")); mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); delay(2000); }

Пример №4: Запись данных на карту

Вот и наконец то, до чего мы так долго добирались – запись данных на карту. Самая “сладкая” часть работы с модулем – возможность сделать копию уже существующей карты, что то добавить или изменить, это гораздо интереснее, чем простое считывание.

Изменим один из блоков данных на карте:

#include #include #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); // Подготовим ключ // используем ключ FFFFFFFFFFFFh который является стандартом для пустых карт for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } Serial.println(F("Scan a MIFARE Classic PICC to demonstrate read and write.")); Serial.print(F("Using key (for A and B):")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); Serial.println(); Serial.println(F("BEWARE: Data will be written to the PICC, in sector #1")); } void loop() { // Ждем новую карту if ( ! mfrc522.PICC_IsNewCardPresent()) return; // Выбираем одну из карт if ( ! mfrc522.PICC_ReadCardSerial()) return; // Показываем подробности карты Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); // Проверяем совместимость if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("This sample only works with MIFARE Classic cards.")); return; } // В этом примере мы используем первый сектор данных карты, блок 4 byte sector = 1; byte blockAddr = 4; byte dataBlock[] = { // Данные, которые мы запишем на карту 0x01, 0x02, 0x03, 0x04, // 1, 2, 3, 4, 0x05, 0x06, 0x07, 0x08, // 5, 6, 7, 8, 0x08, 0x09, 0xff, 0x0b, // 9, 10, 255, 12, 0x0c, 0x0d, 0x0e, 0x0f // 13, 14, 15, 16 }; byte trailerBlock = 7; byte status; byte buffer[18]; byte size = sizeof(buffer); // Аутентификация Serial.println(F("Authenticating using key A...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Показываем текущие данные сектора Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); // Читаем данные из блока Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(); // Аутентификация Serial.println(F("Authenticating again using key B...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Записываем данные в блок Serial.print(F("Writing data into block ")); Serial.print(blockAddr); Serial.println(F(" ...")); dump_byte_array(dataBlock, 16); Serial.println(); status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Write() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.println(); // Читаем данные снова, чтобы проверить, что запись прошла успешно Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(F("Checking result...")); byte count = 0; for (byte i = 0; i < 16; i++) { if (buffer[i] == dataBlock[i]) count++; } Serial.print(F("Number of bytes that match = ")); Serial.println(count); if (count == 16) { Serial.println(F("Success :-)")); } else { Serial.println(F("Failure, no match :-(")); Serial.println(F(" perhaps the write didn't work properly...")); } Serial.println(); // Выводим данные Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } }

Читайте также:  Raspberry pi и telegram: создаем бота для управления устройствами

И как результат, получаем карту с измененным блоком данных:

Теперь, научившись считывать и записывать блоки данных карты, вы можете поэксперементировать с метками, которые скорее всего есть у вас – пропуски, проездные общественного транспорта. Попробуйте считывать и записывать данные с этих карт, пара дубликатов пропуска никогда не помешает, так ведь?)

На этом все, подписывайтесь, и следите за публикациями. В следующий раз я расскажу и покажу, как на стандартный символьный дисплей 1602 добавлять пользовательские символы, фактически добавляя на дисплей графику.

Источник: https://arthurphdent.livejournal.com/1759.html

Подключение RFID к Arduino с помощью RC522 и RDM3600

RFID метки стали неотъемлемой частью нашей жизни, без них немыслимы современные системы автоматизации и умные устройства.

Ардуино предоставляет нам отличные возможности использовать современные технологии даже в начальных проектах.

В этой статье мы расскажем, что такое RFID, сделаем обзор стандартов , типов карточек, узнаем как подключать популярные RFID-считыватели RC522 и RDM3600 к Arduino.

Что такое RFID

RFID (радиочастотная идентификация) – это метод обеспечения передачи, записи и хранения данных при помощи радиосигналов. Каждая RFID-система включает в себя считыватель/ридер и RFID-метку, в которой хранятся данные. Метки состоят из двух частей – интегральной схемы и антенны. Интегральная схема позволяет хранить и обрабатывать данные, антенна – принимать и передавать информацию.

Все RFID-системы можно разделить по дальности действия:

  • Ближней идентификации – расстояние не более 20 см;
  • Средней идентификации – расстояние от 20 см до 5 м;
  • Дальней идентификации – максимум 300 м.

С точки зрения частот можно выделить:

  • Системы, работающие в низкочастотном диапазоне (125 кГц, 134 кГц);
  • Работающие в среднечастотном диапазоне (13,56 МГц);
  • Работающие в высокочастотном диапазоне (800 МГц – 2, 4 ГГц).

Наиболее популярным диапазоном является среднечастотным – он широко используется в транспортных приложениях и других проектах, где требуется перезаписывание карт.

Основными стандартами являются ISO 14443, ISO 15693 и EPC. На основе стандарта ISO 14443 изготавливаются смарт-карты. ISO 15693 используется для перезаписывания меток.

EPC – аналог штрихкодов, имеет более простую и понятную структуру.

ВЧ диапазон начали использовать недавно, в основном его применяют для складских приложений. Для этого диапазона используются стандарты ISO 18000 и EPC. Стандарты ISO 18000 вызывают наибольший интерес, они используются в приложениях с метками с увеличенной дальностью. Для ISO 18000 также можно выделить несколько стандартов, различающихся по  частоте:

  • ISO 18000-1 (определение тех параметров, которые необходимо стандартизировать);
  • ISO 18000-2 (для параметров с бесконтактным интерфейсом связи менее 135 кГц);
  • ISO 18000-3 (для бесконтактного интерфейса на частоте 13,56 МГц);
  • ISO 18000-4 (для частоты 2, 45 ГГц);
  • ISO 18000-6 (для частоты 860-930МГц);
  • ISO 18000-7 (для частоты 433 МГц).

Преимущества RFID

  • Не требуется прямая видимость;
  • Практически 100% идентификация сигнала;
  • Возможность применения в агрессивной среде;
  • Долгий срок службы;
  • RFID-метку трудно подделать;
  • Возможность хранения и передачи большого объема информации.

Области применения RFID идентификации

RFID-технология часто используется в розничной торговле, библиотеках и архивах, логистике, системах контроля и управления доступом (СКУД), инициализации людей, удостоверении подлинности товаров.

Для идентификации персонала самым популярным форматом являются пластиковые бесконтактные карты и бесконтактные брелки. С их помощью можно регистрировать вход/выход объектов на территории через точки прохода – ворота, КПП.

Основной задачей СКУД является управление доступом — например, ограничение в доступе на какую-либо территорию, идентификация лиц, которые могут попадать на территорию.

Также могут решаться и дополнительные задачи – контроль рабочего времени для персонала, ведение базы посетителей, работа с системами безопасности, расчет заработной платы.

RFID-брелки используются и для подъездных домофонов. Для открытия дверей чаще всего используются брелки Proximity, то есть брелки ближнего действия, работающие на расстоянии 10-15 см.  Proximity также делятся на несколько форматов – наиболее популярные на сегодняшний день EM-Marin, HID для бесконтактных ключей и MIFARE, к которым относятся бесконтактные смарт карты.

Краткое описание Arduino модулей

Модуль Arduino RFID RC522

Модуль RFID RC522 выполнен на основе схемы MFRC522, которая обеспечивает беспроводную коммуникацию на частоте 13,56 МГц. Подключать микросхему можно по интерфейсу SPI, I2c и UART. Стандарт протокола NFC Reader ISO 14443.

Технические характеристики модуля RFID RC522:

  • Напряжение питания 3,3 В;
  • Максимальный потребляемый ток 30 мА;
  • Частотная полоса 13,55-13,57 МГц;
  • Расстояние считывания до 25 мм;
  • Рабочая температура от -20С до 80 С.

Распиновка модуля изображена на рисунке. Контакт SDA (SS, CS, NSS) отвечает за выбор ведомого устройства. Выход SCK является тактовым сигналом SPI. MOSI – отвечает за передачу данных от мастера к ведомому, MISO – от ведомого к мастеру.

IRQ – выполняет прерывание. RST – выполняет прерывание.

RDM6300 – бесконтактный считыватель, который используется для дистанционного считывания номера RFID брелка и передачи номера через UART на микроконтроллер, управляющий замком в системах доступа. Устройство обладает несколькими преимуществами – невысокая цена и простота в установке.

Чаще всего используется в системах контроля доступа в дома, гаражи, офисы, квартиры и другие здания с электромеханическим замком.  Считыватель используется для чтения карт EM4100/TK4100. RDM6300 может монтироваться в стену или в корпус.

В качестве микроконтроллера обычно применяется Ардуино.

Технические характеристики RDM6300:

  • Максимальный потребляемый ток 50 мА;
  • Напряжение питания 5 В;
  • Рабочая частота 125 кГц;
  • Рабочие температуры от -10С до 70 С.

Распиновка изображена на рисунке.

Пин TX отвечает за передачу данных, RX – за прием. 3 выход не используется.

Для P2 выходы ANT1 и ANT2 используются для подключения антенны.

Подключение RC522 к Ардуино

Для подключения понадобятся плата Ардуино, считыватель RC522, компьютер, провода и беспроводная RFID метка.

Подключается модуль RC522 к ардуино по следующей схеме:

Напряжение питания обеспечивается от 2,5 до 3,3 В. Выход RST подключается к D9 пину на ардуино, SDA – к D10, MOSI – D11, MISO – D12, SCK – D13. В данном случае рассмотрены платы Arduino Nano v3 и Arduino Uno. После того как все будет подключено, на RC522 загорится индикатор.

Плата Ардуино оснащена дополнительным разъемом ICSP, который используется для работы по интерфейсу  SPI. Распиновка для него изображена на рисунке, выводы с модуля RC522 можно подключить к этому разъему.

Для работы с модулем нужно установить библиотеку RFID Library for MFRC522. После установки нужно загрузить тестовый скетч для считывания номера карты cardRead, включить мониторинг последовательного порта. Затем метку нужно поднести к ридеру, произойдет инициализация метки и на мониторе появится следующее:

В данном примере произведено считывание трех различных меток.

Можно выбрать другой пример – DumpInfo, который также считает данные с карты. В результате на экране появятся тип карты и информация, которая состоит из 16 сектором памяти по 4 блока.

Источник: https://ArduinoMaster.ru/datchiki-arduino/podklyuchenie-rfid-k-arduino/

Как подключить RFID считыватель RC522 к Arduino

В этой статье мы рассмотрим подключение к Arduino считывателя карт и брелоков RFID RC522, работающего на частоте 13,56 МГц.

  • Arduino (или совместимая плата);
  • считыватель RFID RC522 (приобретается здесь);
  • беспроводная RFID метка (идёт в комплекте по ссылке выше) или бесконтактный билет на метро/наземный транспорт;
  • макетная плата;
  • соединительные провода (вот такие);
  • компьютер с Arduino IDE.

Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP. Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.

Беспроводной модуль RFID-RC522

Микросхема MFRC522 поддерживает следующие варианты подключения:

ИнтерфейсСкорость передачи
SPI (Serial Peripheral Interface, последовательный интерфейс для связи периферийных устройств) до 10 Мбит/сек;
двухпроводной интерфейс I2C до 3400 кбод в режиме High-speed,до 400 кбод в режиме Fast;
последовательный UART (аналог RS232) до 1228,8 кбод.

С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC-меток.

RFID – это сокращение от “Radio Frequency IDentification” и переводится как «радиочастотная идентификация».
NFC – это “Near field communication”, «коммуникация ближнего поля» или «ближняя бесконтактная связь».

2Схема подключения RFID-RC522 к Arduino

Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.

Схема подключения RFID-RC522 к Arduino по интерфейсу SPI

Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к Arduino так:

Пин RC522Пин Arduino
RST D9
SDA (SS) D10
MOSI D11
MISO D12
SCK D13

Не забывайте также, что Arduino имеет специальный разъём ICSP для работы по интерфейсу SPI. Его распиновка также приведена на иллюстрации. Можно подключить выводы RST, SCK, MISO, MOSI и GND модуля RC522 к разъёму ICSP на Ардуино.

3Библиотека для работы Arduino с RFID

Микросхема MFRC522 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её паспорт (datasheet). Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек, написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDElibraries

Читайте также:  Ардуино гитарная педаль: делаем своими руками

Установка библиотеки “rfid-master” для работы Arduino с RFID-метками

После этого запустите среду разработки Arduino IDE.

4Скетч для считывания информации, записанной на RFID-метке

Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.

Открываем скетч DumpInfo

Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.

#include #include const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 void setup() { Serial.begin(9600); // инициализация послед. порта SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 } void loop() { // Ожидание прикладывания новой RFID-метки: if ( ! mfrc522.PICC_IsNewCardPresent()) { return; // выход, если не приложена новая карта } // Считываем серийный номер: if ( ! mfrc522.PICC_ReadCardSerial()) { return; // выход, если невозможно считать сер. номер } // Вывод дампа в послед. порт: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }

Текст скетча достаточно хорошо прокомментирован.

Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.

5Дамп данных с RFID-метки

Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M, через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.

Считываем данные с билета на наземный транспорт и метро с помощью RFID

Например, в моём случае здесь зашифрованы уникальный номер билета, дата покупки, срок действия, количество оставшихся поездок, а также служебная информация. Мы разберём в одной из будущих статей, что же записано на карты метро и наземного транспорта.

Примечание

Да, с помощью модуля RFID-RC522 можно записать данные на билет метро.

Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится – это сразу будет обнаружено и карта будет забракована турникетом 🙂 А вот использовать билеты метро для записи на них небольших объёмов данных – от 1 до 4 кб – можно. И способы применения этому ограничены только вашей фантазией.

Источник: https://soltau.ru/index.php/arduino/item/399-kak-podklyuchit-rfid-schityvatel-rc522-k-arduino

Как подключить RFID считыватель RC522 к Arduino

Вам понадобится

  • – Arduino;
  • – цифровой потенциометр AD5171;
  • – светодиод;
  • – резистор на 220 Ом;
  • – 2 резистора на 4,7 кОм;
  • – соединительные провода.

Инструкция

Последовательный протокол обмена данными IIC (также называемый I2C – Inter-Integrated Circuits, межмикросхемное соединение) использует для передачи данных две двунаправленные линии связи, которые называются шина последовательных данных SDA (Serial Data) и шина тактирования SCL (Serial Clock).

Также имеются две линии для питания. Шины SDA и SCL подтягиваются к шине питания через резисторы.
В сети есть хотя бы одно ведущее устройство (Master), которое инициализирует передачу данных и генерирует сигналы синхронизации.

В сети также есть ведомые устройства (Slave), которые передают данные по запросу ведущего. У каждого ведомого устройства есть уникальный адрес, по которому ведущий и обращается к нему. Адрес устройства указывается в паспорте (datasheet).

К одной шине I2C может быть подключено до 127 устройств, в том числе несколько ведущих. К шине можно подключать устройства в процессе работы, т.е. она поддерживает “горячее подключение”.

Arduino использует для работы по интерфейсу I2C два порта. Например, в Arduino UNO и Arduino Nano аналоговый порт A4 соответствует SDA, аналоговый порт A5 соответствует SCL. Для других моделей плат:

Arduino Pro и Pro Mini – A4 (SDA), A5 (SCL)

Arduino Mega – 20 (SDA), 21 (SCL)
Arduino Leonardo – 2 (SDA), 3 (SCL)
Arduino Due – 20 (SDA), 21 (SCL), SDA1, SCL1

Для облегчения обмена данными с устройствами по шине I2C для Arduino написана стандартная библиотека “Wire”.

Она имеет следующие функции:
begin(address) – инициализация библиотеки и подключение к шине I2C; если не указан адрес, то присоединённое устройство считается ведущим; используется 7-битная адресация;
requestFrom() – используется ведущим устройством для запроса определённого количества байтов от ведомого;
beginTransmission(address) – начало передачи данных к ведомому устройству по определённому адресу;
endTransmission() – прекращение передачи данных ведомому;
write() – запись данных от ведомого в ответ на запрос;
available() – возвращает количество байт информации, доступных для приёма от ведомого;
read() – чтение байта, переданного от ведомого ведущему или от ведущего ведомому;
onReceive() – указывает на функцию, которая должна быть вызвана, когда ведомое устройство получит передачу от ведущего;
onRequest() – указывает на функцию, которая должна быть вызвана, когда ведущее устройство получит передачу от ведомого.

Давайте посмотрим, как работать с шиной I2C с помощью Arduino.
Сначала соберём схему, как на рисунке. Будем управлять яркостью светодиода, используя цифровой 64-позиционный потенциометр AD5171, который подключается к шине I2C. Адрес, по которому мы будем обращаться к потенциометру – 0x2c (44 в десятичной системе).

Теперь откроем из примеров библиотеки “Wire” скетч:
Файл -> Образцы -> Wire -> digital_potentiometer. Загрузим его в память Arduino. Включим.
Вы видите, яркость светодиода циклически нарастает, а потом резко гаснет. При этом мы управляем потенциометром с помощью Arduino по шине I2C.

Источники:

  • Описание библиотеки Wire на официальном сайте Arduino

Источник: https://www.kakprosto.ru/kak-920016-kak-podklyuchit-rfid-schityvatel-rc522-k-arduino

Arduino + RFID + Excel. Сбор данных

2017-05-07 в 17:17

В этой статье я хочу рассказать как можно занести в таблицу Excel данные через com последовательный порт. А данными у нас будет время и код RFID карты. Считыватель – RFID-RC522. Все это работает на Arduino Uno.
Все подключаем по следующей схеме.

Пьезоизлучатель нужен для того чтобы при поднесении карты к считывателю было понятно что карта действительно считалась. Подойдет любой без внутреннего генератора. Теперь обсудим скетч.

Для работы с данным считывателем нам необходимо установиться библиотеку rfid-master.

Код был разработан благодаря статье.

Код

#include
#include<\p>

#define RST_PIN         9
#define SS_PIN          10

int row_excel = 0; // количество строк

MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {   pinMode(5, OUTPUT);   Serial.begin(9600);   SPI.begin();   Serial.println(“CLEARDATA”);                           // очистка листа excel   Serial.println(“LABEL,Time,Code”);                     // заголовки столбцов   mfrc522.PCD_Init();

}

void loop() {

  row_excel++; // номер строки + 1

  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

  byte block;   byte len;

  MFRC522::StatusCode status;

  if ( ! mfrc522.PICC_IsNewCardPresent()) {     return;

  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {     return;

  }

  beep(50);
  beep(50);

  Serial.print(“DATA,TIME,”); // запись в excel текущей даты и времени

  mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid));

  delay(1000); //измените если необходимо считывать карты быстрее

  mfrc522.PICC_HaltA();   mfrc522.PCD_StopCrypto1();     Serial.println(row_excel); } void beep(unsigned char delayms) {   analogWrite(5, 25);      // значение должно находится между 0 и 255, поэкспериментируйте для получения хорошего тона   delay(delayms);          // пауза delayms мс   analogWrite(5, 0);       // 0 – выключаем пьезо   delay(delayms);          // пауза delayms мс

}

Загрузили. Работает. Теперь нам нужно вписать данные в таблицу Excel. Для этого загрузите документ с макросами. В окне укажите какой com порт использует Arduino и с какой скоростью (обычно 9600). И нажмите Connect.

После того как произойдет соединение прикладывайте свои карты и в строках появятся код карты и время ее считывания.

Этот принцип можно использовать в простых системах учета рабочего времени, учета материалов и прочего. Я в будущем планирую такую систему использовать при выдаче и получении картриджей принтеров для их заправки. Правда для этого нужно будет еще улучшать код как для ардуино так и excel. Если вас данная идея сподвигла на создание интересной и рабочей системы, поделитесь)

Считыватель RFID-RC522 – найти в магазине
Arduino UNO – найти в магазине
Пьезоизлучатель – найти в магазине

Источник: http://TehnoPage.ru/arduino-rfid-excel

Считыватель бесконтактных карт радио-меток RFID RC522

Предлагаю Вашему внимаю обзор и в данном обзоре мы рассмотрим и протестируем модуль считывателя бесконтактных карт радио-меток RFID с обозначением RC522.

 Модуль построен на одноименном контроллере MFRC522 и может считывать и записывать информацию с/на бесконтактные радио метки RFID работающие на частоте 13,56 МГц. На Алиэкспресс есть много продавцов с данным модулем и соответственно с разными ценами на него.

Заказ был сделан на самый дешёвый из них. Целью было быстро проверить работоспособность и пригодность модуля простым способом, пока не закончено основное устройство управления им. В итоге был получен положительный результат.

А если рассматривать этот модуль в конкретной конструкции, то это тема уже другой статьи и об этом поговорим немного позже. В данной же статье Мы рассмотрим с Вами следующие пункты:

  • Заказ, доставка, распаковка;
  • Внешний осмотр, визуальная оценка;
  • Знакомство с документацией модуля;
  • Обзор справочных данных контроллера модуля;
  • Подключение и проверка модуля;
  • Вывод, окончательная оценка.

Заказ, доставка, распаковка

Заказ производился в китайском интернет-магазине Алиэкспресс стоимостью около 75 рублей:

В Грузию товар был доставлен бесплатно компанией “4PX Singapore Post OM Pro” в стандартном пакете:

Внутри пакета находился свёрток с пупырышками:

Развернув его добираемся до антистатического пакета с модулем. В комплекте с модулем две колодки штырьков – прямые и согнутые, которые лежат в одном пакете с модулем:

С одной стороны пакета всё хорошо, но перевернув его видим, что согнутые штырьки, которые идут в комплекте с модулем, лежат в этом же пакете и проткнув его нарушили герметизацию:

Внешний осмотр, визуальная оценка

Всё бы ничего, но из за контакта и трения с платой эта колодка согнутых штырьков повредила краску на токопроводящей дорожке платы, которая впоследствии осыпалась и оголила медь. Сама дорожка не повредилась и не разорвалась, но её оголённая поверхность будет слабым местом для окисления и коррозии и в близком будущем я обязательно покрою её лаком:

Со стороны радиоэлементов всё в порядке. Детали установлены ровно, флюс хорошо отмыт, повреждений не найдено:

На плате имеется четыре отверстия для крепления. Так же можно заметить, что имеется белая линия, по которой, скорее всего, должна была обрезаться целая единая плата, но это место почему то оставлено и плата разрезана в другом месте.

Это не представляет неудобства если изначально в корпусе предусмотрено место для выступа после белой линии. В противном случае придется вручную обрезать этот выступ. Хотя не исключено, что Вы получите плату с правильно обрезанными краями и не будет никаких осложнений.

 Вся плата модуля небольшого размера и свободно умещается в руке взрослого человека:

Читайте также:  Книжная полка: 5 лучших книг о платформе arduino - arduino+

Знакомство с документацией модуля

Рассмотрим описание с сайта продавца:

В RC522 применяется высокоинтегрированный считывающий и записывающий чип, работающий с бесконтактными картами на частоте 13,56 МГц , изготовленный для применения в низковольтных и недорогих устройствах небольшого размера.

MF RC522 использует усовершенствованную концепцию модуляции и демодуляции, полностью интегрированную во всех типах пассивных бесконтактных коммуникационных методов и протоколов 13,56 МГц. Кроме того, поддерживаются быстрые алгоритмы шифрования CRYPTO1 и терминологическая проверка продуктов MIFARE.

MFRC522 поддерживает высокоскоростную бесконтактную связь MIFARE, двухстороннюю скорость передачи данных до 424 кбит / с. Связь между ним и режимом SPI хоста помогает сократить объем соединения узкой печатной платы и снизить затраты.

Технические параметры: 1. Рабочий ток: 13-26 мА / DC 3,3 В 2. Ток ожидания: 10-13 мА / DC 3,3 В 3. Дежурный ток:<\p>

Источник: http://cxem.net/guard/3-91.php

RFID reader подключение к Arduino

Опубликовано 09.10.2013 19:31:00

RFID (англ.

Radio Frequency IDentification, радиочастотная идентификация) — способ автоматической идентификации объектов, в котором посредством радиосигнала считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках. Любая RFID-система состоит из считывающего устройства (считыватель, ридер или интеррогатор) и транспондера (он же RFID-метка, иногда также применяется термин RFID-тег).

В данной статье просто считаем адрес поднесенной карты и выведем его в порт

Компоненты для повторения (купить в Китае):

Arduino UNO, либо Arduino Nano, либо Arduino Mega

RFID RC-522

Соединительные провода (перемычки)

Подключение к Arduino:

SS      – 10 цифровой
SCK    – 13 цифровой
MOSI  –  11 цифровой
MISO  –  12 цифровой
IRQ     –  не подключаем
GND   –   GND
RST    –   9 цифровой
VCC   –   3.3V
 

Библиотека необходимая для работы с модулем RFID library

Её необходимо распаковать и добавить в папку “libraries” в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.

// Тестировалось на Arduino IDE 1.0.1
#include 
#include  #define SS_PIN 10
#define RST_PIN 9 RFID rfid(SS_PIN, RST_PIN);  int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4; void setup()

  Serial.begin(9600);
  SPI.begin();   rfid.init();
} void loop()
{
    // Если обнаружена карта
    if (rfid.isCard()) {
        // Считываем адрес
        if (rfid.readCardSerial()) {
          // Выводим его в порт в десятичном представлении
          Serial.println(“Card number:”);
          Serial.print(rfid.serNum[0],DEC);
          Serial.print(“, “);
        Serial.print(rfid.serNum[1],DEC);
          Serial.print(“, “);
        Serial.print(rfid.serNum[2],DEC);
          Serial.print(“, “);
        Serial.print(rfid.serNum[3],DEC);
          Serial.print(“, “);
        Serial.print(rfid.serNum[4],DEC);
          Serial.println(” “);         }       
    }
    rfid.halt();
}

Полученный адрес в будущем можно проверить на соответствие с забитым в коде, и, если адреса совпадают, выполнить какое-либо действие.

Купить в России  RFID reader

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

Источник: http://zelectro.cc/rfid-3

RFID-сканер

Считыватель RFID RC522 13.56MHz + карта + брелок Комплект содержит минимум деталей, позволяющий создать основу небольшой системы радиочастотной идентификации. В комплект вошли: пластиковая карточка и  брелок, содержащие RFID радиометки, модуль RFID RC522 считывания-записи радиометки и штыревые контакты для монтажа в плате модуля.

Считыватель RFID RC522 – периферийное устройство более сложного прибора. Радиоидентификация RFID (Radio Frequency IDentification) происходит при обмене данными по протоколу Mifare 1K. Использовать термин Mifare может только компания NXP Semiconductors, а также компании, имеющие лицензию от NXP на производство чипов (сейчас компания Infineon).

Эта технология позволяет автоматически опознавать объекты, содержащие RFID метки – так называемые транспондеры. Из меток данные могут не только читаться, но и записываться.  Mifare – торговая марка, объединяющая несколько типов микросхем пластиковых карт, микросхемы считывания и записи стационарных приборов и различные продукты на их основе.

Продукты Mifare соответствуют стандарту ISO 14443 Type A  пластиковых карт. Перевод стандарта на русский язык ГОСТ Р ИСО/МЭК 14443. Обмен данными по радио происходит через рамочные антенны, находящиеся в карточке и в модуле. Сигнал модуля служит источником энергии для метки. Считыватель RFID RC522 срабатывает при поднесении метки. Основа модуля – микросхема MFRC522.

Он может обрабатывать информацию одновременно от нескольких меток. Для считывания информации достаточно ненадолго попасть карте в зону регистрации даже при перемещении на большой скорости. В наше время происходит бурное внедрение RFID технологий в различных областях жизни.

RFID системы используются для оплаты общественного транспорта в Москве, Санкт-Петербурге, Казани, Минске, Баку и в других городах. Вошли в употребление бесконтактные проездные билеты метро, представляющие собой карточку с RFID меткой.

Зародившись как альтернатива жетонам и бумажным билетам общественного транспорта, пропускам, всевозможным талонам, радиоидентификация шагнула в складской учет и автоматизацию конвейерного производства. Нашлось применение карточек для малых платежей в школьных и студенческих столовых. Но по-прежнему главным применением RFID является опознавание свой, чужой.  

Характеристики считывателя RFID RC522

  Питание             Напряжение 3,3 B             Ток потребления в режимах                         дежурный 80 мкA                         ожидания 12 мA                         обычный не более 26 мA             наибольший 30 мА Частота HF 13,56 МГц Частотная полоса 13,55–13,57 МГц Расстояние считывания 0–25 мм Сопровождаемые карты             классы S50, S70, Ultralight, Pro, DESFire             типы Mifare S50, Mifare S70, Mifare UltraLight, Mifare Pro, Mifare DESfire Скорость передачи информации 106, 212, 424, 848 кбит/с Стандарт протокола NFC Reader ISO 14443 A Mifare classic protocol Шифрование Security Features Mifare classic™ Размеры 40 x 60 мм Температура             рабочая –20…80 С°             хранения –40…85 С° Относительная влажность 5–95 %

Контакты и сигналы RFID RC522

 
SDA (SS, CS, NSS) выбор ведомого, вход SPI SCK тактовый сигнал SPI, вход MOSI передача от мастера к помощнику, вход SPI MISO передача от помощника к мастеру, выход SPI IRQ прерывание, выход GND общий RST сброс, вход 3.3 V питание   Считыватель поддерживает интерфейсы SPI, UART и I2C через которые происходит обмен данными с другими приборами. На плате модуля RFID RC522 установкой логических уровней на специальных выводах микросхемы выбран интерфейс SPI. С одним Arduinio могут работать несколько приборов, подключенных к шине SPI.  

Соединение

  Множество устройств, к которым подключается считыватель имеют питание 5 В. При соединении устройств с разной величиной питания одними линиями следует применять меры согласования. Для этого используется следующая схема.  Схема согласования считывателя RFID RC522 с главным модулем Arduino, питающимся от 5 В.     Сигнал сброса, поступающий на контакт RST считывателя это не сброс Arduino или Raspberry Pi. Это совершенно другой сигнал. Он должен поступать от цифрового выхода МК и формируется программно. При подаче логического 0 происходит перезагрузка считывателя. Также считыватель сообщает низким уровнем на RST, что находится в режиме сна, и чтоб его ”разбудить” необходимо туда же подать высокий уровень.  Подключение к Arduino Uno.   Подключение RFID RC522 к различным типам контроллера Arduino.

RFID rc522 Arduino Mega Arduino Uno и Nano v3 Arduino Leonardo и Micro Arduino Pro Micro CraftDuino Raspberry Pi B+
MISO 50 12 ICSP-1 14 12 21
MOSI 51 11 ICSP-4 16 11 19
SCK 52 13 ICSP-3 15 13 23
SDA 53 10 24

    Контакт главного модуля для подключения к контакту SDA указывается как SS_PIN в программе. Контакт главного модуля для подключения к контакту RST указывается как RST_PIN в программе. Это выполняется с помощью команд:   #define SS_PIN номер контакта   и   #define RST_PIN номер контакта   Все контакты модуля кроме IRQ обязательно подключаются. Сигнал от контакта IRQ обрабатывается программно.  

Запись с помощью считывателя RFID RC522

  Устройство может применяться как программатор карточек. С его помощью можно не только читать хранящиеся данные, корректировать используя ПК и записать вновь, но и изменить идентификационный код.  

Пластиковая карта

  В комплект входит белая пластиковая карта. Mifare 1K на которую можно нанести цветное изображение. Внутри нее находятся антенна и микросхема Mifare S50, содержащая память и радиочасть. Размер памяти 1 килобайт, тип EEPROM. Она разделена на 16 секторов, состоящих из 4 разделов. В каждом разделе три информационных части и одна для ключей. Внутри одной части есть 16 байт памяти. Срок хранения данных 10 лет, количество циклов перезаписи 100000. Уникальность карточки Mifare обеспечивается присвоением изготовителем номера. Он используется в качестве идентификационного кода. Для защиты хранящихся данных в микросхеме карты использовано аппаратное шифрование. При работе данные с пластиковой карточки поступают на считыватель только после взаимной идентификации кода, записанного в сектор памяти карточки и хранящегося в считывателе.  

Характеристики карты

  Тип Mifare Standard 1k (тонкая) Время транзакции 0,164 с Температура             рабочая –30…75 С°             хранения –40…85 С° Размеры: 86 х 54 х 0,8 мм  

Определение номера карты

  Для записи и чтения с карты необходимо знать ее уникальный номер, необходимый для работы системы радиоидентификации. Определить номер можно использую программу Arduino. Соедините считыватель RFID RC522 и Arduino UNO. Воспользуйтесь готовойбиблиотекой, установив ее в Arduino IDE с помощью копирования в соответствующую папку. Запишите программу.   #include  #include “RFID.h”   #define SS_PIN 10 #define RST_PIN 9   RFID rfid(SS_PIN, RST_PIN);   // Setup variables:  int serNum0;  int serNum1;  int serNum2;  int serNum3;  int serNum4;   void setup() {  Serial.begin(9600);  SPI.begin();  Serial.println(“12″);  rfid.init();   }   void loop() {    if (rfid.isCard()) {  if (rfid.readCardSerial()) {  if (rfid.serNum[0] != serNum0  && rfid.serNum[1] != serNum1  && rfid.serNum[2] != serNum2  && rfid.serNum[3] != serNum3  && rfid.serNum[4] != serNum4  ) {  /* With a new cardnumber, show it. */  Serial.println(” “);  Serial.println(“Card found”);  serNum0 = rfid.serNum[0];  serNum1 = rfid.serNum[1];  serNum2 = rfid.serNum[2];  serNum3 = rfid.serNum[3];  serNum4 = rfid.serNum[4];    //Serial.println(” “);  Serial.println(“Cardnumber:”);  Serial.print(“Dec: “);  Serial.print(rfid.serNum[0],DEC);  Serial.print(“, “);  Serial.print(rfid.serNum[1],DEC);  Serial.print(“, “);  Serial.print(rfid.serNum[2],DEC);  Serial.print(“, “);  Serial.print(rfid.serNum[3],DEC);  Serial.print(“, “);  Serial.print(rfid.serNum[4],DEC);  Serial.println(” “);    Serial.print(“Hex: “);  Serial.print(rfid.serNum[0],HEX);  Serial.print(“, “);  Serial.print(rfid.serNum[1],HEX);  Serial.print(“, “);  Serial.print(rfid.serNum[2],HEX);  Serial.print(“, “);  Serial.print(rfid.serNum[3],HEX);  Serial.print(“, “);  Serial.print(rfid.serNum[4],HEX);  Serial.println(” “);  } else {  /* If we have the same ID, just write a dot. */  Serial.print(“.”);  }  }  }    rfid.halt(); }   

Программа выводит ряд чисел: 44, 133, 240, 36, 125. Пишем их в обратном порядке. Убираем первое число, (контрольная сумма, оно только что было последним) и оставшиеся числа переводим в шестнадцатеричный вид. Пишем в том же порядке но без пробелов. Теперь это большое число переводим в десятичный вид и получаем номер карты.

Источник: http://arduino-e.ru/datchiki/rfid-skanner

Ссылка на основную публикацию
Adblock
detector