Походы Транспорт Экономные печи

Nfc программы. Чтение и запись NFC меток с помощью Arduino

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

Преимущество технологии NFC в том, что она может быть заключена как в активном чипе, так и в пассивной метке. Для работы последней не требуется энергия, о регулярной подзарядке можно забыть. При этом NFC-метки имеют минимальные размеры, что позволяет им находиться даже в каком-нибудь брелке. По сути каждая такая метка представляет собой маленькую антенну толщиной с бумажный лист. Её диаметр сравним с 5-рублевой монетой. Обмен данными занимает 0,1 с. Для этого к метке нужно приложить смартфон так, чтобы воздушный промежуток не превышал 5 см. Точнее говоря, расстояние измеряется между чипом и меткой - первый обычно находится где-то в области аккумулятора устройства.

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


Также NFC-метки продаются в виде отдельных аксессуаров. Они могут класться на стол, либо подвешиваться к связке ключей. Такие метки используются для управления «умным домом». А ещё с их помощью можно заставить смартфон автоматически переходить в определенный режим работы. Например, метка может находиться на торпеде автомобиля. В таком случае прикосновение к ней смартфона включит Bluetooth, после чего водитель будет общаться со звонящими посредством беспроводной гарнитуры. И не обязательно должно быть запрограммировано лишь одно действие. Помимо Bluetooth, может включиться любимая радиостанция, а также запуститься GPS-навигатор. Словом, всё зависит от фантазии пользователя!

Где купить NFC-метки?

Если вас интересуют метки в виде наклеек, которые использовать проще всего, то для этого придется посетить . Именно здесь их выбор больше всего. Например, вы можете приобрести набор из десяти разных наклеек Ntag213 - стоимость такого комплекта не превышает 220 рублей.

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

Если вам хватит шести меток, то предлагаем ознакомиться с несколько усечённым набором от AnyNFC . Однако его покупка обойдется даже дороже - за комплект из шести стикеров стоит 312 рублей. Но зато эти наклейки выполнены на более плотной бумаге, повредить их заметно сложнее.


Рассмотренные выше варианты имеют специфические рисунки. Если же вы вознамерились запрограммировать какие-то необычные команды, то вам нужны стикеры без всяких домиков, самолетов и прочих изображений. Например, 6 разноцветных наклеек , продающиеся примерно за 83 рубля (без учета доставки) располагают лишь логотипом беспроводной технологии NFC. При использовании таких стикеров вы будете ориентироваться на их цвет и местоположение.

Существует и ещё более упрощенный вариант. Вы можете купить 10 меток без рисунков . Это будут упомянутые в самом начале статьи тоненькие антенны. Далее вы можете своими руками изготовить какое-либо изображение, нанеся его на антенну, превратив её в полноценную NFC-метку. Проще всего для этой цели использовать принтер и самоклеящуюся бумагу.


Но не всегда требуется метка в виде стикера. В некоторых случаях она должна быть выполнена в виде аксессуара, который крепился бы к связке с ключами. Тогда необходима покупка набора из брелков NTAG215 . Антенны в них заключены внутрь пластикового корпуса. К ключам брелок крепится при помощи металлического кольца. На корпус можно наклеить любое нужное вам изображение.

Как записать NFC-метку?

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

Записать то или иное действие, которое будет совершаться смартфоном после прикосновения к NFC-метке, помогает специальная программа. Подобные приложения легко находятся в Google Play. Мы рекомендуем установить на свой девайс NFC Tools и NFC Tasks . Их интерфейс выполнен на английском языке. Но для работы с этими программами вполне хватает даже базовых знаний языка. В крайнем случае, можно воспользоваться .


Работать, например, с NFC Tools очень просто. Достаточно перейти во вкладку «Tasks », после чего остается лишь выбрать задачу, которую будет выполнять смартфон при его поднесении к конкретной NFC-метке. И не забудьте затем прикоснуться к стикеру или брелку.

Аналогичным образом устроены практически все программы, служащие для связи с NFC-метками. Какие-то предлагают на выбор простые команды. Другие - более сложные и составные. Не забывайте, что не все они являются бесплатными. Однако и дорогими такие приложения не бывают.

Подведение итогов

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

Данные передаются между двумя NFC устройствами или устройством и NFC меткой, когда они попадают в зону взаимодействия друг с другом. Существует два типа NFC взаимодействия:

Пассивный - Активный

Пассивная NFC метка взаимодействует с активным NFC устройством, например, со смартфоном.

Активный - Активный

Активное NFC устройство, например, смартфон, взаимодействует с другим активным NFC устройством, например, бесконтактным терминалом оплаты.

Что такое NFC метка?

The term NFC tag is commonly used for a passive NFC tag. Examples of passive NFC tags are NFC inlays, NFC stickers, NFC wristbands and other converted NFC products. NFC tags are very similar to a USB stick, except that they don’t have to be plugged into a PC to transfer data. There is no battery inside of NFC tags. They all have an integrated circuit (IC) and antennae inside of them. Data is transferred via this antennae.

Какой NFC чип мне больше подходит?

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

Руководство по выбору

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

    Выбирайте наиболее быстродействующий чип. Пользователь ожидает, что взаимодействие с NFC меткой - это быстрое касание (<0.5 с). Однако некоторые чипы имеют более долгий цикл чтения.

    Выбирайте NFC метку с наибольшей площадью антенны. Чем больше площадь антенны, тем больше дистанция чтения.

    Выбирайте NFC чип, которые совместим с теми устройствами, которые будут его считывать. Некоторые NFC чипы совместимы не со всеми устройствами. Оптимальным будет выбор NFC чипа совместимого со стандартом NFC Forum.

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

    Выбирайте наиболее дешевый NFC чип!

Нужно ли мне специальное ПО для использования NFC?

В отличие от QR кодов, вам не нужно загружать специальное приложение для использования NFC. Все что необходимо - это включить NFC функцию на смартфоне. Обычно это можно сделать в настройках мобильного устройства. Если функция NFC включена, то чтение NFC метки будет происходит автоматически во время касания ее смартфоном. Таким образом, пользователю не нужно осуществлять дополнительных действий. Пользовательский интерфейс зависит от конкретного устройства, многие из них запрашивают разрешения у пользователя перед открытием данных с NFC метки.

Какой объем данных можно записать на NFC чип?

Объем данных, который можно записать на NFC чип зависит от его типа. Обычно это несколько сотен байт.

Какова дистанция чтения NFC метки?

Стандарт NFC предусматривает очень короткую дистанцию чтения, поэтому он и получил свое название. (Near Field Communication - «коммуникация ближнего поля», «ближняя бесконтактная связь»). Два NFC устройства и/или NFC метки должны быть на расстоянии около 1-2 см для обмена данными. Возможная дистанция считывания зависит от нескольких факторов, таких как размер NFC метки и тип NFC считывателя. Если необходима более длинная дистанция считывания, то вам следует использовать UHF или RFID технологии.

От чего зависит дистанция считывания NFC метки

    Размер и форма NFC метки – В общем случае, чем больше NFC метка, тем больше дальность считывания. Это связано с тем, что чем больше NFC метка, тем больше ее антенна.

    Окружающая среда – Такие факторы как наличие металлических поверхностей влияют на работу NFC метки.

    Исполнение NFC метки – Чем больше различных материалов между антенной NFC метки и считывателем, тем хуже читается NFC метка. Например, силиконовым браслет со встроенной NFC меткой имеет более короткую дистанцию считывания, чем NFC наклейка.

    Тип NFC считывателя – Обычно USB или Serial считыватели имеют более длинную дистанцию считывания, чем мобильные устройства с NFC модулем.

    Тип NFC чипа – Некоторые NFC чипы имеют отличную дистанцию считывания, несмотря на малый размер.

Можно ли перезаписывать информацию на NFC метке?

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

Что такое NFC устройство?

Термин NFC устройство часто применяется к активным NFC меткам. Примером активных NFC устройств являются смартфоны и планшеты с NFC модулями, NFC считыватели подключенные к ПК. Все эти устройства имеют NFC считыватель внутри себя и требуют питание для своей работы.

Можно ли зашифровать данные на NFC чипе?

