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_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 с бесплатной доставкой на алиэкспресс version
Перед покупкой сравните цены на сканер nfc, прочитайте реальные отзывы покупателей, ознакомьтесь с техническими характеристиками.
Закажите сканер nfc онлайн с доставкой по России: товары с пометкой Plus доступны с ускоренной доставкой и улучшенными условиями возврата.
На Алиэкспресс сканер nfc всегда в наличии в большом ассортименте: на площадке представлены как надежные мировые бренды, так и перспективные молодые.
Схема подключения
К ранее собранной схеме добавим три светодиода Пиранья.
Технология nfc
NFC (англ. Near Field Communication, ближняя бесконтактная связь) — технология беспроводной передачи данных малого радиуса действия, которая дает возможность обмена данными между устройствами, находящимися на расстоянии до 10 сантиметров. NFC работает на частоте 13,56 МГц и является продолжением высокочастотного RFID стандарта.
Технология rfid
RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) — система однонаправленной связи, в которой данные из метки передаются к бесконтактному считывателю. RFID метки могут быть отсканированы на расстоянии до 100 метров, причём метка может находиться вне прямой видимости ридера.