Rfid arduino: Работа с Arduino и RFID MFRC522

RFID запись

Третий урок из цикла «Всё про RFID».
Сегодня мы продолжим изучать RFID считыватель на базе микросхемы RC522.
В первой части была теория, во второй мы сделали электронный 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 с Arduino — Maker Portal

«Как участник программы Amazon Associates, переход по ссылкам может привести к тому, что Maker Portal получит небольшую комиссию, которая поможет поддержать будущие проекты».

Введение
Список деталей и проводка
Тестирование библиотеки RFID Arduino
Настройка RFID-меток в Arduino
Заключение и продолжение

Радиочастотная идентификация, или RFID, — это широко используемая технология, разработанная для хранения и извлечения информации в устройствах с поддержкой радиочастот. Чаще всего системы RFID состоят из одной или нескольких RF-меток, RF-считывателя и базы данных. Метки RFID имеют уникальные идентификаторы (UID), которые позволяют считывателю идентифицировать их через базу данных. Метки RFID могут быть активными или пассивными, что означает, что они либо требуют внешнего питания (активные), либо питаются от считывателя при сканировании (пассивные). Пассивные RFID-метки чаще всего используются для обеспечения доступа к зданию и безопасности, отслеживания поставок и контроля запасов; в то время как активные теги используются для дорожных сборов и отслеживания активов в больших пространствах на больших расстояниях. Радиочастоты, используемые в RFID, могут варьироваться от низких частот (124 кГц+) до сверхвысоких частот (900 МГц — 2,4 ГГц), в зависимости от применения [подробнее о особенностях RFID

читайте здесь и здесь и здесь ]. В этой серии руководств основное внимание уделяется пассивным высокочастотным (13,56 МГц) RFID-меткам, поскольку они очень компактны, недороги и не требуют внешнего питания от батареи. Используя плату Arduino, обычный считыватель RFID (MFRC522) и несколько меток/карт RFID, мы будем изучать методы чтения и записи информации RFID, пытаясь понять, как работает RFID-коммуникация, и определить ограничения технологии с помощью Arduino.
.

Список деталей и проводка

В этом руководстве мы будем использовать плату Arduino Uno и считыватель RFID MFRC52213,56 МГц, а также несколько меток и карт RFID. MFRC522 взаимодействует с платой Arduino через SPI, поэтому нам понадобится довольно много перемычек для соединения двух устройств. Мы также взаимодействуем с компьютером Raspberry Pi 4. Полный список деталей приведен ниже:

  • Плата Arduino Uno — $13,00 [Наш магазин]

  • Комплект RFID MFRC522 (6 меток + крепеж) — $18,00 [Наш магазин]

  • RFID-метки/карты — 7,88 долл. США (10 брелоков) [Amazon], 6,99 долл. США (10 карт) [Amazon] 33

  • Малиновый пи 4 Компьютер — 69,99 долл. США (4 ГБ) [Amazon], 119,99 долл. США (комплект 8 ГБ) [Amazon]

Quick View

MFRC522 Комплект RFID для Arduino

18,00 $

Количество:

В корзину

Проводка между платой MFRC522 и платой Arduino Uno для соединения SPI приведена ниже:

Тестирование библиотеки RFID Arduino

Менеджер библиотек Arduino IDE имеет широко используемую библиотеку RFID, совместимую с чипом MFRC522. Библиотеку с удобным названием MFRC522 можно загрузить непосредственно из менеджера библиотек, и пользователь может сразу приступить к работе с множеством примеров сценариев, доступных для платформы Arduino. Ниже приведена краткая последовательность действий по загрузке библиотеки MFRC522:

Перейдите к диспетчеру библиотек

На панели инструментов: Эскиз -> Включить библиотеку ->

Управление библиотеками…

Поиск библиотеки MFRC522

Установка библиотеки MFRC522, разработанной GithubCommunity

Ознакомьтесь с примерами, доступными для выбранной платы Arduino (в данном случае Uno)

Перейдите в Файл -> Примеры -> MFRC522

Мы будем использовать эти примеры для чтения и записи различной информации на RFID-карты с уникальными идентификаторами (UID) и с них.

Проверка дампа информации из тега RFID:

Первые проверки, которые мы можем выполнить для проверки проводки, библиотеки Arduino и действительности тегов RFID, — загрузить код « DumpInfo » из примеров список. После загрузки, при условии, что проводка выполнена правильно и ошибок нет, пользователь должен поместить метку в пределах 4 дюймов от области сканирования MFRC522 (волнообразный рисунок на плате MFRC522) и найти распечатку на последовательном порту Arduino. это выглядит примерно так:

Информационный дамп из метки RFID

Обратите внимание на терминологию секторов и блоков. Они будут обсуждаться ниже.

Из информационного дампа мы можем видеть, что тег, который мы используем, представляет собой тег MIFARE 1 КБ , который мы можем количественно определить путем умножения 64 блоков x 16 байтов на блок = 1024 = 1 КБ. Это стандартный классический тег MIFARE, который используется в системах с низким уровнем безопасности, таких как общественный транспорт, школы и университеты, а также доступ в офисы сотрудников.

Ниже приведен отличный ресурс MIFARE Classic:

— «MIFARE Classic 1K-Mainstream бесконтактная смарт-карта IC для быстрой и простой разработки решений». Ред. 3.2 — 23 мая 2018 г., NXP.

Чтобы идентифицировать термины, напечатанные выше, мы составили пояснение для каждого термина на основе документа MIFARE, опубликованного NXP:


  • PICC — бесконтактная карта с интегральной схемой (бесконтактная карта). Это метка/карта, используемая в качестве «устройства доступа».

  • UID — уникальный идентификатор. Это 4-байтовый (32-битный) идентификатор, присвоенный каждому PICC (тегу). Более 4,2 миллиарда идентификаторов доступны с 4-байтовой системой идентификаторов. UID обычно хранится в секторе 0, блок 0 в первых четырех байтах.

  • SAK — выберите Подтвердить. Это используется для проверки соответствия международным стандартам.

  • Сектор — Сектор разделен на 4 блока. Всего в каждом теге 1K MIFARE 16 секторов.

  • Блок. Блок состоит из 16 байтов данных.

  • Биты доступа — управляют правами на чтение/запись для каждого блока.

Существует также подробная диаграмма, созданная NXP, которая объясняет многие компоненты, напечатанные кодом Arduino:

Предоставлено NXP, начиная с MIFARE Classic EV1 1K

На приведенной выше диаграмме содержится еще несколько фрагментов информации, которые мы можем использовать для понимания вывода последовательного монитора Arduino. Из нашей серийной распечатки ключ B для наших секторов тегов — FF FF FF FF FF FF, что является своего рода заводским значением по умолчанию для классических тегов MIFARE. Кроме того, документ NXP подробно описывает взаимосвязь между ключами и битами доступа, однако мы не будем тратить на это время, так как это может стать довольно сложным. И последнее замечание по дампу информации: мы можем определить важную информацию о каждой карте на основе нулевого блока нулевого сектора, известного как данные производителя. В нашей карте, напечатанной выше, мы видим, что первые четыре байта блока 0 содержат UID карты.

Используя таблицу, предоставленную NXP, и приведенные выше определения, мы можем определить несколько ключевых параметров для нашего конкретного тега (из распечатки Arduino выше):

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

Настройка RFID-меток в Arduino

Мы попытаемся изменить уникальный идентификатор (UID) каждой метки, размещаемой перед активной областью MFRC522. Код примера MFRC522 ‘ ChangeUID позволяет нам сделать это, предоставляя пользователю возможность изменить UID на собственный 4-байтовый адрес. Мы собираемся изменить адрес тега, распечатанный в предыдущем разделе, на совершенно случайный адрес «F3 45 1B 0C» для тестирования. Если мы поместим тот же тег перед областью сканирования MFRC522, мы получим следующий вывод, который мы можем сравнить с предыдущим выводом:

.

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

Сканирование тегов после изменения UID с помощью MFRC522

Мы видим, что единственной информацией, которая изменилась, были первые пять байтов нулевого блока сектора 0. Первые четыре байта были изменены на желаемый UID, а пятый байт оказался либо случайным, либо заданным действием записи (мы не идентифицировали это обозначение байта в библиотеке).

Примечание: UID могут быть изменены только для записываемых тегов. Белые карты, которые мы используем, доступны для записи, и поэтому их UID могут быть изменены. Черные метки доступны только для чтения и не позволяют изменять UID (Arduino уведомит пользователя об этом).

Мы несколько раз пытались записать новые UID в наши черные теги, но не смогли. Это было ожидаемо из-за спецификации только для чтения, однако мы решили, что попытка не помешает!

Запись данных в RFID-метки

Далее мы попытаемся записать определенные данные в каждую метку, чтобы увидеть, какую информацию мы можем сохранить. Каждый сектор (кроме сектора 0) имеет три доступных блока для хранения данных (4 блока на сектор, минус 1 для ключа). Таким образом, мы можем хранить до 48 байт данных в каждом секторе. Это может привести к хранению имен, дат, информации о местоположении, информации о продукте — возможности обширны. Мы можем начать с примера в библиотеке Arduino MFRC522 под названием «9».0084 rfid_write_personal_data ’, который попросит пользователя ввести имя и фамилию для сохранения в электрически стираемой программируемой постоянной памяти (EERPROM), также известной как 16-секторы данных.

При открытии последовательного монитора после загрузки « rfid_write_personal_data » пользователь должен поместить свою метку RFID перед активной областью MFRC522. Последовательный монитор запросит два ввода:

  1. Тип Имя семейства, заканчивающееся на #

  2. Введите Имя, заканчивающееся на #

Пользователь должен ввести имя, за которым следует символ #. Например:

  • Smith#

  • John#

Результирующие вводы будут сохранены в памяти и в случае успеха должны вывести следующее:

Успешное сохранение имени и фамилии в метке RFID

В нашем случае мы ввели Smith# и John#, что должно вывести John Smith в качестве имени и фамилии.

Если мы сейчас загрузим « rfid_read_personal_data », мы увидим, как личные данные возвращаются нам на основе наших входных данных выше:

И это подтверждает, что наши данные сохранены в метке RFID. Мы можем увидеть, как данные сохраняются, снова вернувшись к примеру « DumpInfo » и посмотрев на вывод:

Вывод всех 16 секторов после сохранения имени и фамилии

Мы видим, что изменились блоки 1,2 и 4,5, где код примера сохранил личные данные.

Если бы мы скопировали сектор 1 и преобразовали его из шестнадцатеричных символов в символы UTF-8, мы получили бы следующий вывод:

