【 아두이노모듈#12】 RFID (RC522) 사용하기 #2
RFID(Radio Frequancy Identification)는 무선 주파수를 이용하여 RFID 태그와 RFID리더간 데이터를 교환하는 장치이다.
교통카드, 학생신분증 겸용카드, 연구실 및 회사 출입문카드, 구내식당 카드, 마트 등의 상품 진열 및 관리 등등 다방면에서 이용되고 있다.
지난 실습에서 아두이노와 연결하는 기본회로 만들어 보았는데, 시리얼모니터를 통해 특정 ID카드의 고유값(UID)을 확인한 승인 처리 및 거부 처리 해보는 실습을 진행하려고 한다.
▶ 선수 학습 :
1. [아두이노 모듈#11] RFID(RC522) 사용하기 #1 ☜ (클릭)
▶ RFID 모듈 (RC522) 세부 스팩
※ RFID 모듈 개요
- RC522모듈은 RFID 범주에 속하는 NFC통신 방식을 사용한다. NFC는 13.56MHz의 주파수 대역을 사용하고 10cm 이내 가까운 거리의 비첩촉 통신을 뜻한다.
- RC522의 모듈 구성은 RFID 데이터를 잃고 기록 할 수 있는 본체가 있으며, RFID 고유데이터(UID) 코드가 저장되어 있는 카드키와 열쇠고리형키가 포함 되어 있다.
- 본 실습에서는 아두이노와 통신하기 위해 SPI통신 방식으로 연결하여 사용한다.
▶ 실습 목표 :
1. [ RFID 구동원리, 통신 방식에 대해 이해할 수 있다. ]
2. [ SPI통신과 회로 연결에 대해 이해 할 수 있다.]
3. [ 카드별 고유넘버(UID)를 알아 낼 수 있다.]
4. [ 특정 UID를 지정하여 승인 및 거부 처리를 할 수 있다.]
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 실습 절차 :
1. 부품을 준비하여 위와 같은 회로를 구성한다.
2. 아두이노IDE에서 MFRC522 라이브러리를 검색후 설치한다.
(메뉴 : 스케치 》 라이브러리 포함하기 》 라이브러리 관리 》 라이브러리 메니저 )
3. 첨부된 아두이노 파일을 다운 받아 코드를 실행시킨다.
4. 프로그램을 동작시키고 승인처리할 카드키 값을 읽어 프로그램에 적용한다.
5. 승인 및 거부 처리가 잘 되는지 확인한다.
▶ 프로그램 코드 및 설명 :
/* ID 카드의 UID값에 따라 승인 또는 거부 처리하기 */
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10 // spi 통신을 위한 SS(chip select)핀 설정
#define RST_PIN 9 // 리셋 핀 설정
MFRC522 rfid(SS_PIN, RST_PIN); // 'rfid' 이름으로 클래스 객체 선언
void setup ( ) {
Serial.begin(9600);
SPI.begin(); // SPI 통신 시작
rfid.PCD_Init(); // RFID(MFRC522) 초기화
Serial.println("Approximate your card to the reader...");
Serial.println();
}
}
void loop ( ) {
// 새카드 접촉이 있을 때만 다음 단계로 넘어감
if ( ! rfid.PICC_IsNewCardPresent())
return;
// 카드 읽힘이 제대로 되면 다음으로 넘어감
if ( ! rfid.PICC_ReadCardSerial())
return;
// 현재 접촉 되는 카드 타입을 읽어와 모니터에 표시함
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < rfid.uid.size; i++)
{
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(rfid.uid.uidByte[i], HEX);
content.concat(String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(rfid.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
// UID값이 아래 값과 같으면 승인 처리
if (content.substring(1) == "85 7C FB D1") // 승인 하고자하는 UID 기록
{
Serial.println("Authorized access");
Serial.println();
delay(3000); // 카드 접촉 및 연속체크 시간에 대한 딜레이 주기
}
// UID값이 다르다면 엑세스 거부 처리
else {
Serial.println(" Access denied");
delay(3000); // 카드 접촉 및 연속체크 시간에 대한 딜레이 주기
}
}
▶ 실행영상 :
(전체화면 보기로 보세요)
(아래는 유튜브로 시청하기)
▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)
▶ 컴파일 에러 발생시 해결 방법 참고 : 아래 최신글을 참고해 보세요.
'아두이노 > 3. 아두이노 모듈' 카테고리의 다른 글
【 아두이노모듈#14】 Joystick #1(Keyes SJoys) 조이스틱! 사용해보기 (2) | 2019.05.02 |
---|---|
【 아두이노모듈#13】 RFID #3(RC522) 도어락 만들기! (13) | 2019.04.26 |
【 아두이노모듈#11】 RFID (RC522) 사용하기 #1 (13) | 2019.04.24 |
【 아두이노모듈#10】 1채널 릴레이(JQC-3FF-S-Z) 사용하기 (4) | 2019.03.26 |
【 아두이노모듈#9】 TM1637 & DS1307 리얼타임 시계 만들기 (25) | 2019.03.21 |