아두이노 RFID Reading Test

RFID?

RFID 태그는 라디오 전파를 이용한 비접촉식 ID 인식 시스템입니다.
RFID 시스템은 RFID 태그와 태그를 읽고 쓰기 위한 장치 및 소프트웨어 처리를 위한 기기들로 구성됩니다.
RFID 태그는 비교적 가까운 거리에서만 인식되며, 각각의 태그에 기록된 고유코드를 읽을 수 있습니다. RFID 태그는 보안이 필요한 출입시스템, 물류 등에 사용됩니다.
여기서는 RFID-RC522 모듈을 이용하여 태그를 인식하는 과정을 간단히 정리해 보았습니다.

라이브러리 설치

RFID-RC522 모듈을 쉽게 제어하기 위한 라이브러리를 추가합니다. (이미 설치된 경우 건너뜁니다.)

  1. https://github.com/AritroMukherjee/RFID에 접속하여 라이브러리 zip 파일을 다운로드 합니다.
  2. 라이브러리 zip 파일은 다운 받은 파일 안에 따로 들어 있습니다. 압축을 풀어서 안에 들어 있는 rfid-master.zip 파일을 아무 곳에 풀어 놓습니다.
  3. rfid-master.zip 라이브러리 파일을 아두이노에 추가합니다.
    아두이노 > 스케치 > 라이브러리 포함하기 > .ZIP 라이브러리 추가…

리모트 컨트롤러 작동 테스트

  1. 아래와 같이 RFID-RC522 모듈을 연결합니다.
  2. https://www.hackster.io/code_files/60535/download에 접속하여 소스 파일을 다운로드 합니다.
    /*
     * 
     * All the resources for this project: https://www.hackster.io/Aritro
     * Modified by Aritro Mukherjee
     * 
     * 
     */
     
    #include <SPI.h>
    #include <MFRC522.h>
     
    #define SS_PIN 10
    #define RST_PIN 9
    MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
     
    void setup() 
    {
      Serial.begin(9600);   // Initiate a serial communication
      SPI.begin();      // Initiate  SPI bus
      mfrc522.PCD_Init();   // Initiate MFRC522
      Serial.println("Approximate your card to the reader...");
      Serial.println();
    
    }
    void loop() 
    {
      // Look for new cards
      if ( ! mfrc522.PICC_IsNewCardPresent()) 
      {
        return;
      }
      // Select one of the cards
      if ( ! mfrc522.PICC_ReadCardSerial()) 
      {
        return;
      }
      //Show UID on serial monitor
      Serial.print("UID tag :");
      String content= "";
      byte letter;
      for (byte i = 0; i < mfrc522.uid.size; i++) 
      {
         Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
         Serial.print(mfrc522.uid.uidByte[i], HEX);
         content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
         content.concat(String(mfrc522.uid.uidByte[i], HEX));
      }
      Serial.println();
      Serial.print("Message : ");
      content.toUpperCase();
      if (content.substring(1) == "BD 31 15 2B") //change here the UID of the card/cards that you want to give access
      {
        Serial.println("Authorized access");
        Serial.println();
        delay(3000);
      }
     
     else   {
        Serial.println(" Access denied");
        delay(3000);
      }
    } 
  3. 소스 파일을 아두이노에 업로드 한 다음 시리얼 모니터를 엽니다.
  4. RFID 카드를 리더에 갖다대면 카드의 ID가 출력됩니다.
  5. 소스 코드 중간에 해당 RFID 태그의 ID로 수정해 놓으면, 시리얼 모니터에서 인증메시지를 볼 수 있습니다.
    if (content.substring(1) == "50 43 C2 19")  // 쌍따옴표 안의 코드값을 바꿔 줍니다.
    {
        Serial.println("Authorized access");
        Serial.println();
        delay(3000);
    }
  6. 만약 여러개의 RFID 태그를 인식시키고 싶으면 소스 코드를 아래와 같이 변경합니다.
    if (content.substring(1) == "50 43 C2 19" || content.substring(1) == "50 43 C2 20"
     || content.substring(1) == "50 43 C2 21")
    {
        Serial.println("Authorized access");
        Serial.println();
        delay(3000);
    }

목차