Примеры работы
Рассмотрим несколько примеров с работой 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-модулей и их функционал
Существует несколько видов внешних НФС модулей. Они имеют разные размеры и функции. Микрочипы быстрого действия могут быть активными или пассивными. В первом случае происходит полноценный обмен данными между устройствами. Во втором — ограниченный. Какие типы модулей встречаются сегодня:
- Сим-карта с НФС. По внешним признакам похожа на обычную симку. Продажу товара осуществляют многие сотовые операторы. Sim-карта позволяет проводить бесконтактные платежи и денежные переводы. Подобная технология удобна, но не всегда безопасна.
- Метки НФС. Для некоторых смартфонов выпускают специальные бесконтактные метки. Они выглядят в виде круглых дисков, которые прикрепляют на внешний корпус айфона. Технология позволяет проводить платежи, управлять устройствами. Существенный недостаток — необходимость установки дополнительных приложений.
- Антенны. Такие модули крепят под крышку смартфона. Устройство подходит для гаджетов, имеющих снимающуюся заднюю панель. Возможности антенны велики: можно переводить деньги на разные счета, оплачивать покупки, управлять другими гаджетами.