RFID запись.
Третий урок из цикла «Всё про RFID».
Сегодня мы продолжим изучать RFID считыватель на базе микросхемы RC522.
В первой части была теория, во второй мы сделали электронный rfid замок с доступом по карте или брелоку. Теперь настала очередь рассмотреть запись на карту.
Давайте представим, что мы некое предприятие и у нас есть группа сотрудников и нам надо выпустить именные карты для допуска этих сотрудников в офис.
В этом уроке мы научимся писать на карту свою фамилию и имя, номер офиса, а в следующем уроке добавим время прихода и ухода.
Более подробно про Запись на карты и возможности их применения можно прочитать здесь Запись на RFID-Карту и Брелок: Персонализация и Практическое Применение
Чтение и запись rfid меток не сложный процесс. Надо просто понять принцип и знать структуру rfid карты, а с модулем RFID RC522 и Ардуино – это вообще просто, так как большинство функций прописано в библиотеке MFRC522.h.
Rfid карта состоит из секторов и блоков, подробнее смотрите урок 1.

Сначала посмотрим, как подключить модуль считывания RC522 к Ардуино. Для тех, кто смотрел предыдущий урок и не поленился собрать свой замок мои поздравления. Напишите кто собрал замок.
Объяснять схему не буду, и так всё понятно. Если что не понятно пишите в комментариях.

Сначала посмотрим, что получилось, а потом рассмотрим скетч.
Сначала давайте посмотрим дамп карты. Для этого загружаем из скетч dumpinfo.
Прикладываем карту к считывателю и ждём пока не считаются все данные.
Нас интересуют сектора 1 и 2.
В нулевом блоке хранится служебная информация. Эта информация не перезаписываемая и прошита производителем. По крайней мере на картах которые идут в комплекте с модулем. Существуют карты где и эту информацию можно перезаписывать.
В первых 4 байтах находится серийный номер карты, а в оставшихся байтах информация о производителе.
В первом блоке сейчас находятся нули, это говорит о том что там нет информации. Её также нет и во втором и четвёртом блоке. Эти блоки мы будем использовать для записи и хранения нашей информации.
Сначала запускаем Пример 1.
Нас просят поднести карту для считывания.
Что же, давайте так и сделаем.
Дождёмся окончания.
Что мы здесь видим, точнее, увижу только я, так как у вас пока чистая карта и вы ничего не увидите, ну кроме НОМЕРА КАРТЫ.
- В сектор 1 у меня записана ФАМИЛИЯ.
- В секторе 2 ИМЯ
- Третий сектор использовать нельзя, так как это трейлер.
- А в четвёртом секторе НОМЕР КАБИНЕТА.

Давайте рассмотрим скетч.
Как подключен модуль rc522 я рассказывать не буду. Давайте сразу перейдём к считыванию секторов.
В самом начале мы должны проверить ключ карты и если он совпадает, то продолжаем работу.
По умолчанию для новой карты ключ равен FFFFFF.
Потом ждём пока не появится новая карта.
Выводим номер КАРТЫ в шестнадцатеричной системе. С этим всё понятно из предыдущего урока.
Код для вывода фамилии, имени и кабинета одинаков.
Меняется только номер блока. Поэтому я расскажу только про фамилию.
- Создаём массив – буфер — для хранения значений.
- Указываем номер блока.
- Затем в статус загружаем разные значения.
Такие как — Ключ карты, номер блока, UID карты.
Если всё правильно то можно работать дальше, а если нет, то выскочит ошибка и скетч прекратит работу.
Дальше мы в цикле выводим все 16 байт из блока.
И так со всеми блоками, то есть с блоками 1, 2 и 4.
Со считыванием разобрались, теперь давайте разбираться с записью.

Загружаем скетч Пример 2.
Поднести карту.