То же самое можно сделать и для имени (содержащегося в секторах 4), хотя четвертый сектор содержит символы возврата каретки и новой строки в качестве первых двух байтов. Эти два символа связаны с настройкой нашего последовательного монитора (как NL, так и CR). Если мы изменим настройку строки на «Без окончания строки», это исчезнет, ​​и мы просто получим «Джон» и «Смит» в качестве выходных данных для секторов 1 и 4. Пользователи также могут проверить шестнадцатеричные значения в UTF-8, вставив шестнадцатеричный вывод в веб-сайт преобразования шестнадцатеричного кода (например, https://www.rapidtables.com/convert/number/hex-to-ascii.html).0005

Ресурсы RFID:

— Хочу, Рой. «Введение в технологию RFID». Распространенные вычисления IEEE 5.1 (2006): 25-33.

Заключение и продолжение

В этом первом выпуске серии руководств по RFID с Arduino проводка, тестирование и простая настройка RFID-меток были представлены с помощью RFID-модуля MFRC522. MFRC522 считывается и управляется через SPI с помощью платы Arduino Uno, для которой имеется специальная библиотека Arduino, загружаемая из диспетчера библиотек. Несколько доступных примеров были использованы для ознакомления и изучения основ RFID с Arduino, а также для понимания некоторых внутренних механизмов работы библиотеки и радиочастотной идентификации как технологии. Термины RFID, такие как сектора, блоки и уникальные идентификаторы, обсуждались и использовались для понимания некоторых примеров, предоставленных библиотекой RFID Arduino. Для проверки различных возможностей модуля MFRC522 использовались четыре разных примера, которые включают изменение UID записываемых RFID-меток, сброс информации, содержащейся во всех секторах метки, и запись/чтение пользовательских данных из RFID-метки. Этот учебник будет продолжен в последующих руководствах, в которых более подробно рассматривается настройка данных, содержащихся в метке RFID.

Ссылка на эту страницу:

Подробнее в Arduino:

Регистрация и визуализация данных датчика Arduino на iPhone

MakerBLE — крошечная плата Bluetooth Arduino nRF52840

Джойстик с тактильной обратной связью и Arduino

Портативный GPS-трекер с Arduino

Электронный бумажный дисплей с поддержкой Bluetooth и Arduino

Введение в RFID с Arduino

Характеристики солнечной панели и эксперименты с Arduino

TinyBlueX — маломощная плата Bluetooth Arduino

3 проекта Arduino среднего уровня, которые можно попробовать дома

Расходомер Вентури Arduino

Arduino, Electronics, ProgrammingJoshua Hrisko RFID, MFRC522, RFID-метки, радиочастотная идентификация, 13,56 МГц, SPI, Arduino SPI, Arduino RFID, MIFARE, PICC, UID, Sector, BlockComment

0 лайков

Взаимодействие RFID-RC522 с Arduino UNO

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

 

Система RFID состоит из двух частей: Метка и считыватель

 

Метка RFID

 

Метка RFID содержит чип для хранения информации о физическом объекте и антенну для приема и передачи сигнала. Метка RFID обычно может хранить 1 КБ данных, но этого достаточно для хранения имени, номера кредитной карты, уникального идентификационного номера, даты рождения и другой информации.

 

Считыватель RFID

 

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

 

 

  • Высокоинтегрированная аналоговая схема для демодуляции и декодирования ответов.
  • Поддерживает ISO/IEC 14443 A/MIFARE.
  • Типичное рабочее расстояние в режиме чтения/записи до 50 мм.
  • Поддерживает ISO/IEC 14443 Более высокая скорость передачи данных до 848 кбод.
  • SPI до 10 Мбит/с.
  • Буфер
  • FIFO обрабатывает 64 байта для отправки и получения.
  • Гибкие режимы прерывания.
  • Отключение в программном режиме.

 

 

  • Диапазон частот — ISM-диапазон 13,56 МГц
  • Хост-интерфейс — SPI/I2C/UART
  • Рабочее напряжение питания — от 2,5 В до 3,3 В
  • Макс. Рабочий ток — 13–26 мА        
  • Мин. Ток (отключение питания) — 10 мкА     
  • Логические входы — допустимое напряжение 5 В           
  • Диапазон считывания — 5 см

 

 

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

 

 

 

PIN-код RFID-RC522 КОНТАКТ ARDUINO UNO
ПДД 10
СКК 13
МОСИ 11
МИСО 12
IRQ НЕИСПОЛЬЗУЕМЫЙ
Земля Земля
РСТ 9
3,3 В 3,3 В

 

 

 

Чтобы упростить управление точечной матрицей, вам необходимо загрузить и установить в Arduino IDE библиотеку LedControl. Чтобы установить библиотеку, выполните следующие действия:

 

МЕТОД 1

 

  • Перейдите в меню «Эскиз».
  • Выберите «Включить библиотеки».
  • Перейти к управлению библиотеками.
  • Найдите MFRC522 и установите его.

 

МЕТОД 2

 

  • Вы можете установить его извне, используя следующую ссылку: https://github.com/miguelbalboa/rfid
  • После загрузки zip-файлов,
  • Перейдите в Sketch →   Включить библиотеку → Добавить библиотеку .ZIP
  • Затем добавьте загруженные zip-файлы.
  • Теперь библиотеки включены в вашу Arduino IDE.

 

ШАГ 1

 

После установки библиотеки откройте «Dumpinfo» из примеров и загрузите его в Arduino IDE.

 

 

ШАГ 2

 

Откройте два окна Arduino IDE, выберите Arduino UNO в качестве платы и выберите соответствующий COM-порт.


Плата: Инструменты > Плата > Arduino/Geniuno UNO.

 

 

ШАГ 3

 

Выберите последовательное устройство платы в меню Tools / Serial Port. Скорее всего, это COM3 или выше (COM1 и COM2 обычно зарезервированы для аппаратных последовательных портов). Чтобы узнать это, вы можете отключить плату и снова открыть меню; запись, которая исчезнет, ​​должна быть платой Arduino. Снова подключите плату и выберите этот последовательный порт.

Шаг 4

Выход

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

 

В этом примере проекта отображается вся полезная информация о теге, включая уникальный идентификатор (UID) тега, размер памяти и весь объем памяти 1 КБ. Память 1 КБ тега организована в 16 секторов (от 0 до 15) Каждый сектор далее делится на 4 блока (блоки от 0 до 3).

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

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