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

Что такое 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 МГц).

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

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

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

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

Arduino rfid excel. сбор данных

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

В этой статье я хочу рассказать как можно занести в таблицу 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;

Rfid reader подключение к arduino

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

RFID (англ.

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

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

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

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

RFID RC-522

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

Rfid-сканер

Arduino rfid модуль mfrc522: делаем простой сканер - Electronic PartsСчитыватель 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 через которые происходит обмен данными с другими приборами.

Соединение

Множество устройств, к которым подключается считыватель имеют питание 5 В. При соединении устройств с разной величиной питания одними линиями следует применять меры согласования. Для этого используется следующая схема.  Схема согласования считывателя RFID RC522 с главным модулем Arduino, питающимся от 5 В.

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

RFID rc522Arduino MegaArduino Uno и Nano v3Arduino Leonardo и MicroArduino Pro MicroCraftDuinoRaspberry Pi B
MISO5012ICSP-1141221
MOSI5111ICSP-4161119
SCK5213ICSP-3151323
SDA531024

Контакт главного модуля для подключения к контакту 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(); }

https://www.youtube.com/watch?v=k5rzFc3DAKg

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

Библиотека mfrc522

Установим через менеджер библиотек вариант MFRC522 (домашняя страница).

MFRC522

В состав библиотеки входят несколько примеров, а также компонент для Fritzing. Для первого знакомства запустите скетч DumpInfo. В комментариях указаны варианты подключения для разных плат. Стандартный вариант для Arduino Uno/Nano.


-------------------------------------
            MFRC522      Arduino    
            Reader/PCD   Uno/101/Nano    
Signal      Pin          Pin        
-------------------------------------
RST/Reset   RST          9          
SPI SS      SDA(SS)      10         
SPI MOSI    MOSI         11
SPI MISO    MISO         12
SPI SCK     SCK          13

При поднесении карточки в мониторе порта увидите большую таблицу данных. Дождитесь полной загрузки данных и обратите внимание на данные в блоке 0 – там можно увидеть идентификатор.

RFID

Но у вас нет необходимости вручную считывать информацию из массива данных, идентификатор можно получить через вызов функции. В начале есть отдельная строка Card UID: 77 E7 BC 3A.

Рассмотрим упрощённый пример. Суть в следующем. Инициализируем объект класса MFRC522 и проверяем различные условия. Если к ридеру не поднесли карточку, то выходим из функции loop(), если прочитать карточку не можем, то также выходим из функции. Если оба условия всё же выполнились (есть карта и данные с неё), то выполняем уже нужный код.


#include <SPI.h>
#include <MFRC522.h>

// контакты
#define SS_PIN 10
#define RST_PIN 9

// Создание экземпляра объекта MFRC522
MFRC522 mfrc522(SS_PIN, RST_PIN);  // Создание экземпляра MFRC522

void setup() {
  Serial.begin(9600);
  SPI.begin();

  // инициализация MFRC522
  mfrc522.PCD_Init();
  // выводим номер версии прошивки ридера
  mfrc522.PCD_DumpVersionToSerial();
}

void loop() {
  // Ожидание
  if ( ! mfrc522.PICC_IsNewCardPresent())
    return;

  // чтение
  if ( !mfrc522.PICC_ReadCardSerial())
    return;

  // вывод данных
  Serial.print("UID = ");
  view_data(mfrc522.uid.uidByte, mfrc522.uid.size);
  Serial.println();
  Serial.print("type = ");
  byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  Serial.print(mfrc522.PICC_GetTypeName(piccType));
  Serial.println();
  delay(1000);
}

// преобразование в HEX
void view_data (byte *buf, byte size) {
  for (byte j = 0; j < size; j  ) {
    Serial.print(buf [j]);
    Serial.print(buf [j], HEX);
  }
}

Подносим карточку и брелок из комплекта (MIFARE 1 KB), а также карточки московского транспорта (MIFARE Ultralight or Ultralight C). Идентификатор карточки выводится в десятичном формате.

MFRC522

Дополнительное чтение

Чтение данных транспортных карточек (RFID)

Запись и чтение пользовательских данных

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

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

Write RFID

Затем прошиваем плату вторым примером и снова подносим карточку. Ридер считает данные и выведет их в монитор порта.

Read RFID

Использование rfid модуля mfrc522 и ардуино

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

Уроки / Arduino, RFID

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

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