Кстати там есть ограничение на время ожидания ввода текста. Я установил 60 секунд.
Сначала вводим ФАМИЛИЮ и символ «решётка». Этот символ даёт знать, что ввод окончен и надо обработать текст. Нажимаем ENTER.
Затем вводим ИМЯ и снова вводим решётку и нажимаем ENTER.
Теперь вводим номер кабинета, решётку и ENTER.
И если после каждого ввода у вас не было ошибок и вы видите надпись УБЕРИТЕ КАРТУ, то значит всё прошло хорошо, и теперь можно перейти к ПРИМЕРУ 1 и считать ваши записи с карты.
Записывать на карту можно до 200 тыс. раз, так что можете тренироваться и не ограничивать себя.
Ну вот и всё. Всё работает. И как всегда в конце урока я прошу вас поставить лайк этому видео если оно вам понравилось. И жду ваших комментариев.
Следующее видео будет про копирование и клонирование карт.
И чем больше ваших положительных отзывов, тем быстрее оно выйдет.
До встречи в следующих уроках.
Как и обещал, хочу рассказать про русский шрифт. Если вы будете делать записи на латинице, то в каждом блоке вы можете сохранить до 16 символов. А вот если вы будете писать на кириллице, то всего лишь 8 букв.
Это потому, что для хранения будут использован формат Unicode , а он требует для хранения 2 байта.
Постскриптум.
Я ещё написал код для очистки блоков карт. Правда, это только набросок, но он вполне рабочий.
Копирование и клонирование RFID карт. Создание дубликатов.
Модуль RFID RC522 предоставляет возможность копирования и клонирования RFID-карточек и брелоков, а также создание дубликатов, открывая перед вами множество интересных применений.
В этой статье мы кратко рассмотрим, как подключить модуль RFID RC522 к платформе Arduino и подробно расскажем о преимуществах копирования RFID-карточек, а также о том, где и как это можно применить.
Подключение Модуля RFID RC522 к Arduino
Прежде чем приступить к копированию RFID-карточек, давайте рассмотрим, как подключить модуль RFID RC522 к платформе Arduino.
Этот модуль оснащен интерфейсом SPI (Serial Peripheral Interface), что делает его идеальным для взаимодействия с Arduino.
Вот как вы можете подключить модуль:
Питание:
Подключите контакты VCC и GND модуля к соответствующим пинам Arduino, чтобы обеспечить питание. Обычно используется напряжение 3,3 В.
SPI:
Подключите контакты SDA (Data), SCK (Clock), MOSI (Master Out Slave In) и MISO (Master In Slave Out) модуля к соответствующим пинам на Arduino. В случае Arduino Uno, это пины 10, 13, 11 и 12 соответственно.
RST:
Подключите контакты RST (сброс) к пину на Arduino. Например, вы можете подключить RST к пину 9.
Более подробно про подключение смотрите в специальной статье. подключение RFID RC522 к Arduino

После успешного подключения модуля RC522 к Arduino, вы будете готовы к копированию и клонированию RFID-карточек.
Преимущества Копирования RFID-Карточек
Теперь, когда модуль RC522 подключен, давайте разберемся, в чем заключаются преимущества копирования RFID-карточек:
Резервные Копии:
Один из наиболее очевидных примеров — создание резервных копий доступа. Если у вас есть RFID-карта, открывающая дверь в ваш офис, вы можете создать резервную копию, чтобы не остаться на работе, если потеряете оригинал.
Расширение Доступа:
Копирование RFID-карточек позволяет вам расширить доступ к определенным местам. Например, если у вас есть домашний брелок для системы безопасности, вы можете создать несколько копий для доверенных членов семьи. Таким образом, каждый член семьи сможет легко получить доступ к дому.
Удобство:
Копирование RFID-карточек гораздо удобнее, чем покупка дополнительных оригинальных карт. Это экономит ваше время и деньги. Вам не нужно заказывать новые карточки или брелоки у производителя, и вы можете сделать копии сами.
Совместимость:
Клонированные карточки обычно полностью совместимы с оригиналами и не вызывают проблем в системе доступа. Это означает, что скопированные карточки работают точно так же, как и оригиналы, и не вызывают подозрений.
Системы Безопасности:
В некоторых случаях, копирование RFID-карточек может быть полезным для тестирования собственных систем безопасности. Вы можете использовать копии для проверки, насколько надежно работает ваша система безопасности и насколько сложно взломать ее.
Создание Дубликатов RFID-Карточек
Чтобы создать дубликат RFID-карточки или брелока, вам понадобится модуль RFID RC522, подключенный к платформе Arduino который позволяет считывать и записывать данные с карточек.
Считывание Оригинала: Первым шагом является считывание данных с оригинальной RFID-карточки или брелока. Для этого необходимо поднести оригинал к модулю RFID RC522, чтобы считать уникальный идентификатор.
Запись на Копию: После того как данные считаны с оригинала, они могут быть записаны на пустую RFID-карточку. Процесс записи данных на копию довольно прост и требует всего нескольких команд. Все примеры абсолютно просты и их можно скачать по ссылкам внизу страницы.
Тестирование Копии: После создания копии вы можете протестировать ее, прикладывая ее к системе доступа и проверяя, работает ли она так же, как и оригинал.
Использование Копии: После успешного создания копии, вы можете использовать ее для доступа к системам безопасности, дверям, умным замкам и другим устройствам, для которых она предназначена.
Примеры Применения Копирования RFID-Карточек и Брелоков:
Умный Дом:
В системах умного дома RFID-карточки или брелоки могут использоваться для открытия дверей, управления системой безопасности, освещением, климатом и другими функциями. Создание дополнительных копий позволяет всем членам семьи иметь доступ к умному дому.
Офисы и Бизнес:
В офисах RFID-карточки используются для доступа к зданию, офисным помещениям и системам безопасности. Копирование карточек полезно для сотрудников, которые забыли или потеряли свои карточки.
Системы Безопасности:
Внутренние и внешние системы безопасности, такие как умные замки и видеонаблюдение, могут использовать RFID-карточки для авторизации доступа. Копии карточек могут быть использованы для дополнительных участников системы безопасности.
Гостиницы и Гостевые Дома:
В гостиницах и гостевых домах RFID-карточки используются для открытия номеров. Создание копий карточек позволяет гостям иметь доступ к разным номерах.
Парковочные системы:
RFID-карточки используются в системах автоматической оплаты парковки. Создание копий может быть удобно для разных водителей в семье.
Личное Использование:
Вы можете использовать копии RFID-карточек для доступа к вашей собственности, такой как гараж или хранилище. Это удобно и безопасно.
Гостевые Посетители:
Копии RFID-карточек могут быть предоставлены гостям, чтобы они имели доступ к вашему дому или офису на время их пребывания.
Заключение
Копирование RFID-карточек и брелоков с использованием модуля RFID RC522 дает вам больше гибкости и удобства в управлении вашими системами безопасности и доступа.
Если вы заинтересованы в применении этой технологии, обязательно ознакомьтесь с нашим примером и видео по ссылке Копирование КАРТ и создание дубликатов.
Начните сегодня и оцените все преимущества, которые копирование RFID-карточек может предоставить вам и вашей организации.
Как я RFID клонер делал
Здравствуйте, уважаемые хабро-жители. Я решил написать небольшую статью о том, как я RFID воевал. История в том, что я хотел написать себе небольшой клонер для RFID ключей и карт. Так же я думал сделать себе простой универсальный ключ для домофона/работы.
Кого заинтересовала данная тема – добро пожаловать под кат.
RFID – Radio Frequency IDentification, способ автоматической идентификации объектов, в котором посредством радиосигналов считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках.
Сначала я решил собрать простенький концепт, а потом заказывать железочки для уменьшения схемы. Мой сетап был таковым:
- Arduino Mega в оформлении Keystudio
- RFID-RC522 в оформлении Keystudio
Для начала я решил всё собрать и посмотреть пример проекта, который работает с этим RFID модулем. Я выбрал дампер и решил посмотреть, что же лежит в ключе. Всё было собрано, подключено и я залил скетч в Arduino.
В помощь, тому кто хочет повторить по ссылке далее можете увидеть, как подключить к разным моделям Arduino.
Так выглядит всё в собранном виде.

Всё подключено, скетч залит, монитор COM порта открыт, и я решил поднести ключ. Что я вижу? А я вижу прекрасную белую пустоту. Окей, может быть что-то с ключом случилось. Подношу карту от работы – ничего. До меня доходит прекрасная мысль. Открываю на телефоне Apple Pay и подношу к ридеру и происходит чудо! Таким образом я понял, что дело не в том, что я подносил до этого. Я решил проверять и дальше. Когда я подносил банковские карты ридер тоже их считывал. Так же в комплекте с Arduino у меня лежал RFID-брелок и RFID-карта. И я подумал, что стоит приложить их тоже и посмотреть. Вот так они выглядят.

После того как я поднёс карту к ридеру – монитор COM-порта выдал мне следующие.

