Читаем номера rfid nfc карт меток с помощью модуля с чипом PN532, 13.56 MHz

toc
Offline
Зарегистрирован: 09.02.2013

toc
Offline
Зарегистрирован: 09.02.2013

Работает хорошо. Подключён по i2c. Питается от 3.3 в.
Видео: http://www.youtube.com/watch?v=e0huL_LpFj4
Доп.инфо: http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_93&products_id=2205
Скетч:
 

/*
  Читаем номера rfid nfc карт меток с помощью модуля с чипом PN532, 13.56 MHz
  based on
  //@file    nfc_mifare_mf1s50_reader.ino
  //@author  www.elechouse.com
  //@brief   example of reading mf1s50 card for NFC_MODULE
*/

/** include library */
#include "nfc.h"

/** define a nfc class */
NFC_Module nfc;


const byte ledRed = 7;
const byte ledGreen = 8; 
const byte  ledBlue = 9;

byte currentLed = ledRed;

const byte led13 = 13;



// the setup routine runs once when you press reset:
void setup() {                
  Serial.begin(57600);
  nfc.begin(); 

  pinMode(ledBlue, OUTPUT); 
  pinMode(ledGreen, OUTPUT);
  pinMode(ledRed, OUTPUT);
  //pinMode(led13, INPUT); 

  Serial.println("MF1S50 Reader Demo From Elechouse!");
  
  uint32_t versiondata = nfc.get_version();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    delay(500);
    setup(); // try once more
    return;//while (1); // halt
  }

  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  /** Set normal mode, and disable SAM */
  nfc.SAMConfiguration(); 
   
}

// the loop routine runs over and over again forever:
void loop() {
  u8 buf[32],sta;
  
  /** Polling the mifar card, buf[0] is the length of the UID */
  sta = nfc.InListPassiveTarget(buf);
  digitalWrite(ledBlue, LOW);
  digitalWrite(ledGreen, LOW);
  digitalWrite(ledRed, LOW);
  digitalWrite(led13, HIGH);
  
  /** check state and UID length */
  if(sta)
  {
    digitalWrite(led13, LOW); // погашен когда карта рядом с ридером 
    
    /** he card may be Mifare Classic card, try to read the block */  
    /** this sketch was written by toc at arduino ru */ 
    // в нулевом элементе массива имеем длину номера карты
    Serial.print("UUID length:");
    Serial.print(buf[0], DEC);
    Serial.println();
    Serial.print("UUID:");
    nfc.puthex(buf+1, buf[0]);
    Serial.println();
    
    // номер карты начинается с 1-ого элемента
    // различаю мои карты по второму байту номера 
    byte someByte = buf[2];
    
    // в соответствии с приложенной картой - мигаю лампочками
    // порядок строк как на видео (4 билета, белая карта, брелок) youtu.be/e0huL_LpFj4
    if(someByte==0x95) blinkLed(ledRed,2);
    else if(someByte==0x72) blinkLed(ledGreen,3);
    else if(someByte==0x86) blinkLed(ledBlue,4);
    else if(someByte==0xA6) blinkLed(ledRed,5);
    else if(someByte==0x78) blinkLed(ledGreen,6);
    else if(someByte==0x10) blinkLed(ledBlue,7);
  }
}

void blinkLed(int pled, int cnt)
{
  while(cnt--)
  {
    digitalWrite(pled, HIGH);
    delay(50); 
    digitalWrite(pled, LOW);
    delay(300); 
  }
}

см. также http://arduino.ru/forum/otvlechennye-temy/est-lishnii-modul-dlya-raboty-s-rfid-nfc-kartami-1356-mgts

Alexander
Offline
Зарегистрирован: 25.04.2010

Zapek@n
Offline
Зарегистрирован: 16.02.2012

Класс. А что за музыка на озвучке ролика? Прошу прощения за офтоп

Omega13
Offline
Зарегистрирован: 01.07.2013

Здравствуйте, я новичок в работе с языками программирования и с самой платформой Arduino, у меня возникла пара вопросов, возможно ли подключить обычный (формат не имеет значения) weigand 26 считыватель к Arduino Mega?

На руках есть считыватели любых форматов, HID iClass, Prox2, Indala, EM, Mifare, все что угодно, нет опыта и знаний в работе с платформой, ткните плиз.

vlkam
Offline
Зарегистрирован: 17.02.2013

Omega13 пишет:

Здравствуйте, я новичок в работе с языками программирования и с самой платформой Arduino, у меня возникла пара вопросов, возможно ли подключить обычный (формат не имеет значения) weigand 26 считыватель к Arduino Mega?

На руках есть считыватели любых форматов, HID iClass, Prox2, Indala, EM, Mifare, все что угодно, нет опыта и знаний в работе с платформой, ткните плиз.

 

http://forum.arduino.cc/index.php/topic,17085.0.html

toc
Offline
Зарегистрирован: 09.02.2013

Zapek@n пишет:
Класс. А что за музыка на озвучке ролика? Прошу прощения за офтоп

Rob Simonsen - Clappy

triada13
Offline
Зарегистрирован: 04.01.2013

toc  а обычные метки он читает, или только свои?

etaon
Offline
Зарегистрирован: 16.12.2011

О! Ребята, подскажите плиз ссылками или направлением, чтобы увеличить расстояние считывания пассивных меток(карточек) до 3 метров.

Взять базовый модуль чтения меток. Усилить излучение и увеличить антенну для считывания?

Скорее всего придется городить отдельный усилитель излучения

И собирать антенну с кучей расчетов.

Всё просто не получится да?

toc
Offline
Зарегистрирован: 09.02.2013

triada13, он читает все 13,56 Мгц метки. А в некоторые может записывать.

etaon, я не знаю.

triada13
Offline
Зарегистрирован: 04.01.2013

toc получается что карты метро и аэроэкспресс работают на 13,56 Мгц, а не на 125 Кгц?

Я просто почему спрашиваю, стал разглядывать плату и обнаружил отсутствие одного дросселя.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

частоту можно определить по количеству витков... 13.56м и 125к разница очень большая.

triada13
Offline
Зарегистрирован: 04.01.2013

количество витков где? на плате?

toc
Offline
Зарегистрирован: 09.02.2013

triada13, билеты московского метро точно работают на 13.56 МГц. 

О других не знаю.

triada13
Offline
Зарегистрирован: 04.01.2013

toc, ясно спасибо за разъяснения.

Trickster
Offline
Зарегистрирован: 24.07.2019

Подскажите что я делаю не так?

 

Arduino: 1.8.9 (Linux), Board: "Arduino Nano, ATmega328P (Old Bootloader)"
 
In file included from /home/SkFire/Arduino/sketch_jul24a/sketch_jul24a.ino:10:0:
/home/SkFire/Arduino/libraries/nfc/nfc.h:42:18: error: conflicting declaration 'typedef uint16_t u16'
 typedef uint16_t u16;
                  ^
In file included from /opt/arduino-1.8.9-linux64/arduino-1.8.9/hardware/arduino/avr/cores/arduino/Arduino.h:233:0,
                 from sketch/sketch_jul24a.ino.cpp:1:
/opt/arduino-1.8.9-linux64/arduino-1.8.9/hardware/arduino/avr/cores/arduino/USBAPI.h:30:24: note: previous declaration as 'typedef short unsigned int u16'
 typedef unsigned short u16;
                        ^
exit status 1
Error compiling for board Arduino Nano.
 
nik182
Offline
Зарегистрирован: 04.05.2015

 Вроде бы прямо по английски написано : nfc.h:42:18: error: conflicting declaration. Среда с 2013 года сильно изменилась. Возьмите либо новую библиотеку либо поправте старую, выкинув из неё лишнее.