반응형

전자기 유도 방식으로 통신하는 NFC나 RFID는 이제 일상생활에 흔히 사용되는 통신이다.

 

  RFID NFC
사용 주파수 125kHz~2.45GHz 13.56MHz
연결범위 ~100m ~10cm
통신 단방향 양방향

RFID와 NFC의 차이

 

NFC는 양방향 통신이 가능하므로 태그와 리더가 통합될 수 있지만 RFID는 태그와 리더가 분리 되어있다. 또, RFID는 장거리 통신이 가능하고, NFC는 암호화가 가능해 보안성이 높다는 특징 때문에 NFC는 모바일 기기 등 개인 단말기에 자주 사용되는 반면, RFID는 개인뿐 아니라 물류 등 각종 산업에서 활발하게 이용되고 있다.

 

이렇게 우리 생활에 편리함을 더해주는 NFC와 RFID 태그를 쉽게 읽고 복사하는 방법을 알아보자.

 

스마트 카드 키 머신(?)이라고 한다. 중국어로 정신 없이 적혀 있지만 아래 주파수 대역의 통신 방식을 읽고 쓸 수 있는걸 알 수 있다.

125kHz, 250kHz, 375kHz, 500kHz, 625khz, 750kHz, 875kHz, 1000kHZ, 13.56MHz

 

태그 복사기의 각 부분 설명.

 

상자를 열어 보자. 바로 태그 복사기가 보인다.

 

몇몇 기능키와 숫자키가 있다.

 

 

뒷면에는 읽고 쓸 카드를 고정할 수 있는 밴드와 배터리(AAA) 커버가 있다. USB 전원으로도 동작 가능하다.

 

간단한 매뉴얼과 USB 케이블도 함께 들어있다.

 

같이 구매한 125kHz, 13.56MHz 태그들.

 

사용 방법은 영상으로 확인하자.

 

 

ISO/IEC 14443 Type A 규격의 태그라도 위 영상의 방법으로 복사 되지 않는 경우가 있다. (NFC라는 설명이 붙은 태그) Google Play Store에서 MIFARE Classic Tool을 설치하고 WRITE TAG를 선택한다.

 

Clone UID - OPEN THE CLONE UID TOOL을 선택한다.

 

원본 태그를 스캔하면 자동으로 UID가 입력된다. GENERATE BLOCK 0 AND CLONE UID 버튼을 누른다.

 

Waiting for magic tag(2nd gen) 메세지가 나오면 복사될 태그를 스캔한다.

 

 

복사가 완료되면 검증을 위해 다시 스캔한다.

 

문제없이 복사되었다면 Successfully cloned UID 메세지가 나오고 복사 과정이 다시 진행된다.

 

반응형
Posted by J-sean
:
반응형

RFID-RC522 모듈과 아두이노를 이용해 RFID카드를 읽고 쓸 수 있다.


RFID-RC522


RFID Cards


위 다이어그램과 같이 연결한다.


ARDUINO - RFID-RC522

3.3V - 3.3V

D9 - RST

GND - GND

N/A - IRQ

D12 - MISO

D11 - MOSI

D13 - SCK

D10 - SDA



Library Manager에서 MFRC522을 검색하고 설치한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <SPI.h>
#include <MFRC522.h>
 
#define SS_PIN 10
#define RST_PIN 9
 
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
 
// Array for new NUID 
byte nuidPICC[4= {0};
 
void setup() {
  Serial.begin(9600);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522
}
 
void loop() {
  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if (!rfid.PICC_IsNewCardPresent()) {
    delay(500);
    
    return;
  }
 
  // Verify if the NUID has been read.
  if (!rfid.PICC_ReadCardSerial()) {
    delay(500);
    
    return;
  }
 
  if (rfid.uid.uidByte[0!= nuidPICC[0||
    rfid.uid.uidByte[1!= nuidPICC[1||
    rfid.uid.uidByte[2!= nuidPICC[2||
    rfid.uid.uidByte[3!= nuidPICC[3] ) {
    Serial.println("A new card has been detected.");
 
    // Store NUID into nuidPICC array
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
    }
  } else {
    delay(500);
 
    return;
  }
 
  Serial.print("PICC type: ");
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));
 
  // Check if classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println("Your tag is not MIFARE Classic type.");
    
    return;
  }
 
  Serial.print("Card UID: ");
  for (byte i = 0; i < 4; i++) {
    Serial.print(rfid.uid.uidByte[i]);
    if (i < 3)
      Serial.print("-");
  }
  Serial.println();
}


RFID 카드 읽기 소스를 컴파일 하고 아두이노에 업로드한다. 


RFID-RC522 모듈에 카드를 가까이 대면 카드 타입과 ID가 표시된다.


반응형
Posted by J-sean
: