RFID?
RFID 태그는 라디오 전파를 이용한 비접촉식 ID 인식 시스템입니다.
RFID 시스템은 RFID 태그와 태그를 읽고 쓰기 위한 장치 및 소프트웨어 처리를 위한 기기들로 구성됩니다.
RFID 태그는 비교적 가까운 거리에서만 인식되며, 각각의 태그에 기록된 고유코드를 읽을 수 있습니다. RFID 태그는 보안이 필요한 출입시스템, 물류 등에 사용됩니다.
여기서는 RFID-RC522 모듈을 이용하여 태그를 인식하는 과정을 간단히 정리해 보았습니다.
라이브러리 설치
RFID-RC522 모듈을 쉽게 제어하기 위한 라이브러리를 추가합니다. (이미 설치된 경우 건너뜁니다.)
- https://github.com/AritroMukherjee/RFID에 접속하여 라이브러리 zip 파일을 다운로드 합니다.
- 라이브러리 zip 파일은 다운 받은 파일 안에 따로 들어 있습니다. 압축을 풀어서 안에 들어 있는 rfid-master.zip 파일을 아무 곳에 풀어 놓습니다.
- rfid-master.zip 라이브러리 파일을 아두이노에 추가합니다.
아두이노 > 스케치 > 라이브러리 포함하기 > .ZIP 라이브러리 추가…
리모트 컨트롤러 작동 테스트
- 아래와 같이 RFID-RC522 모듈을 연결합니다.
- 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); } }
- 소스 파일을 아두이노에 업로드 한 다음 시리얼 모니터를 엽니다.
- RFID 카드를 리더에 갖다대면 카드의 ID가 출력됩니다.
- 소스 코드 중간에 해당 RFID 태그의 ID로 수정해 놓으면, 시리얼 모니터에서 인증메시지를 볼 수 있습니다.
if (content.substring(1) == "50 43 C2 19") // 쌍따옴표 안의 코드값을 바꿔 줍니다. { Serial.println("Authorized access"); Serial.println(); delay(3000); }
- 만약 여러개의 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); }
목차
- 아두이노 고급키트 무작정 따라하기
- 아두이노 8×8 LED Matrix
- 아두이노 Remote Control Test
- 아두이노 Stepper Speed Control
- 아두이노 RFID Reading Test
- 아두이노 LCD Test
- 아두이노 DHT11 온습도 센서 테스트
- 아두이노 3-Color LED Test
- 아두이노 4×4 Keypad Test
- 아두이노 DS1302 Realtime Clock Test
- 아두이노 시계
- 아두이노 초음파 센서 HC-SR04
- 아두이노 초음파 거리측정기
- 아두이노 LCD Test (I2C 모듈 사용)
- 아두이노 초음파 거리측정기 (I2C LCD 사용)
- 아두이노 LM35 온도계 (with Processing)
- 아두이노 미로게임 (MPU-6050 + 프로세싱)