NFC стандарт не имеет поддержки шифрования NDEF записей. Единственный способ реализации шифрования - это создание записи собственного типа MimeType. Эта запись должна содержать зашифрованные данные, а приложение считывающие их - иметь ключ для расшифровки. Все остальные приложения проигнорируют такую запись.

Можно ли перезаписать UID ?

Уникальный идентификатор (Unique Identifier - UID) NFC метки нельзя изменить. Этот идентификатор находится в защищенной области памяти NFC чипа. Он предназначен для идентификации NFC чипа.

Какой NFC чип может хранить контакты (VCARD)?

Широко используемый NFC чип NTAG203 имеет 144 доступной для записи памяти. Этого недостаточно для записи полных контактный данных. Чип позволяет записать лишь небольшое количество полей (Например, фамилию, имя и телефон). Если вам нужна большая емкость, то рекомендуется использовать чип NTAG216, который имеет возможность записи 888 байт. Он оптимален для записи контактный данных в формате VCARD. Записанный в этом формате контакт может быть импортирован в смартфон одним касанием NFC метки. Данная возможность используется для NFC визиток.

Что такое NFC Forum?

Организация NFC Forum была создана для продвижения NFC технологии и разработки спецификации NFC стандарта, обеспечивающего совместимость устройств и сервисов, использующих эту технологию. NFC Forum стандартизировал 4 типа NFC меток, работающих с NFC устройствами. Это является основой для совместимости между устройствами от разных производителей. NFC метка соответствует стандарту NFC Forum, если она совместима с одним из этих 4 типов (Type 1, Type 2, Type 3 или Type 4). NFC метки соответствующие стандарту NFC Forum имеют меньше проблем с совместимостью, чем метки не соответствующие стандарту.

Воспользуемся платой Arduino для чтения NFC меток и записи на них информации!

Что такое NFC?

NFC (near field communication, связь в ближнем поле) - это протоколы, которые используют электронные устройства для связи и передачи данных между собой. NFC устройства должны быть расположены очень близко друг к другу, как правило, в пределах 10 см, но этот диапазон может варьироваться в зависимости от устройства, которое передает данные, и размеров метки. NFC метки не требуют подвода никакого питания. Они используют магнитную индукцию между двумя маленькими петлевыми антеннами. В настоящее время метки переносят от 96 до 4096 байт информации.

Список комплектующих

  • плата расширения Adafruit PN532 RFID/NFC Shield (или аналог);
  • Arduino IDE;
  • перезаписываемые NFC метки.

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

Для проверки того, успешно ли мы записали данные на метки, мы можем использовать Arduino или телефон с NFC. Большинство смартфонов на Android могут читать NFC метки, я буду использовать для тестов Nexus 5. К сожалению, для пользователей iPhone, поддержка NFC началась с iPhone 6 и 6s, но они не поддерживают чтение NFC меток, поэтому можно воспользоваться платой Arduino для проверки того, что записано на вашей NFC метке. iPhone использует свои NFC возможности только для Apple Pay, следовательно вы не можете использовать их для чтения меток или чего-то другого.

Когда у нас будут все необходимые комплектующие, нам будет необходимо установить две библиотеки, которые делают возможным чтение и запись меток. Это библиотеки don/NDEF и Seeedstudio’s , мы будем в основном использовать первую из них. Библиотека Seeedstudio’s используется, если у вас есть плата расширения Seeedstudio NFC shield. Мы установим ее просто на всякий случай. Вам необходимо скачать и установить обе библиотеки, используя в Arduino IDE пункт «Добавить.zip библиотеку» (Add .zip Library) в меню «Скетч (Sketch) → Добавить библиотеку (Include Library)». Не забудьте установить обе библиотеки по отдельности и в каталог Arduino по умолчанию, иначе у вас будут ошибки компиляции.

Запустите IDE, у вас должен создасться файл нового скетча. Сохраните новый файл под любым именем, например, "Read NFC Tag". Сперва необходимо добавить в него заголовочные файлы. Они должны идти до void setup() .

#include #include #include PN532_I2C pn532_i2c(Wire); NfcAdapter nfc = NfcAdapter(pn532_i2c); // Указываем, что используем плату расширения

Чтение NFC метки

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

#include #include #include // Следующие файлы включают установленные библиотеки #include PN532_I2C pn532_i2c(Wire); NfcAdapter nfc = NfcAdapter(pn532_i2c); // Указываем, что используем плату расширения void setup(void) { Serial.begin(9600); Serial.println("NFC TAG READER"); // Заголовок, используемый в мониторе последовательного порта nfc.begin(); } void loop(void) { Serial.println("\nScan your NFC tag on the NFC Shield\n"); // Команда, чтобы вы знали, что делать дальше if (nfc.tagPresent()) { NfcTag tag = nfc.read(); Serial.println(tag.getTagType()); Serial.print("UID: "); Serial.println(tag.getUidString()); // Извлекает уникальный идентификатор из вашей метки if (tag.hasNdefMessage()) // Если у метки есть сообщение { NdefMessage message = tag.getNdefMessage(); Serial.print("\nThis Message in this Tag is "); Serial.print(message.getRecordCount()); Serial.print(" NFC Tag Record"); if (message.getRecordCount() != 1) { Serial.print("s"); } Serial.println("."); // Если у вас более 1 сообщения, то проходим по ним в цикле int recordCount = message.getRecordCount(); for (int i = 0; i < recordCount; i++) { Serial.print("\nNDEF Record "); Serial.println(i+1); NdefRecord record = message.getRecord(i); int payloadLength = record.getPayloadLength(); byte payload; record.getPayload(payload); String payloadAsString = ""; // Обработать сообщение, как строку for (int c = 0; c < payloadLength; c++) { payloadAsString += (char)payload[c]; } Serial.print(" Information (as String): "); Serial.println(payloadAsString); String uid = record.getId(); if (uid != "") { Serial.print(" ID: "); Serial.println(uid); // Напечатать уникальный идентификатор NFC метки } } } } delay(10000); }

После того, как вы сохранили и загрузили этот код в свою плату Arduino с подключенной платой расширения, вы можете начать проверять, какие сообщения есть у ваших меток, если они есть. Когда вы загрузите программу в Arduino, откройте монитор последовательного порта, там вы увидите сообщение “NFC TAG Reader” , а ниже инструкции, говорящие вам сканировать вашу NFC метку на своей плате расширения NFC (“Scan your NFC tag on your NFC Shield”). Когда я сделал это, то получил в мониторе последовательного порта следующее:



Обратите внимание, что он дает уникальный идентификатор NFC метки и сообщает, какую информацию я записал в метки. В этой конкретной метке у меня простое приветственное сообщение и ссылка на Twitter Arduino. Arduino успешно считывает информацию с моей метки. Видео ниже показывает, как мой Nexus 5 читает метку и показывает сообщения.

Запись на NFC метку

Теперь, чтобы записать сообщение на метку, необходимо выполнить похожий процесс, за исключением небольших изменений в коде. Заголовок перед функцией void setup() будет таким же, а ниже приведен код, который необходимо загрузить в Arduino.

#include #include #include // Следующие файлы включают установленные библиотеки #include PN532_I2C pn532_i2c(Wire); NfcAdapter nfc = NfcAdapter(pn532_i2c); // Указываем, что используем плату расширения void setup() { Serial.begin(9600); Serial.println("NFC Tag Writer"); // Сообщение в монитор последовательного порта nfc.begin(); } void loop() { Serial.println("\nPlace an NFC Tag that you want to Record these Messages on!"); // Команда в мониторе последовательного порта if (nfc.tagPresent()) { NdefMessage message = NdefMessage(); message.addTextRecord("My First NFC Tag Write"); // Текстовое сообщение, которое хотим записать message.addUriRecord("http://allaboutcircuits.com"); // Вебсайт, который хотим записать message.addTextRecord("Way to Go, It Worked!"); // Завершающее сообщение, которое хотим записать boolean success = nfc.write(message); if (success) { Serial.println("Good Job, now read it with your phone!"); // если всё работает, то мы увидим это сообщение } else { Serial.println("Write failed"); // если запись завершилась неудачей, то увидим это сообщение } } delay(10000); }

Этот код сохраняет в метке три сообщения: вводный текст, говорящий “My First NFC Tag Write” , затем ссылка на сайт AllAboutCircuits и, наконец, завершающее сообщение, говорящее “Way to Go, It Worked!” .