Как подключить rfid считыватель rc522 к arduino

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

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

Инструкция

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

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

К одной шине 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.

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

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

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

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

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

Модуль arduino rfid rc522

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

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

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

Подключение

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

MFRC522Arduino UnoArduino MegaArduino Nano v3Arduino Leonardo/MicroArduino Pro Micro
RST95D9RESET/ICSP-5RST
SDA(SS)1053D101010
MOSI11 (ICSP-4)51D11ICSP-416
MISO12 (ICSP-1)50D12ICSP-114
SCK13 (ICSP-3)52D13ICSP-315
3.3V3.3V3.3VСтабилизатор 3,3ВСтабилизатор 3,3ВСтабилизатор 3,3В
GNDGNDGNDGNDGNDGND

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

#define SS_PIN 10#define RST_PIN 9

Подключение rc522 к arduino uno

RC522 работает с метками диапазона HF по протоколу MIFARE.

Модуль RC522 имеет SPI-интерфейс. В SPI используются четыре цифровых сигнала:

  • MOSI — выход ведущего, вход ведомого (англ. Master Out Slave In). Служит для передачи данных от ведущего устройства ведомому.
  • MISO — вход ведущего, выход ведомого (англ. Master In Slave Out). Служит для передачи данных от ведомого устройства ведущему.
  • SCLK или SCK — последовательный тактовый сигнал (англ. Serial Clock). Служит для передачи тактового сигнала для ведомых устройств.
  • CS или SS — выбор микросхемы, выбор ведомого (англ. Chip Select, Slave Select).

Также, стоит отметить, что при подключении к Ардуино используется питание на 3.3 В.

RC522GNDVCCRSTSDA (SS)MOSIMISOSCK
Arduino UnoGND3.3V910111213

Подключение 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 блока.

Подключение rfid к arduino с помощью rc522 и rdm3600

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

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

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

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

SS      – 10 цифровойSCK    – 13 цифровойMOSI  –  11 цифровойMISO  –  12 цифровойIRQ     –  не подключаемGND   –   GNDRST    –   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);

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

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

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

Подключение к плате esp32

У платы ESP32 расположение выводов отличается от Arduino Uno, поэтому схема подключения будет следующей.


-----------------
 MFRC522 | ESP32
-----------------
     SDA | 21
     SCK | 18
    MOSI | 23
    MISO | 19
     IRQ | N/A
     GND | GND
     RST | 22
    3.3V | 3.3V

Библиотека MFRC522 должна работать без проблем.

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

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

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

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

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

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

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

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

Пример №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.

Пример №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;

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В 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>

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

  • Напряжение питания: 3.3V
  • Потребляемый ток :13-26mA
  • Рабочая частота: 13.56MHz
  • Дальность считывания: до 6 см
  • Интерфейс: SPI
  • Скорость передачи: максимальная 10МБит/с
  • Размер: 40мм х 60мм

Микросхема MFRC522 поддерживает интерфейсы SPI, UART и I2C. Выбор интерфейса осуществляется установкой логических уровней на определенных выводах микросхемы. В Arduino принято использовать SPI.

RC-522

Назначение выводов интерфейса SPI:

  • SDA – выбор ведомого
  • SCK – сигнал синхронизации
  • MOSI – передача от master к slave
  • MISO – передача от slave к master
  • IRQ – вывод прерывания
  • GND – земля;
  • RST – вывод для сброса
  • Vcc –питание 3.3 В

Выводы модуля подключаются к цифровым пинам Arduino


RC-522 | Arduino 
----------------
   SDA | D
   SCK | D
  MOSI | D
  MISO | D
   IRQ | N/A
   GND | GND
   RST | D
  3.3V | 3.3V  

На платах Arduino есть разъём ICSP, который можно использовать для работы с интерфейсом SPI.

RFID RC-522

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

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

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

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

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

Функции библиотеки

PCD_DumpVersionToSerial() – выводит версию прошивки ридера в монитор порта

PICC_IsNewCardPresent() – проверяет наличие поднесённой метки

PICC_ReadCardSerial() – считывает данные с метки

PICC_DumpToSerial() – выводит данные метки в монитор порта

PICC_GetType() – тип карты

PICC_GetTypeName – имя карты

Купить модуль RC-522 на AliExpress

Чтение и запись 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 больше специальных функций, позволяющих максимально сократить итоговый код программы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *