인투피온 강좌/아두이노 팁(Tip)

아두이노 RFID(RC522) NFC 사용하기

인투피온 2021. 12. 20. 14:38

 

 

안녕하세요.

오늘은 아두이노 RFID-RC522에 대해서 알아보겠습니다.

 

우선 RFID란 무선 인식이라고도 하며, 반도체 칩이 내장된 태그, 라벨, 카드 등의 
저장된 데이터를 무선주파수를 이용하여 비접촉으로 읽어내는 인식 시스템입니다. 
현재 실생활에서 사용하는 교통카드나 RFID가 
신분증을 통해 출입을 하고 있습니다.

우리는 아두이노에서 RFID를 사용하는 방법을 알아보겠습니다.

 

 

스마트폰 NFC 태그로도 사용 가능

 

준비물

 

 

 ※ 클릭시 구매 링크로 이동합니다.

아두이노 우노 보드
브레드보드 400핀
아두이노 RFID 카드리더 모듈
점퍼케이블

RFID의 구성품은 1개의 카드리더기와 2종류의 RF 카드, 핀헤더가 있습니다.

 

 

 

RFID 라이브러리 추가하기

 

 

먼저 RFID를 사용하기 위해선 라이브러리를 추가해줘야 합니다.

 

 

라이브러리 관리를 열어주세요(Ctrl + Shift + I)

RFID 검색 후 MFRC522 BY GithubCommunity를 설치해주세요.

 

 

 

RFID 예제 파일 확인하기

 

 

rfid.fzz
0.02MB

 

먼저 위의 사진과 같이 연결하시면 되고, 보기 힘드시면

위의 FRITZING 파일을 확인해주세요.

예제에서 DUMP INFO를 열어서 업로드 후 카드를 인식해주세요.

 

 

 

그러면 Card UID 가 나오는데 이 값을 알고 있어야 동작할 수 있으니 메모해 두세요

 

RFID 동작

 

 

 

rfid-servo-led.fzz
0.02MB

 

위의 그림처럼 연결한 후 아래의 소스를 업로드 해주세요.

 

 

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>   
 
#define RST_PIN   9
#define SS_PIN    10
#define LED1   4
#define LED2   3

Servo SG90; 
MFRC522 rc522(SS_PIN, RST_PIN);

int sg90 = 6;
int i=0;

void setup(){
  Serial.begin(9600);
  SPI.begin();
  rc522.PCD_Init();
  
  SG90.attach(sg90);          
  pinMode(LED1, OUTPUT);    
  pinMode(LED2, OUTPUT);               
}

void loop(){
  digitalWrite(LED1, LOW);   
  digitalWrite(LED2, LOW);   

  if ( !rc522.PICC_IsNewCardPresent() || !rc522.PICC_ReadCardSerial() ) { 
    //카드 또는 ID 가 읽히지 않으면 return을 통해 다시 시작하게 됩니다.
    delay(500);
    return;
  }
  
  Serial.print("Card UID:");
  
  for (byte i = 0; i < 4; i++) {
    Serial.print(rc522.uid.uidByte[i]);
    Serial.print(" ");
  }
  Serial.println(" ");

  if(rc522.uid.uidByte[0]==0xB6 && rc522.uid.uidByte[1]==0xF7 && rc522.uid.uidByte[2]==0x18 
    && rc522.uid.uidByte[3]==0xF8) {  // 여기에 CARD UID 를 자신의 카드에 맞는 값으로 변경해주세요
    
    Serial.println("<< OK !!! >>  Registered card...");
    digitalWrite(LED1, HIGH);
    
    for(i=0; i<=180; i++){        //0부터 180까지 1씩 증가
      SG90.write(i);
      delay(10);
    }
    for(i=180; i>0; i--){         //180부터 0까지 1씩 감소
      SG90.write(i);
    delay(10);
    }
    delay(500);
  }
  else{
    digitalWrite(LED2, HIGH);
    Serial.println("<< WARNING !!! >>  This card is not registered");
    delay(500);
  }

  delay(100);
}

 

 

 

 

 

 

자신이 가진 카드가 인식이 되면 원하는 동작을 하고,

등록되지 않은 카드가 인식이 되었을 경우에는 경고문이나 경고음을 통해 알릴 수 있어요.

저는 추가적으로 핸드폰의 값도 받아 동작하도록 해봤어요.

보안카드나 핸드폰의 NFC 인식도 가능하니

도어락도 만들 수 있을 것 같아요.

 

 

 

이렇게 오늘은 RFID(RC522) 사용법에 대해 알아봤어요.

다음에는 수위센서 모듈로 찾아오겠습니다.

 

 

 

 

전자부품 전문 쇼핑몰 인투피온입니다.
필요한 자재에 관한 문의는 홈페이지를 통한 견적 신청, 혹은 전화나 메일로 주시면 빠른 회신을 드릴 수 있도록 하겠습니다.

▶ 홈페이지: http://intopion.com/
▶ 전화: 02-2615-7278
▶ FAX : 02-6124-4242
▶ 메일: intopion@hanmail.net