Андрей Смирнов
Время чтения: ~3 мин.
Просмотров: 19

Чип nfc в телефоне

Примеры работы

Рассмотрим несколько примеров с работой NFC-сканера.

Пример программы для Arduino

nfc.ino
#include <Wire.h>
#include <SPI.h>
// библиотека для работы с RFID/NFC
#include <Adafruit_PN532.h>
 
// пин прерывания
#define PN532_IRQ   9
// создаём объект для работы со сканером и передаём ему два параметра
// первый — номер пина прерывания
// вторым — число 100
// от Adafruit был программный сброс шилда 
// в cканере RFID/NFC 13,56 МГц (Troyka-модуль) этот пин не используется
// поэтому передаём цифру, большая чем любой пин Arduino
Adafruit_PN532 nfc(PN532_IRQ, 100);
 
void setup(void)
{
  Serial.begin(9600);
  // инициализация RFID/NFC сканера
  nfc.begin();
  int versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("Didn't find RFID/NFC reader");
    while(1) {
    }
  }
 
  Serial.println("Found RFID/NFC reader");
  // настраиваем модуль
  nfc.SAMConfig();
  Serial.println("Waiting for a card ...");
}
 
void loop(void)
{
  uint8_t success;
  // буфер для хранения ID карты
  uint8_t uid8;
  // размер буфера карты
  uint8_t uidLength;
  // слушаем новые метки
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  // если найдена карта
  if (success) {
    // выводим в консоль полученные данные
    Serial.println("Found a card");
    Serial.print("ID Length: ");
    Serial.print(uidLength, DEC);
    Serial.println(" bytes");
    Serial.print("ID Value: ");
    nfc.PrintHex(uid, uidLength);
    Serial.println("");
    delay(1000);
  }
}

Откройте Serial-порт и прикладывайте по очереди карты к считывателю. В строке ID Value выводится уникальный номер карты.

Пример программы для Iskra JS

Прочитаем и выведем ID карты в Serial-порт. Для работы RFID/NFC сканера с Iskra JS используйте библиотеку @amperka/nfc. Она обеспечивает простую работу с модулем и прячет в себе все тонкости протокола обмена данными между сканером и управляющей платой.

nfc-test.js
// настраиваем I2C1 для работы модуля
I2C1.setup({sda SDA, scl SCL, bitrate 400000});
 
// подключаем модуль к I2C1 и пину прерывания
var nfc = require('@amperka/nfc').connect({i2c I2C1, irqPin P9});
 
// активируем модуль
nfc.wakeUp(function(error) {
  if (error) {
    print('NFC wake up error', error);
  } else {
    print('NFC wake up OK');
    // слушаем новые метки
    nfc.listen();
  }
});
 
nfc.on('tag', function(error, data) {
  if (error) {
    print('tag read error');
  } else {
    // выводим в консоль полученные данные
    print(data);
  }
 
  // каждые секунду слушаем новую метку
  setTimeout(function () {
    nfc.listen();
  }, 1000);
});

После загрузки кода, приложим по очереди карты к сканеру. В строке uid выведен уникальный номер карты

Виды внешних NFC-модулей и их функционал

Существует несколько видов внешних НФС модулей. Они имеют разные размеры и функции. Микрочипы быстрого действия могут быть активными или пассивными. В первом случае происходит полноценный обмен данными между устройствами. Во втором — ограниченный. Какие типы модулей встречаются сегодня:

  1. Сим-карта с НФС. По внешним признакам похожа на обычную симку. Продажу товара осуществляют многие сотовые операторы. Sim-карта позволяет проводить бесконтактные платежи и денежные переводы. Подобная технология удобна, но не всегда безопасна.
  2. Метки НФС. Для некоторых смартфонов выпускают специальные бесконтактные метки. Они выглядят в виде круглых дисков, которые прикрепляют на внешний корпус айфона. Технология позволяет проводить платежи, управлять устройствами. Существенный недостаток — необходимость установки дополнительных приложений.
  3. Антенны. Такие модули крепят под крышку смартфона. Устройство подходит для гаджетов, имеющих снимающуюся заднюю панель. Возможности антенны велики: можно переводить деньги на разные счета, оплачивать покупки, управлять другими гаджетами.
Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации