Arduino를 사용한 RFID 리더 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 기사에서는 RFID 회로 기술에 대해 살펴볼 것입니다. RFID 태그 및 리더의 작동 방식, RFID 모듈 (RC522)을 Arduino와 인터페이스하고 RFID 태그에서 유용한 정보를 추출하는 방법을 살펴볼 것입니다.

RFID 태그 사용

저는 여러분 모두가 RFID를 사용하여 사무실, 학교, 대학, 도서관 등에서 적어도 한 번은 보안 액세스를 확보했다고 확신합니다.



당신이 가지고 다니는 태그 / 카드에는 전자 칩이 내장되어 있으며 칩은 당신의 신원을 전자적으로 저장합니다. 카드가 판독기의 가시선에 있어야하는 바코드와 달리 RFID는 판독기 바로 근처에 배치하여 정보를 읽을 수 있습니다.

대부분의 스마트 카드는 수동 RFID 기술을 사용하므로 카드에서 정보를 읽는 데 전원이 필요하지 않습니다. 리더는 RFID 칩에 전원을 공급하고 동시에 정보를 추출합니다.



이러한 종류의 태그는 태그 및 애플리케이션에 따라 밀리미터에서 몇 피트까지 정보를 읽을 수 있습니다.

활성 RFID 태그는 외부에서 전원이 공급되며 이러한 종류의 태그는 최대 100 피트까지 정보를 전송합니다. 배터리 전력 소비는 몇 년 동안 최적화되어 있습니다.

이 프로젝트에서는 수동형 RFID 기술을 살펴볼 것입니다. 우리는 정보를 추출하고 표시하기 위해 arduino와 함께 RC522 리더 모듈을 사용하고 있습니다. RC522 모듈은 일반적으로 전자 상거래 웹 사이트 및 지역 전자 키트 상점에서 사용할 수 있습니다.

RC522 리더 / 라이터 모듈 그림 :

RC522 리더 / 라이터 모듈

카드 및 키 체인 유형 태그 :

카드 및 키 체인 유형 태그

보시다시피 PCB의 일부는 리더에서 정사각형 모양의 전도 경로로 둘러싸여 있으며 13.56MHz 주파수에서 태그에 대한 전자기장을 생성합니다.

생성 된 EMF는 태그에 의해 선택되고 태그가 작동하기에 충분한 전압으로 변환되며 태그는 필요한 정보를 펄스 형태로 판독기에 다시 보냅니다. 온보드 마이크로 컨트롤러가 정보를 디코딩합니다.

작동 원리

Arduino를 사용한 RFID 회로

회로도는 매우 쉽고 설명이 필요 없으며 점퍼 와이어가 거의 없어서이 프로젝트를 수행 할 수 있습니다. 컴퓨터의 USB 포트를 통해 arduino와 RFID에 전원을 공급할 것입니다. RC522의 작동 전압은 3.3V이며 5V 전원을 모듈에 연결하지 마십시오. 온보드 구성 요소가 손상됩니다.

Arduino RFID 회로 프로토 타입 :

이것이 모든 하드웨어 연결입니다. 이제 코딩으로 넘어가겠습니다.

프로그램을 업로드하기 전에 다음 링크에서 라이브러리 파일을 다운로드하고 arduino IDE의 라이브러리 폴더로 이동하십시오.

github.com/miguelbalboa/rfid.git

프로그램 코드 :

//-------------------------Program developed by R.Girish------------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if(piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
Serial.print('Your card's UID:')
Serial.println(StrID)
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//-------------------------Program developed by R.Girish------------------//

확인! 위의 프로그램이 작동하도록 설계된 것은 무엇입니까?

위의 프로그램은 리더에서 스캔 할 때 IDE의 직렬 모니터에 태그의 UID를 표시합니다. UID는 태그의 고유 식별 번호로 변경할 수 없으며 제조업체에서 설정합니다.

산출:

카드의 UID : FA : 4E : B2 // 이것은 예입니다.

참고 1 : 각각의 두 값은 콜론으로 구분되며, 프로그램에 의해 수행됩니다. 실제 값은 콜론으로 구분되지 않고 공백으로 구분 될 수 있습니다.

참고 2 : 제안 된 설정으로 NXP에서 제조 한 RFID 태그 만 읽기 / 쓰기가 가능하며 일반적으로 상업적으로 사용됩니다.

UID는 키트와 함께 제공되는 태그가 최대 1KB의 정보를 저장할 수있는 태그를 인식하는 데 사용됩니다. 최대 4KB 이상의 정보를 저장할 수있는 다른 카드가 있습니다.

태그에서 정보를 저장하고 추출하는 과정은 다른 기사의 주제입니다.
이 프로젝트와 관련하여 질문이 있으시면 댓글 섹션에서 자유롭게 질문하십시오.




Previous : 기압 센서 회로 – 작동 및 인터페이스 세부 정보 Next : PWM 시간 비례를 사용한 Triac 위상 제어