RFID/NFC-сканер [Амперка / Вики]

RFID/NFC-сканер [Амперка / Вики] NFC

Nfc-пульт

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

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

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

Микросхема pn532

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

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

Перед загрузкой кода, ранее считанные значения ID Value перенесём в программу, массивы uidFirstCard, uidSecondCard и uidThirdCard предназначены для хранения ID Карт.

nfc_rfid_three_led_arduino.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);
 
// пины к которым подключены светодиоды Troyka_led#define LED_FIRST   A0#define LED_SECOND  A1#define LED_THIRD   A2
 
 
// Массивы в которые необходимо записать ID карт:uint8_t uidFirstCard[]={0x04,0x40,0xA9,0xDA,0xA3,0x40,0x80};uint8_t uidSecondCard[]={0x04,0xAB,0xB4,0xDA,0xA3,0x40,0x80};uint8_t uidThirdCard[]={0x04,0x71,0xC1,0xDA,0xA3,0x40,0x81};
 
// функция которая сравнивает два переданных ID// при совпадении возвращает значение true// и значение false если ID разные
boolean comparisonOfUid(uint8_t uidRead[8],uint8_t uidComp[8],uint8_t uidLen){for(uint8_t i =0; i < uidLen; i  ){if(uidRead[i]!= uidComp[i]){returnfalse;}if(i ==(uidLen)-0x01){returntrue;}}}
 
// функция переключающая светодиод, получает входные параметры:// номер светодиода ledvoid toggleLed(int led){if(digitalRead(led)== LOW){
  digitalWrite(led, HIGH);}else{
    digitalWrite(led, LOW);}}
 
void setup(void){// инициализация пинов Led
  pinMode(LED_FIRST, OUTPUT);
  pinMode(LED_SECOND, OUTPUT);
  pinMode(LED_THIRD, OUTPUT);
 
  // инициализация Serial - порта
  Serial.begin(9600);// инициализация RFID/NFC сканера
  nfc.begin();int versiondata = nfc.getFirmwareVersion();if(!versiondata){while(1){
      Serial.print("Didn't find RFID/NFC reader");
      delay(1000);}}
  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){// Переключаем первый светодиод если функция сравнения// ID вернёт true иначе оставляем всё как естьif(comparisonOfUid(uid, uidFirstCard, uidLength)){
      toggleLed(LED_FIRST);
      Serial.println("FirstTAG");}else{// Переключаем второй светодиод если функция сравнения// ID вернёт true иначе оставляем всё как естьif(comparisonOfUid(uid, uidSecondCard, uidLength)){
        toggleLed(LED_SECOND);
        Serial.println("SecondTAG");}else{// Переключаем третий светодиод если функция сравнения// ID вернёт true иначе оставляем всё как естьif(comparisonOfUid(uid, uidThirdCard, uidLength)){
          toggleLed(LED_THIRD);
          Serial.println("ThirdTAG");}else{
          Serial.println("NoTAG");}}}
  delay(1000);}}

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

Повторим те же операции, что и для Arduino. Перед загрузкой кода, ранее считанные значения uid перенесём в программу, массивы uidFirstCard, uidSecondCard и uidThirdCard предназначены для хранения ID Карт.

Проблемы NFC:  Пополнить «Тройку» теперь можно через NFC без желтого валидатора / Новости города / Сайт Москвы

nfc_rfid_three_led_iskrajs.js
// настраиваем I2C1 для работы модуля
I2C1.setup({sda: SDA, scl: SCL, bitrate:400000});
 
// подключаем модуль к I2C1 и пину прерыванияvar nfc = require('@amperka/nfc').connect({i2c: I2C1, irqPin: P9});// подключаем 3 светодиодаvar ledFirst = require('@amperka/led').connect(A0);var ledSecond = require('@amperka/led').connect(A1);var ledThird = require('@amperka/led').connect(A2);
 
// ID-карт, при поднисенни которых буду переключаться светодиоды.// считываем их примером из console:const uidFirstCard  =[4,113,193,218,163,64,129];const uidSecondCard =[4,64,169,218,163,64,128];const uidThirdCard  =[4,171,180,218,163,64,128];
 
// активируем модуль
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.uid);// переводим массив-байт в строку для удобства сравнения// вызываем функцию-обработчик метки
    factoryLedLight(data.uid);}// каждые 1000 миллисекунд слушаем новую метку
  setTimeout(function(){
    nfc.listen();},1000);});
 
// функция-обработчик, сравнивает массивы и при совпадении возвращает truefunction comparisonOfUid(uid, card){// переменная хранящая длину массиваvar leng = uid.length;// цикл поэлементно проверяет равенство значенийfor(var i =0; i < leng; i  ){// сравнение элементов между собойif(uid[i]!= card[i]){// если элементы не равны прекращаем работу функции и возвращаем falsereturnfalse;}// если все элементы массива равны возвращаем trueif( i == uid.length-1){returntrue;}}}
 
// функция сравнивает ID текущей метки с ID меток в константах// при совпадении переключает светодиодfunction factoryLedLight(id){if(comparisonOfUid(id, uidFirstCard)){
    console.log('FirstTAG');
    ledFirst.toggle();}else{if(comparisonOfUid(id, uidSecondCard)){
      console.log('SecondTAG');
      ledSecond.toggle();}else{if(comparisonOfUid(id, uidThirdCard)){
        console.log('ThirdTAG');
        ledThird.toggle();}else{
        console.log('NoTAG');}}}}

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


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

Проблемы NFC:  Бесконтактные платежи NFC с Qiwi Wallet - оплата в любом терминале без карт Visa и MasterCard

Сканер nfc — купите сканер nfc с бесплатной доставкой на алиэкспресс version

Перед покупкой сравните цены на сканер nfc, прочитайте реальные отзывы покупателей, ознакомьтесь с техническими характеристиками.

Закажите сканер nfc онлайн с доставкой по России: товары с пометкой Plus доступны с ускоренной доставкой и улучшенными условиями возврата.

На Алиэкспресс сканер nfc всегда в наличии в большом ассортименте: на площадке представлены как надежные мировые бренды, так и перспективные молодые.

Схема подключения

К ранее собранной схеме добавим три светодиода Пиранья.
RFID/NFC-сканер [Амперка / Вики]

Технология nfc

NFC (англ. Near Field Communication, ближняя бесконтактная связь) — технология беспроводной передачи данных малого радиуса действия, которая дает возможность обмена данными между устройствами, находящимися на расстоянии до 10 сантиметров. NFC работает на частоте 13,56 МГц и является продолжением высокочастотного RFID стандарта.

Технология rfid

RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) — система однонаправленной связи, в которой данные из метки передаются к бесконтактному считывателю. RFID метки могут быть отсканированы на расстоянии до 100 метров, причём метка может находиться вне прямой видимости ридера.

Технология rfid/nfc

RFID/NFC-сканер [Амперка / Вики]

Оцените статью
NFC в смартфонах
Добавить комментарий