Nfc tag

Типы NFC-меток

Существует четыре типа меток, описанных NFC-форумом, все они базируются на RFID-протоколах. Это делает NFC метки частично совместимыми со многими уже существующими RFID системами (например, Mifare и FeliCa). Хотя эти более старые системы не поддерживают NDEF, они, однако, могут опознавать NFC метки, которые совместимы с ними.

Например, считыватель RFID, который предназначен для работы с метками Mifare Ultralight, может считать идентификационный номер метки NFC 2 типа, хоть и не может прочитать закодированную NDEF информацию. Есть также пятый тип, который совместим с технологией, но при этом не является частью NFC-спецификации.

Типы 1, 2 и 4 основаны на ГОСТ Р ИСО/МЭК 14443A (состоит из четырёх частей: 1, 2, 3, 4), тип 3 — на ГОСТ Р ИСО/МЭК 18092. Более подробно про каждый из типов можно прочитать под спойлером.

Тип 1:

  • Основан на ГОСТ Р ИСО/МЭК 14443A;
  • Может быть как только для чтения, так и для чтения/записи;
  • Содержит от 96 байт до 2 кбайт памяти;
  • Нет защиты данных от коллизий (прим. — коллизии могут возникнуть; когда два активных источника передают данные одновременно);
  • Примеры: Innovision Topaz, Broadcom BCM20203.

Тип 2:

  • Аналогично типу 1 основан на NXP/PhilipsMifareUltralight метках (ГОСТ Р ИСО/МЭК 14443A);
  • Может быть как только для чтения, так и для чтения/записи;
  • Содержит от 96 байт до 2 кбайт памяти;
  • Скорость взаимодействия 106 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: NXP Mifare Ultralight.

Тип 3:

  • Основан на метках SonyFeliCa (ГОСТ Р ИСО/МЭК 18092 и JIS-X-6319-4) без поддержки шифрования и аутентификации, которая предоставлена спецификацией FeliCa;
  • Может быть либо только для чтения, либо для чтения/записи;
  • Скорость взаимодействия 212 или 424 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: Sony FeliCa.

Тип 4:

  • Аналогично типу 1, тип 4 основан на ГОСТ Р ИСО/МЭК 14443A;
  • Может быть либо только для чтения, либо для чтения/записи;
  • 2, 4 или 8 кбайт памяти;
  • Скорость взаимодействия 106, 212 или 424 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: NXP DESFire, SmartMX-JCOP.

Пятый тип является собственностью NXPSemiconductors и, вероятно, самым распространённым на сегодняшний день MifareClassictag (ГОСТ Р ИСО/МЭК 14443A):

  • Память: 192, 768 или 3584 байта;
  • Скорость взаимодействия 106 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: NXP Mifare Classic 1K, Mifare Classic 4K, Mifare Classic Mini.

Как настроить NFC-профиль

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

Активация NFC. Если на панели уведомлений вашего смартфона отсутствует иконка активного NFC-модуля, то вы можете включить его с помощью пунктов меню «На­стройки — Беспроводные сети — Включить NFC» или воспользуйтесь специальным виджетом. Затем установите бесплатное приложение Trigger из магазина Play Market.

Режим работы. В открывшемся окне необходимо нажать на значок « ». Перейдите в меню «Настроить задание — — NFC» для создания заданий. Отмечу, что в приложении Trigger пункты, выделенные желтым цветом, будут доступны только после покупки PRO-версии утилиты стоимостью ≈100 рублей. Для дальнейшего использования функций NFC в них нет особой необходимости. Жмем «Далее» для перехода в следующий пункт меню.

Создание задачи. В пункте меню «Настроить задание» нажмите « » и в списке заданий активируйте необходимые задачи. Для профиля «На работе» выберите «Беспроводные и локальные сети — Wi-Fi Вкл/выкл», «Беспроводные и локальные сети — Вкл/выкл мобильные данные», а также «Звуки и громкость — Звуковой профиль».

Для подтверждения нажмите «Далее» и выберите в меню «Включить» или «Выключить» данные функции (пункты меню будут отображаться с левой стороны каждой строки). Затем необходимо включить Wi-Fi, выключить мобильные данные, а в строке «Звуковой профиль» выбрать пункт «Вибрация» и нажать кнопку «Добавить в задание».

После этого дайте имя данному заданию — например, «На работе» — и нажмите «Далее». В пункте меню «Настроить переключатель» вы можете настроить последовательность задач, которую приложение Trigger будет поочередно выполнять после подключения смартфона к NFC-метке. Для завершения работы в профиле «На работе» снова выберите те же функции, только в этот раз выключите Wi-Fi, включите мобильные данные и деактиви­руйте «Звуковой профиль», либо задайте настройки по своему усмотрению. Нажмите «Добавить в задание» и задайте имя, например, «Домой». Теперь осталось нажать кнопку «Готово».

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

