NFC смартфона на Android в домашнем хозяйстве
Технология NFC = Near Field Communication (коммуникация ближнего поля, ближняя бесконтактная связь) для того и предназначена, т. е. для организации передачи данных между электронными устройствами на небольшом расстоянии (1-10 см) с помощью электромагнитного поля без необходимого контакта этих устройств.
Если есть желание узнать подробнее о технологии, то начать можно тут:
https://ru.wikipedia.org/wiki/Near_Field_Communication
В смартфонах и планшетах применяется в виде встроенного в них считывателя (хотя он же и «записыватель»), который используется для связи через эту технологию с другими смартфонами или считывателями или с пассивными устройствами без батарейного питания типа карточек, меток-наклеек, брелков, содержащих NFC-схему.
Важным элементом NFC-считывателя смартфона является приемопередающая петлевая антенна круглой или прямоугольной формы, встроенная «где-то» под задней панелью. Знание где находится эта антенна важно для обеспечения надежной связи с противоположным устройством, т. к. максимальный уровень и надежность сигнала при связи возникает при совмещении центров антенн смартфона и другого устройства, брелка, метки, карточки.
Некоторые производители явно указывают расположение антенны на корпусе, некоторые указывают его в инструкции, но часто это необходимо определять экспериментально пробными чтениями, что в общем не сложно.
В старые добрые времена, когда аккумуляторы еще были вынимаемыми, например во многих моделях Самсунга NFC-антенна конструктивно совмещалась и располагалась на внешней стороне аккумулятора, соответственно ее центр совпадал с центром аккумулятора.
NFC смартфона возможно использоваться для чтения и записи разных «NFC-меток». Форма меток может быть разная — брелки, наклейки, карточки. Все эти метки конструктивно состоят из петлевой антенны и маленького электронного чипа. Типы чипов бывают разные, в зависимости от назначения, и их производители бывают разные. Производителей чипов относительно немного, а производством готовых меток, заключающемся в присоединении чипа к пассивной антенне и помещении в корпус или наклейку занимаются многие производители.
Самые сложные чипы используются в банковских карточках, т. к. там используются специальные схемы с шифрованием, и кстати, при использовании смартфона для беспроводной оплаты в нем также используются специальные микросхемы, отвечающие за безопасность протокола обмена, к которым просто так «не подступиться».
Другим современным массовым применением беспроводных меток стали домофоны и транспортные карты для проезда.
В старых и еще пока очень распространенных домофонах используются брелки так называемого радиодиапазона LF (Low Frequency, 125 кГц), они совсем не совместимы с NFC, для которого используется HF (High Frequency, 13,56 МГц).
Важной особенностью любой NFC-метки является наличие у нее уникального цифрового идентификатора, отличающего одну метку от всех других. Старые LF/HF системы контроля доступа устроены на принципе считывания этого уникального идентификатора с последующим принятием решения — для «своих» идентификаторов, записанных в базу, открываем дверь/проход, а для всех других — нет.
При производстве чипов для меток производители обычно генерируют уникальный код-идентификатор каждого чипа и блокируют его от перезаписи, что исключает простое копирование или подмену метки. Но увы, в настоящее время хотя и более сложно, но можно приобрести метки с возможностью записи идентификатора и сделать полную копию исходной.
Чипы современных HF/NFC-меток уже имеют более сложное устройство, куда кроме уникального идентификатора добавлена дополнительная память, причем доступ к заданным участкам памяти может быть защищен криптографическими ключами и паролями. Также есть возможность блокировать заданные участки памяти от изменения — паролем или совсем навсегда. Соответственно, системы с использованием таких меток основываются на большей информации, чем просто идентификатор метки и простое копирование таких меток без знания криптографического ключа невозможно.
Транспортные системы и карточки типа московской Тройки или питерский Подорожник используют как раз такие карточки. Причем, в них есть возможность свободно считать информацию о сроке действия/сумме остатка, но вот изменить-накрутить или сделать полную копию карточки без знания ключа защиты нельзя. Кассир в метро его знает, но вам не скажет (шутка — кассир конечно не знает, знать могут существенно более высокопоставленные сотрудники, но заинтересовать их вряд ли удастся).
И вот кстати, одним из полезных применений NFC в смартфоне кроме оплаты является считать-узнать остаток дней/денег на транспортной карте, а в Москве можно и добавить денег на Тройку с помощью своего смартфона с NFC, для этого надо установить и использовать одно из официально-уполномоченных для выполнения таких операций приложений, смотрите в конце этой страницы:
https://www.mosgortrans.ru/passenger/fares/ticket-offices/
А вот в нашем Питере таких чудес с пополнением транспортной карты со своего смартфона пока не ожидается, есть только не очень зачем нужный способ «отложенного пополнения», для выполнения которого все равно надо посещать автомат в метро. Но посмотреть остаток счета или дней можно без проблем, есть несколько приложений, я по результату проб пользуюсь «Rides»:
https://play.google.com/store/apps/details?id=org.suchacharm...
Считывание транспортных карт требует поддержки встроенным NFC смартфона определенного типа чипов (NXP Mifare Classic/Plus). Смартфоны с NFC последних лет обычно уже поддерживают, но более старые не все.
Еще замечу, что вроде бы только в Москве бесконтактные карточки также используются для однократных и ограниченного числа поездок на метро и другом транспорте («Единый»). Эти карточки более простого «картонного» исполнения на упрощенном чипе «NXP Mifare Ultralight» или его отечественном аналоге от Микрона. И данные этих карточек также можно считать NFC смартфона.
Теперь собственно к более «бытовому» использованию NFC.
Как уже упоминалось, все NFC-метки и карточки имеют встроенный уникальный идентификатор. И как минимум этот идентификатор может быть считан смартфоном. Это относится ко всем меткам — банковским карточкам, транспортным картам, брелкам для домофона (если они NFC-совместимые). И с помощью специального приложения индивидуально для этого каждого считанного идентификатора возможно «привязать» выполнение на смартфоне какой-то операции, типа включения/отключения Wi-Fi и т. п., пример такого приложения, «NFC ReTag»:
https://play.google.com/store/apps/details?id=com.widgapp.NF...
При таком способе использования в метках не изменяется никакая информация, используется только факт считывания идентификатора. И вот кстати, будете в Москве — не выбрасывайте, а берите с собой использованные одноразовые транспортные карточки-билеты, и можете потом их использовать для подобной «автоматизации», размещая в нужных местах и настроив для них нужную операцию.
Неудобством способа является необходимость разблокировать телефон для выполнения операции, иначе NFC не работает, даже если включен в настройках, но это относится вообще ко всем способам использования, на заблокированном телефоне NFC не работает.
Больше вариантов использования NFC возможно с метками, в которых есть доступная для чтения и записи дополнительная память. Такие метки надо приобретать отдельно «чистыми», какие-то и чьи-то метки типа транспортных карт и NFC-совместимых карт для прохода хотя и содержат дополнительную память, для стороннего использования она не доступна, защищена криптографией или паролем.
Хотя существует несколько типов NFC-чипов, стандарт NFC предоставляет общий формат данных для их помещения в метке (чипе), называется он NDEF (= NFC Data Exchange Format).
В соответствии с этим форматом существует несколько пред-определенных типов информации (записей), сохраняемой в чипе-метке, включая:
«Текст» - записать просто какой-то текст, с возможностью его увидеть при чтении метки.
«Веб-сайт» - при чтении метки будет открываться соответствующий сайт в браузере.
«E-mail» - записывается содержание электронного письма, при чтении открывается приложение-почтовый клиент с заполненным письмом (но сразу оно отправляться не должно, только вашим решением).
«Контакт (Визитная карточка)» - сохраняются контактные данные формата V-Card. При чтении такой метки открывается приложение контактов со считанной информацией (имя, телефон и т.д.) с возможностью добавить новый контакт.
«Телефонный номер» - при чтении «набирается» сохраненный номер (но вызывается только вашим решением, не автоматически).
«SMS» - при чтении открывается в соответствующем приложении с заполненными полями, но опять таки сразу не отправляется, только по нажатию соответствующей кнопки.
«Геолокация» - сохраняется и потом открывается место на карте в соответствующем приложении.
«Конфигурация Wi-Fi или Bluetooth» - удобно «делиться» соответствующими настройками через считывание метки.
Приложений для Андроид, позволяющих записать в метку и прочитать что-то из перечисленного довольно много.
Например, популярное приложение «NFC Tools»:
https://play.google.com/store/apps/details?id=com.wakdev.wdn...
Ну, а если есть желание глубже «покапаться» в NFC, или просто всегда иметь под рукой тестовый инструмент для любых меток, то рекомендую официальные приложения от ведущего разработчика большинства чипов для меток «NXP Semiconductor», первое только читает метки, а вторым можно записывать-изменять (но извиняйте, русского языка в них нет, нужен «технический английский»):
https://play.google.com/store/apps/details?id=com.nxp.taginf...
https://play.google.com/store/apps/details?id=com.nxp.nfc.ta...
Для использования NFC меток важно знать, сколько в них памяти, которую можно использовать для записи. Во многих типах чипов она весьма ограничена.
Для примера, размер памяти для записи (в байтах) в пожалуй самых доступных и распространенных современных чипах-метках производства NXP:
NTAG 213 — 144
NTAG 215 — 504
NTAG 216 — 888
Это полная свободная память, для NDEF-записи несколько десятков байт уходит на служебные поля (зависит от типа записи), так что для самой информации останется несколько меньше.
Вроде памяти и совсем немного, по сравнению с другими носителями, но для многих случаев, включая упомянутые варианты использования, вполне достаточно.
Где взять «чистые» метки?
Наверное самый недорогой вариант можно найти традиционно на Алиэкспресс, искать, например, по типу чипа «NTAG216»:
https://aliexpress.ru/af/ntag216.html
Вопрос надежности и качества продукции поставщиков с Али естественно открытый.
Вполне можно найти метки и «в наших краях». Я покупал несколько десятков меток-наклеек для домашнего хозяйства в довольно известном «радио»-магазине «Чип-Дип» - не считайте рекламой, свет клином не сошелся, просто было удобнее, приехал и забрал:
https://www.chipdip.ru/product/rfid-ntag-216
У них точно дороже, но и другие места есть, Яндекс в помощь:
https://yandex.ru/search/?text=ntag216
Поскольку у всех моих «домашних» постепенно образовались телефоны с NFC, пришла мысль попробовать как-то его использовать.
Например, сколько с «Плюшкиным» не борись, всяких вещей все равно копится по коробкам-ящикам-полкам, а когда надо, то и не вспомнишь где лежит.
Да, конечно, есть немало Андроид приложений для упорядочения этого дела, ведение разных «баз данных» хранимых вещей. И можно этими базами делиться между собой, или положить в «облако». И можно печатать-наклеивать на коробки штрих-код, читать его камерой смартфона и по ним сразу переходить в базе к нужной коробке. Но мне как то это все лениво было.
А вот почему бы не наклеить на коробку NFC-метку, записать в нее список вещей или примечание в виде небольшого текста, и все у кого NFC смогут прочитать-посмотреть-изменить, если надо, без всяких внешних баз данных. Использовать для этого вполне можно и «NFC Tools», и «NFC TagWriter, и другие приложения, но в них режим простой работы с текстом «закопан» во всякие выборы чего делать и так далее.
Решил заодно размяться и сделал простое Android-приложение, которое ориентировано только на работу с текстом, сохраненным в метке, но зато это делать удобно и быстро. Также показывает сразу при наборе текста сколько он занимает байт, а если метка определенная, то и сколько в ней всего байт памяти. И также сразу показывает уникальный идентификатор меток, раз уж все равно считывается.
Можете тоже попробовать это приложение «NFC Pack List» для подобных целей:
https://play.google.com/store/apps/details?id=dev.anbomispb....
Рекламу не показывает, денег не просит, никакие данные не собирает.
Максимальный размер текста для записи в метку на чипе NTAG216 кроме служебной информации в данном случае до 837 байт. Текст в английской кодировке занимает один байт на символ, на русском и большинстве других национальных два байта на символ, но могут 3 и более байт занимать, типа символов-слогов эфиопского языка или специальных знаков. В любом случае текущий занимаемый размер автоматически подсчитывается и показывается при вводе текста со смешанными кодировками.
После запуска приложения вводите текст и можно его записать в метку. Вставлять текст в поле редактирования можно и «копи-пастом», и с распознавания речи, если настроен такой ввод. Естественно, в смартфоне должен быть NFC и он должен быть включен. Если не включен — предложит включить по ссылке в настройки.
Для записи в метку нажать значок записи в тулбаре и поднести к месту NFC-антенны метку, которая естественно должна иметь достаточный объем памяти и не должна быть защищена от записи. Описание есть в программе, из меню. Там же можно выбрать время показа уведомлений, три или полторы секунды, если раздражают.
После записи метки этим приложением, если ее потом поднести к разблокированному смартфону, приложение запустится автоматически и покажет сохраненный текст. Считывание метки в самой программе естественно тоже показывает ее текст.
А что будет, если для записи поднести метку несовместимого типа, с недостаточной памятью для данного объема текста или защищенную от записи? — Ничего не будет, с соответствующим сообщением о неудачной операции.
Если надо записать один и тот же текст в несколько меток, просто записывать по очереди. Чтобы сделать копию текста в другую метку — сначала поднести-считать, потом записать в другую.
Есть ли в приложении возможность шифрования записи или установки пароля защиты для чтения или записи? — Пока нет, не очень понятно, насколько это востребовано для обычного использования. Лишние усложнения могут только мешать. Но в дальнейшем такие функции возможно добавлю.
В процессе практического использования NFC таким образом выяснились некоторые моменты:
При записи или чтении меток с достаточно большой памятью, типа NTAG216, при заполнении памяти метки в 400 и более байт для надежного выполнения операции метку надо достаточно быстро, четко и надежно прикладывать-удерживать к месту считывающей антенны на смартфоне в течении 2-3 секунд. Иначе считывание или запись может не состояться (с выводом соответствующего сообщения). Когда объем текста небольшой, это не так критично. При этом, если метка «недозаписалась», при последующем ее считывании она покажет не какой-то частично записанный текст, а пустой, т. к. окончательно NDEF-запись формируется после записи всего объема. В таком случае надо записать метку еще раз (иконка в тулбаре), при этом метку надо убрать от смартфона и поднести снова. С неудачным считыванием (если действительно есть что считывать) аналогично — записанный текст либо будет показан полностью, либо «пусто», при этом уникальный идентификатор метки может быть показан, т. к. он считывается первым отдельно. Для повторной попытки считывания убрать-поднести еще раз.
На моем Blackview проблем с попаданием метками на антенну не было, все довольно четко, и даже в упор метки подносить не надо, считываются уже с 1-2 см, а вот на довольно свеженьком Samsung M11 NFC-антенна оказалась ощутимо менее чувствительной, и надо было сначала четко понять, где ее центр, иначе метки считывались-писались плохо. На этой модели после серии «прикладываний» оказалось, что петля антенны находится вокруг заднего датчика отпечатка пальца, т. е. подносить метки надо к центру этого датчика.
Чувствительность считывания также зависит и от размера антенны самой метки. Мои метки из «Чип-Дипа» диаметром около 20 мм, и они ощутимо менее чувствительны к сигналу, чем, например, транспортные метки-карточки, где антенна обычно размером близким к ширине карточки, около 50 мм. Такие карточки мой Blackview читает с 4-5 сантиметров. С другой стороны, метку размером с карточку уже не везде «пристроишь».
При считывании и записи метки, как вы должны заметить, происходит из телефона соответствующий звук. Громкость этого звука задается громкостью уведомлений, а вот простого решения заменить мелодию или отдельно включить-отключить этот звук нет и зависит от конкретной модели телефона.
На какой материал можно клеить метки? — Обычные NFC-метки НЕЛЬЗЯ клеить на металл или фольгу, читаться не будут. Картон, пластик, дерево, ДСП, стекло — без проблем. А вот для металла нужны специальные метки, и они ощутимо дороже, т. к. конструктивно сложнее. Но если метку не для металла наклеить не на сам металлический слой, а через «диэлектрическую» прокладку толщиной от 4 мм (из картона, пластика и т. п.), то она пусть и хуже, но уже вполне будет работать. Собственно, и метки на металл более «толстые».
Насколько можно изгибать гибкую метку, клеить ее на неровную поверхность? — Если изгибать не сильно, то можно. Если сложить в два раза, да еще прогладить изгиб, то почти наверняка читаться не будет. Но если потом ее расправить-выравнять, и не будет разрушен проводящий слой антенны, то скорее всего продолжит нормально работать.
В общем, такое использование вполне работает. Метки наклеены на несколько десятков коробок, контейнеров, и просто полок. 837 байт вполне достаточно для записи довольно больших списков содержимого.
Да, а как можно «сломать» метку? — Разрушить проводящий слой хотя бы одного витка антенны (но если потом восстановить, то вполне может опять заработать). Более надежно можно сломать метку разрушением места, где в метке закреплен ее чип (обычно очень маленький, размером менее миллиметра). Если его выковырять, то в метке работать уже собственно будет нечему. Говорят, есть еще такой надежный способ «убить» метки — поместить в микроволновку и включить даже на несколько секунд, чип «сгорит». Антенна метки тоже может, если мощности поддать.
Android
867 постов7.6K подписчиков
Правила сообщества
Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.
В сообществе запрещены:
* заведомо деструктивные рекомендации
* бессодержательная переписка, особенно с переходом на личности собеседников
* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)
* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)
Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".
Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00