RFID/NFC-сканер

RFID/NFC-сканер работает с NFC метками стандарта Mifare, картами общественного транспорта, смартфонами и планшетами, поддерживающими технологию Near Field Communication. Модуль считывает данные с меток и записывает на них информацию.

Видеообзор

Подключение и настройка

RFID/NFC сканер подключается по протоколу I²C/TWI и использует пин прерывания IRQ. Для сборки модуля используются три трёхпроводных шлейфа.

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

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

nfc.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('wake up error', error);
  } else {
    print('wake up OK');
    // слушаем новые метки
    nfc.listen();
  }
});
 
nfc.on('tag', function(error, data) {
  if (error) {
    print('tag read error');
  } else {
    // выводим в консоль полученные данные
    print(data);
  }
 
  // каждые 1000 миллисекунд слушаем новую метку
  setTimeout(function () {
    nfc.listen();
  }, 1000);
});

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

Для работы сканера с Arduino используйте библиотеку Adafruit PN532.

nfc.ino
#include <Wire.h>
#include <SPI.h>
// библиотека для работы с RFID/NFC
 
#include <Adafruit_PN532.h>
 
// пин прерывания
#define PN532_IRQ   7
 
// создаём объект для работы со сканером
Adafruit_PN532 nfc(PN532_IRQ, 3);
 
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 uid[8];
  // размер буфера карты
  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);
  }
}

Элементы платы

Микросхема PN532

PN532 — это микросхема трансивера для бесконтактной передачи данных на частоте 13,56 МГц. Ядро схемы – микроконтроллер 80C51. Микросхема взаимодействует с управляющей электроникой по протоколу I2C.

Контакты подключения трёхпроводных шлейфов

Контакты питания:

  • земля (G) — чёрный провод, соедините с пином GND Troyka Shield;
  • питание (V) — красный провод, соедините с пином 5V Troyka Shield;
  • прерывание (Q) — желтый провод, подключите к цифровому пину Troyka Shield.

Контакты шины I²C:

  • сигнальный (D) — подключите к SDA пину Troyka Shield;
  • сигнальный (С) — подключите к SCL пину Troyka Shield;
  • не используется.

Контакты подключения антенны:

Модуль и антенна соединяются трёхпроводным шлейфом. Полярность подключения не имеет значения.

Принципиальная и монтажная схемы

Характеристики

  • Расстояние срабатывания: до 5 см
  • Напряжение питания: 3,3–5 В
  • Потребляемый ток: 100–150 мА
  • Интерфейс: I²C
  • Габариты сканера: 50,8×25,4 мм
  • Габариты антенны: 50,8×50,8 мм

Ресурсы