Защита от записи. После всех вышеупомянутых действий вы можете открыть меню настройки, которое находится в верхней части экрана, чтобы активировать защиту от другой записи на NFC-метке, но в этом случае информацию на стикере невозможно будет перезаписать. Проблемы с записью информации на NFC-метку могут также возникнуть и при условии, если приложение Trigger должно включать профиль, который уже заранее был запрограммирован на стикере. В этом случае вам понадобится Tool Tag Reuse Plugin — бесплатное приложение из Play Market, которое не нуждается в дополнительной настройке.

Управление временем работы. Если с помощью профиля «На работе» вы хотите контролировать время вашей работы, в этом поможет бесплатное приложение Time recording (учет времени) из Play Market. Настроек в нем не требуется: с помощью кнопок «Проверить сейчас» («Check it now») и «Выключить проверку» («Check out now») можно вручную ввести данные, а с помощью «Изменить задание» («Switch task») переключаться с одного задания на другое, например, «Мои задания — [Название вашего задания]».

В пункте меню «Настроить задание» выберите « — Приложения и ярлыки — Открыть приложение» и подтвердите настройки, нажав «Далее». В появившемся окне меню среди приложений выберите пункт «Учет времени» (Time recording — Timesheet), а в следующем меню выберите «соm.dynamicg.timerecording.PublicServices$Checkln».

Алгоритм работы NFC

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

У NFC устройств есть два режима взаимодействия. Если инициатор излучает радиочастотные волны, а цель за счёт инициатора получает питание, то такой режим взаимодействия называют пассивным. При активном режиме у инициатора и цели свои собственные источники питания, и они независимы друг от друга. Данные режимы совпадают с режимами RFID.

Nfc tag

NFC устройства также имеют три способа работы. Они могут работать в режиме чтения информации с цели или записи на неё. Они могут эмулировать карты, ведя себя как RFID-метки, когда они в поле другого NFC или RFID устройства. Или они могут работать в режиме peer-to-peer (P2P), в котором они обмениваются данными сразу в обоих направлениях.

Первым главным отличием NFC от RFID является способ взаимодействия peer-to-peer, который реализован с помощью ГОСТ Р ИСО/МЭК 18092. Обмен данными P2P реализуется двумя протоколами — протоколом подуровня управления логической связью (LLCP — logical link control protocol) и простым протоколом обмена данными NDEF (SNEP — simple NDEF exchange format).

Установка и настройка PIN кода

Благодаря NFC-метке вы сможете устанавливать PIN-код на ваш смартфон с помощью приложения Tasker.

Установка приложений Tasker и Secure Settings. Чтобы управлять включением/выключением запроса PIN-кода на смартфоне необходимо дополнительно установить программы Tasker и плагин для него Secure Settings. Приложение имеет кучу полезных возможностей: от уведомления о полном заряде аккумулятора до выключения звука при перевороте устройства.

Обе утилиты вы сможете найти на Play Market воспользовавшись поиском, либо загрузите приложение по ссылкам выше в формате *.apk на свой смартфон и установите ее с помощью проводника. Рекомендую устанавливать Tasker до программы Trigger для избежания конфликтов, так как Trigger не будет иметь доступа к задачам Tasker.

Создание и настройка задач. Запустите Tasker и перейдите в меню настроек. В общих параметрах поставьте галочку напротив «Разрешить внешний доступ», чтобы Trigger имел доступ к задачам программы Tasker. С помощью кнопки возврата вернитесь в главное меню, перейдите на вкладку «Задачи» («Task») и нажмите « », чтобы создать задачу.

Nfc tag

Переключение PIN-кода. В программном меню «Редактирование действий» («Action Edit»), которое находится справа вверху, нажмите на значок карандаша возле строки «Конфигурация», чтобы установить функцию «Secure Settings». В меню «Все действия» («АН Actions») выберите «Блокировка клавиатуры» («Keyguard») и кликните по пункту «Переключатель» («Toggle»).

Сохраните настройки, кликнув по символу дискеты, и вы снова попадете в программу Tasker. Нажмите кнопку возврата, чтобы вернуться в главное меню приложения. Важно правильно выйти из меню установки, иначе утилита не активирует задачу.Интеграция задачи NFC в Trigger. Откройте программу Trigger. Если вы уже создали профиль, войдите в него с помощью пунктов меню «Мои задания — [Имя профиля]», в противном случае просто создайте новое задание, нажав на кнопку« ».

В меню «Настроить задания» включите функцию «Tasker», нажав « — Tasker — Задачи Tasker — Далее». В появившемся окне «Настройка приложений» нажмите на значок увеличительного стекла, выберите «Задачи» и кликните «Добавить в задачи». В таком же порядке в меню «Настроить переключатель» снова добавьте задачи Tasker, чтобы они были корректно установлены в программе Trigger и она могла их выполнять. Теперь вам осталось только записать информацию на стикер, и вы сможете без особых трудностей включать и выключать PIN-код с помощью NFC-метки.

Проблемы с Galaxy Note 3. Смартфоны Google, НТС, LG и Sony без проблем переключают PIN-код, но возникают трудности с устройством Galaxy Note 3. В случае с этим гаджетом мы рекомендую сделать следующее: создайте не одну, а две задачи Tasker. Первую «Вкл PIN-код», а вторую — «Выкл PIN-код». Тогда в Secure Settings Plug-in  выберите пункт «Пароль/PIN» («Password/PIN») в конце списка.

Для задачи «Выкл PIN-код» оставьте функцию «Выключить», а для второй задачи «Вкл PIN-код» активируйте функцию «Включить» и создайте пароль. Поставьте галочку напротив строки «Разрешить редактирование администратором». Приложение выдаст запрос на расширенные права для Secure Settings — нажмите «Активировать» (стоит отметить, что данные настройки не затрагивают основных прав).

Nfc tag

Если вы захотите удалить Secure Settings, прежде всего необходимо будет отменить права администратора в программе, выбрав пункты меню «Безопасность — Администратор — Secure Settings». Таким образом можно сделать нужные установки для активации и деактивации запроса PIN-кода для телефонов Samsung, используя технологию NFC.

Архитектура NFC

В архитектуре NFC есть несколько уровней. Самый низкий из них — физический, который реализован ЦПУ и другим аппаратным комплексом, через который происходит взаимодействие. В середине находятся данные о пакетах и транспортный уровень, затем формат данных уровней, и в конце программное обеспечение.

На физическом уровне NFC работает по алгоритму, описанному в ГОСТ для RFID (ГОСТ Р ИСО/МЭК 14443-2-2014), где говорится о маломощных радиосигналах частотой 13,56 МГц. Затем идёт уровень, который описывает разбивку потока данных на фреймы (ГОСТ Р ИСО/МЭК 14443-3-2014). Любые радиоконтроллеры, которые используются в телефоне, планшете или подсоединяются к компьютеру или микроконтроллеру, являются отдельными аппаратными компонентами.

Они взаимодействуют с главным процессором посредством одного или нескольких стандартных последовательных протоколов между устройствами: универсальный асинхронный приёмопередатчик (UART), последовательный периферийный интерфейс (SPI), последовательная шина данных для связи интегральных схем (I2C) или универсальная последовательная шина (USB).

Над этим находится несколько протоколов команд RFID, базирующихся на двух спецификациях. NFC чтение и запись меток базируется на оригинальном RFID ГОСТ Р ИСО/МЭК 14443A. Протоколы Philips/NXP Semiconductors Mifare Classic и Mifare Ultralight и NXP DESFire совместимы с ГОСТ Р ИСО/МЭК 14443A. Обмен данными P2P NFC базируется на ГОСТ Р ИСО/МЭК 18092.

Nfc tag

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

Создаём распространённые NDEF-записи

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

Есть несколько распространённых типов NDEF-записей:

  1. Обычные текстовые записи. В них можно отправить любую строку, они не содержат инструкций для цели, но содержат метаданные об языке текста и кодировке.
  2. URI. Такие записи содержат данные об интернет-ссылках. Цель, получившая такую запись, откроет её в том приложении, которое сможет её отобразить. Например, веб-браузере.
  3. Умная запись. Содержит не только веб-ссылки, но и текстовое описание к ним, чтобы было понятно, что находится по этой ссылке. В зависимости от данных записи телефон может открыть информацию в нужном приложении, будь то SMS или e-mail, либо сменить настройки телефона (громкость звука, яркость экрана и т.д.).
  4. Подпись. Она позволяет доказать, что информация, которая была передана или передаётся, достоверна.

Можно использовать несколько видов записей в одном NDEF-сообщении.

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

Второе главное различие между NFC и RFID — формат обмена данными NFC (NDEF — NFC data exchange format). NDEF определяет формат данных в сообщениях, которые в свою очередь состоят из NDEF записей. Есть несколько видов записей, о которых будет рассказано более подробно чуть ниже. NDEF делает возможным с помощью программного кода управлять процессом чтения и записи NFC-меток, обмена данными при помощи peer-to-peer и эмулирования карт.

NDEF содержит информацию о байтовом представлении сообщений, которые могут содержать несколько записей. У каждой записи есть заголовок, в котором находятся метаданные (тип, длина и т.д.), и информацию для отправки. Если вернуться к аналогии с параграфом, то параграф формируется из предложений, относящихся к одной теме, так и в NDEF-сообщениях — хорошо, когда все записи относятся к одной тематике.

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

Nfc tag

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

Место на информацию в NDEF-записи ограниченно по размерам 2^32-1 байтами, однако можно делать цепочки записей внутри сообщения, чтобы переслать информацию большего размера. В теории нет ограничений на NDEF-сообщения, но на практике размер сообщения ограничивается возможностями устройств или меток, участвующих в обмене информацией.

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

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

Для того чтобы передать большой объем информации, устройства придётся держать друг рядом с другом длительное время, это может быть неудобным. Если нужно длительное взаимодействие между устройствами, то можно воспользоваться NFC для быстрого обмена данными о возможностях устройств и последующего включения одного из более подходящих способов передачи данных (Bluetooth, Wi-Fi и т.д.).

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

  1. ACTION_NDEF_DISCOVERED: Этот intent используется для запуска аctivity, если в метке содержится NDEF-сообщение. Он имеет самый высокий приоритет, и система будет запускать его в первую очередь.
  2. ACTION_TECH_DISCOVERED: Если никаких activity для intent ACTION_NDEF_DISCOVERED не зарегистрировано, то система распознавания попробует запустить приложение с этим intent. Также этот intent будет сразу запущен, если найденное NDEF-сообщение не подходит под MIME-тип или URI, или метка совсем не содержит сообщения.
  3. ACTION_TAG_DISCOVERED: Этот intent будет запущен, если два предыдущих intent не сработали.

Nfc tag

В общем случае система распознавания работает, как представлено на рисунке ниже.

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

Если activity запускается из-за NFC intent, то можно получить информацию с отсканированной NFC-метки из этого intent. Intent может содержать следующие дополнительные поля (зависит от типа отсканированной метки):

  • EXTRA_TAG (обязательное): объект Tag, описывающий отсканированную метку.
  • EXTRA_NDEF_MESSAGES (опциональное): Массив NDEF-сообщений, просчитанный с метки. Это дополнительное поле присуще только intent ACTION_NDEF_DISCOVERED.
  • EXTRA_ID (опциональное): Низкоуровневый идентификатор метки.

Ниже представлен пример, проверяющий intent ACTION_NDEF_DISCOVERED и получающий NDEF-сообщения из дополнительного поля.

Kotlin

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    ...
    if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) {
        intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)?.also { rawMessages -{amp}gt;
            val messages: List = rawMessages.map { it as NdefMessage }
            // Обработка массива сообщений.
            ...
        }
    }
}
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    ...
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMessages =
            intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMessages != null) {
            NdefMessage[] messages = new NdefMessage[rawMessages.length];
            for (int i = 0; i {amp}lt; rawMessages.length; i  ) {
                messages[i] = (NdefMessage) rawMessages[i];
            }
            // Обработка массива сообщений.
            ...
        }
    }
}

Kotlin

val tag: Tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

Существует несколько методов для создания NDEF-записи: createUri(), createExternal() и createMime(). Лучше использовать один из них во избежание ошибок, которые могут возникнуть при создании записи вручную. Все примеры, представленные ниже, следует отправлять первым сообщением при записи метки, либо сопряжением с другим устройством.

Kotlin

Использование NFC

Есть множество возможностей использования NFC:

  • Режим эмуляции карты позволяет использовать данную технологию для бесконтактных платежей, например Google Wallet, или для оплаты или получения билетов в общественном транспорте.
  • Есть несколько мобильных приложений, которые позволяют сохранить настройки для мобильного устройства на метках и в дальнейшем использовать их для быстрого изменения каких-либо настроек мобильного устройства (переход в режим виброзвонка, включения или выключения Wi-Fi на мобильном устройстве).
  • На рынке постепенно появляются устройства, поддерживающие NFC, — стереосистемы, телевизоры, которые позволяют создавать пару с телефоном или планшетом для удалённого управления.
  • NFC используется в системе здравоохранения для хранения идентификатора пациента и личных записей.
  • В сфере управления материально-техническими ресурсами можно использовать NDEF записи для хранения информации о месте отправления товаров, об их прохождении различных промежуточных пунктов и тому подобном.

Заключение

Технология NFC добавляет многообещающую функциональность к технологии RFID. Наиболее значимое нововведение — формат обмена данными NFC (NDEF), который предоставляет возможность форматировать обычные данные в одну из четырёх технологий меток NFC. NDEF может быть использован как для обмена данными между устройством и меткой, так и для обмена между устройствами. Это делает NFC пригодным не только как способ идентификации, но и как средство обмена короткими блоками данных.

Более подробно об NFC или NDEF можно почитать в книге Tom Igoe, Don Coleman, and Brian Jepson «Beginning NFC. Near Field Communication with Arduino, Android, and PhoneGap».

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

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