Пойдём дальше. Почему не читается мой ключи? И я ушёл в гуглинг. Гуглил-гуглил и нагуглил. К огромному сожалению информации было мало. Действительно мало. Но итог был такой. У нас применяется немного другой формат RFID-меток. Он называется EM-Marine. И для этого формата надо применять другой ридер – RDM6300.
Целью этой статейки является небольшая помощь тому, кто захочет пойти данной тропинкой.
Будет и продолжение. Как только ко мне приедет этот модуль я напишу продолжение и приложу код для копировальщика и универсального ключа.
Есть и другой вариант как это сделать без модуля. Был на Хабре пост о том, как это сделать с помощью только одного RFID-брелка.
Эта тема является очень интересной, но моей целью было сделать всё более красиво в плане внешнего вида. Так же будет ещё один пост описывающий стандарт EM-Marine.
Всем большое спасибо за прочтение. Хотелось бы провести небольшой дискурс в коментах.
Копировщик RFID-меток стандарта EM-Marin
Как известно, во многих системах доступа используются карты RFID стандарта EM-Marin с частотой 125 КГц. Не исключением стал и домофон моего дома. Одна проблема – неплохо бы научиться копировать такие карты, ибо ценники на их копирование не радуют. В сети, конечно, существует довольно много схем копировщиков (да и китайцы продают свои копировщики за копейки — правда, они часто при копировании ставят свой пароль на болванки), но почему бы не собрать свой собственный копировщик? Вот об этом и нижеприведённая статья.
Начинать разработку копировщика стоит с выяснения, а на что вообще можно скопировать такие метки? Почитав форумы, можно узнать, что наиболее распространёнными болванками для копирования являются T5577, T5557, EM4305.
Теперь нужна схема. Возьмём аналоговую часть такого копировщика у RECTO и подключим её к микроконтроллеру atmega8. Дополним преобразователем уровней для подключения к COM-порту на базе max232 (желающие могут использовать ST232 или ещё что, чтобы подключится по USB, но у меня на компьютере COM-порт есть, как есть и переходник USB-COM, так что у меня такой задачи не стояло).
Получится вот такая схема:
Что она из себя представляет? Сдвоенный эмиттерный повторитель, колебательный контур, детектор и RC-фильтры. За счёт того, что RC-фильтры имеют разные постоянные времени, сравнивая между собой уровни напряжения между каскадами можно выделять изменение сигнала RFID-метки. Данной задачей у нас будет заниматься встроенный в atmega8 компаратор. Генерацию 125 КГц сигнала у нас будет обеспечивать встроенный в atmega8 ШИМ-контроллер.
Комбинация RFID-метка – считыватель образуют трансформатор, где метка является вторичной обмоткой. Передача информации меткой производится путём изменения нагрузки вторичной обмотки. В результате в катушке считывателя (первичной обмотке) изменяется ток. Выделением этих импульсов тока и занимается приведённая выше аналоговая часть схемы. Колебательный контур нужно настроить на максимальное напряжение в контрольной точке, например, сматывая/наматывая витки катушки. Правда, говорят, лучше всё же напряжение немного меньше максимума — стабильнее работает. У меня в контрольной точке около 40 В.
Копируемая метка использует кодирование типа манчестер. Для того чтобы расшифровать данный код, достаточно по любому изменению фронта сигнала пропускать три четверти периода слота бита и по следующему за ним перепаду сигнала фиксировать значение бита, которое будет соответствовать значению сигнала после перепада. При декодировании стоит задать окно, в которое должен произойти перепад сигнала – не более половины периода слота бита.
Метод расшифровки манчестерского кодирования и код для этого я взял у Shads. Можно, конечно, было написать свой собственный, но я торопился запустить копировщик — хотелось убедиться, что схема рабочая и приём меток производится. Так этот фрагмент и остался в коде копировщика. Также оказалось, что у меня компаратор настроен инверсно, чем нужно коду декодирования. Изменил в коде. Итак, мы получили последовательности нулей и единиц. Как из них получить код карты?
А очень просто. Примем, что номер карты по нибблам имеет вид AB CD EF GH IJ. Карта выдаёт вот что:
1) Девять единиц в начале;
2) Ниббл A;
3) Чётность ниббла A (1 бит);
4) Ниббл B;
5) Чётность ниббла B (1 бит);
…
16) Ниббл I;
17) Чётность ниббла I (1 бит);
18) Ниббл J;
19) Чётность ниббла J (1 бит);
20) Ниббл чётности колонок для нибблов A B C D E F G H I J;
21) Бит 0.
Считываем все 64 бита, расшифровываем и получаем 40 бит кода карты. Логично, что если самому выдать такой код, замыкая катушку карты приложенной к считывателю, мы получим эмулятор карты. Но сейчас нас интересует не он.
Карту мы читать научились, а вот как передать данные карте? Для этого нужно просто включать или выключать частоту 125 КГц в соответствии с протоколом обмена с картой. На время “молчания” считывателя карта питается запасённой энергией.
Болванки T5557/T5577 полностью совместимы между собой по протоколам записи, однако, имеют немного разные минимальные и максимальные времена импульсов (к счастью, времена T5557 перекрываются с T5577). У EM4305 протокол записи иной.
Чтобы записать T5557 я воспользовался кодом BolshoyK. В таблице ниже указаны параметры сигналов для брелока T5557.
Запись начинается с сигнала StartGape – требуется отключить сигнал 125 КГц примерно на 300 мкс. Это сигнал карте, что сейчас ей начнут передавать данные. Дальше следует передать болванке информацию. Кодирование передаваемых данных – тот же манчестер.
Болванки T5557/T5577 и EM4305 многофункциональные и умеют разные виды модуляций, поддерживают пароли и ещё много чего. В каждой болванке на борту имеется набор блоков по 32 бита. Назначение этих блоков разное. В некоторых – выдаваемый код ключа (он занимает два блока). В других – конфигурация. В третьих – идентификатор производителя. Мы будем использовать ограниченный функционал, поэтому желающие разобраться, что значат все эти биты, могут заглянуть в документацию к болванкам (я приложил её к архиву).
Блоки собраны в две страницы (0 и 1).
В нулевой странице есть блок конфигурации с индексом 0. Его мы и будем задавать. Для T5557/T5577 у нас будут следующие конфигурационные байты: 0x00,0x14,0x80,0x40 в соответствии с таблицей из документации (красным я отметил выбранные единичными битами режимы):
Таким образом, у нас выбрано: частота передачи данных RF/64 (125 КГц/64), кодирование типа манчестер, выдача блоков до второго (в блоках 1 и 2 у нас будет располагаться код, выдаваемый картой). Перед записью следует отправить код операции (2 бита opcode) и один бит защёлки (lockbit). Коды операции 10b и 11b предшествуют записи данных для страниц 0 и 1 (младший бит задаёт номер страницы, старший — код записи страницы). У нас выдаётся 10b для кода операции (вся работа идёт с нулевой страницей) и 0b для бита защёлки. После передачи всех этих данных необходимо передать трёхбитный адрес записываемой страницы. Все передачи данных для T5557/T5577 ведутся от старшего бита к младшему.
Задав код карты в блоках 1 и 2 и конфигурацию в блоке 0 можно получить дубликат RFID-метки. Как видите, всё просто.
Следующий тип болванок – это EM4305. Вот разбираться с записью этой болванки мне пришлось самому. Она также состоит из блоков по 32 бита, но назначение их иное.
Кодирование передаваемых карте данных – по перепадам за интервал времени. Если перепад за интервал времени был, то это ноль, а если не было — единица. Конфигурационное слово хранится в 4 байте и для себя я определил его так: 0x5F,0x80,0x01,0x00 (кодирование манчестер, RF/64, выдача слова 6). В слова 5 и 6 я записываю код карты (те самые 64 бита, что выдаёт карта). EM4305 требует чтобы передача велась от младшего бита к старшему. Карта понимает, что с ней начинают обмен после выдачи ей комбинации импульсов:
- Отключаем поле на 48 мкс.
- Включаем поле на 96 мкс.
- Выключаем поле на 320 мкс.
- Включаем поле на 136 мкс.
- Отключаем поле до следующей команды.
- Шлём вышеуказанную последовательность импульсов.
- Шлём 0b.
- Передаём CC0-CC1 и их чётность P. (0101b для записи, см. таблицы ниже).
- Передаём адрес блока (см. таблицу), два дополняющих нуля и чётность адреса.
- Передаём данные блока (32 бита).
Формат команды
Коды команд
Формат адреса блока
Таким образом задаётся конфигурация болванки EM4305 и её код.
Собственно, ничего большего простому копировщику и не требуется.
Я сделал несколько вариантов копировщика с разными дисплеями. Например, вот копировщик с дисплеем 1602:

А вот видео работы копировщика на дисплее LPH9157-02:
А вот причина, по которой я заинтересовался копировщиками таких ключей — нужно было сделать много копий ключа от домофона (ждать посылки из Китая при этом тоже было лень), но ценник вот какой:

В архиве все схемы, печатки, программы и документация на болванки. Есть версия для Arduino Nano (её нужно прошивать отдельно через программы для заливки сторонних прошивок).
Желающие могут открыть документацию на все эти болванки и реализовать поддержку паролей и иные режимы работы карт. Мне лично всё это было ненужно.
Отдельное большущее спасибо RECTO, BolshoyK и Shads — без вас я бы развлекался бы с разработкой довольно долго!
Спасибо за внимание.
P.S. Я не являюсь профессионалом в копировании ключей и в болванках, поэтому вполне мог в чём-то ошибиться. Однако, копировщик работает, и в нём ошибок пока никто не нашёл.
- C
- Программирование микроконтроллеров