Перейти к содержанию

RFID и NFC

RFID - это радиочастотная идентификация. NFC - близкая технология для очень короткого расстояния, часто на частоте 13.56 MHz.

В простом DIY-устройстве это способ считать карту, брелок, наклейку или метку без проводного контакта. Например, пользователь подносит метку катушки, а устройство выбирает профиль материала.

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

Где используется

В iDryer-подобных проектах RFID/NFC можно использовать для:

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

Для выбора профиля материала часто достаточно читать UID метки и хранить таблицу UID -> материал. Но такой подход должен иметь ручной резервный выбор: если метка не считалась, пользователь всё равно должен иметь способ выбрать профиль.

RFID и NFC простыми словами

RFID - широкий термин. Он включает разные частоты, стандарты, дальности и типы меток.

NFC обычно означает ближнюю связь на 13.56 MHz, совместимую с частью RFID-экосистемы. NFC знаком по банковским картам, телефонам, NTAG-наклейкам и MIFARE-картам, но это не значит, что любой NFC-считыватель прочитает любую карту и любые данные.

Для небольших самодельных устройств чаще всего используют 13.56 MHz модули:

  • RC522 / MFRC522;
  • PN532;
  • готовые USB/UART RFID/NFC-считыватели;
  • NFC-модули с SPI, I2C или UART.

Есть и другие RFID-системы, например 125 kHz карты доступа или UHF RFID. Они не совместимы с 13.56 MHz NFC-модулями.

RC522

RC522 - дешёвый и распространённый модуль для 13.56 MHz карт и меток. Его часто используют с Arduino и ESP32.

Плюсы:

  • дешёвый;
  • много примеров;
  • подходит для простого чтения UID;
  • обычно подключается по SPI.

Минусы:

  • часто работает только с 3.3V питанием и логикой;
  • качество дешёвых модулей разное;
  • дальность чтения небольшая;
  • поддержка типов карт ограничена;
  • на плате пин SDA часто означает SS/CS для SPI, а не I2C SDA.

RC522 подходит, если нужно просто читать UID MIFARE-подобных карт или брелоков на малом расстоянии. Для более широких NFC-задач PN532 обычно удобнее.

PN532

PN532 - более гибкий NFC/RFID-контроллер. Многие PN532-модули умеют работать по:

  • SPI;
  • I2C;
  • UART.

Но выбранный интерфейс обычно нужно выставить физически на плате: перемычками, DIP-переключателями или пайкой. Нельзя подключить модуль по I2C, если он выставлен в SPI-режим.

PN532 чаще выбирают, если нужны:

  • больше вариантов интерфейса;
  • лучшая поддержка NFC-сценариев;
  • работа с разными типами меток;
  • Python/CircuitPython/Raspberry Pi сценарии;
  • более документированный модуль.

При этом PN532 тоже не волшебный универсальный считыватель. Нужно проверять конкретные типы карт, библиотеку и режим работы.

Частота и тип метки

Метка должна подходить считывателю.

Перед покупкой меток проверь:

  • частоту: 13.56 MHz, 125 kHz или другая;
  • тип: MIFARE Classic, NTAG213/215/216, ISO14443A или другой;
  • нужно ли только читать UID;
  • нужно ли читать/записывать пользовательские данные;
  • поддерживает ли выбранная библиотека нужные операции;
  • можно ли физически разместить метку на катушке или корпусе.

Если задача - выбрать профиль материала, обычно проще читать UID и хранить профиль отдельно в устройстве или на хосте. Запись данных внутрь метки усложняет проект: нужно думать о формате данных, совместимости, защите от перезаписи и ошибках записи.

UID - это не безопасность

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

Для профиля катушки это нормально: если UID известен, выбираем профиль. Ошибка не критична, потому что пользователь может проверить материал вручную.

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

Практическое правило:

  • UID подходит для удобства и идентификации расходника;
  • UID не должен быть единственной защитой опасного режима;
  • для нагревателей и силовой части всегда нужны отдельные проверки безопасности.

Питание и уровни логики

Многие RFID/NFC-модули рассчитаны на 3.3V логику. Это особенно важно для RC522 и PN532 breakout-модулей.

Проверь:

  • напряжение питания модуля;
  • уровень логики на SPI/I2C/UART;
  • есть ли на плате стабилизатор;
  • есть ли согласование уровней на сигнальных линиях;
  • нужны ли I2C pull-up резисторы;
  • нужна ли общая земля с контроллером.

Наличие 5V пина на плате модуля не всегда означает, что сигнальные линии терпят 5V. Некоторые модули могут питаться от 5V через стабилизатор, но логика при этом остаётся 3.3V.

Интерфейс подключения

RFID/NFC-модуль может подключаться по SPI, I2C или UART.

SPI:

  • быстрый и распространённый;
  • требует SCK, MOSI, MISO, CS;
  • у RC522 пин SDA часто фактически является CS;
  • важно не перепутать MOSI и MISO.

I2C:

  • использует SDA и SCL;
  • может делить шину с другими устройствами;
  • нужны правильные pull-up резисторы;
  • важно проверить адрес и выбранный режим модуля.

UART:

  • использует TX и RX;
  • TX одного устройства идёт на RX другого;
  • удобен для некоторых готовых считывателей;
  • нужно совпадение скорости и протокола.

Подробное подключение RC522 по SPI показано в практическом разделе: Подключение RFID-считывателя.

Антенна и корпус

RFID/NFC работает через антенну. У маленьких модулей она обычно напечатана прямо на плате.

На чтение влияют:

  • размер антенны;
  • ориентация метки;
  • расстояние;
  • пластик корпуса;
  • металл рядом;
  • провода и силовые линии рядом;
  • питание модуля;
  • тип метки;
  • место, куда пользователь подносит карту.

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

Для корпуса лучше заранее сделать понятную зону: "поднести метку сюда". Не стоит надеяться, что метка на катушке всегда автоматически прочитается через пластик, воздух, ось, держатель и соседние детали.

Логика устройства

RFID должен улучшать удобство, а не ломать управление.

Нормальная логика для катушки:

  1. Пользователь подносит метку.
  2. Устройство читает UID.
  3. UID ищется в таблице профилей.
  4. Если UID найден, предлагается профиль материала.
  5. Пользователь может подтвердить или изменить профиль.
  6. Если UID не найден или не считался, доступен ручной выбор.

Плохая логика:

  • без метки устройство невозможно запустить;
  • неизвестная метка выбирает случайный профиль;
  • ошибка чтения молча оставляет старый профиль;
  • профиль нагрева меняется без подтверждения пользователя;
  • UID используется как единственная защита сервисного режима.

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

Что проверить перед покупкой

Перед покупкой проверь:

  • частоту модуля;
  • поддерживаемые типы меток;
  • интерфейс: SPI, I2C, UART, USB;
  • напряжение питания;
  • уровни логики;
  • наличие согласования уровней;
  • наличие документации и распиновки;
  • как выбирается интерфейс на плате;
  • есть ли библиотека под твой контроллер;
  • размеры антенны;
  • тип и размер меток;
  • ожидаемую дальность в реальном корпусе;
  • можно ли сделать ручной резервный выбор.

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

Типовые ошибки

  • купили 125 kHz карту для 13.56 MHz считывателя;
  • подключили 3.3V RC522 к 5V питанию или логике;
  • приняли пин SDA на RC522 за I2C SDA;
  • перепутали MOSI и MISO;
  • забыли CS/SS в SPI;
  • выбрали на PN532 один интерфейс перемычками, а подключили другой;
  • не поставили I2C pull-up там, где они нужны;
  • поставили антенну рядом с металлом;
  • проверили чтение на столе, но не проверили в корпусе;
  • сделали RFID единственным способом выбора профиля;
  • используют UID как надёжную защиту доступа;
  • не обработали ситуацию "метка не считалась".

Главное

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

Сначала выбери частоту и тип меток, затем модуль, интерфейс, питание и место антенны. После этого проверь чтение в реальном корпусе и обязательно оставь ручной резервный выбор.

Материалы по теме