ESP32 RFID/NFC 릴레이
이 튜토리얼은 ESP32, RFID/NFC 및 릴레이 사용 방법을 알려드립니다. 구체적으로, RFID 리더에 인증된 RFID/NFC 태그를 탭할 때 릴레이를 활성화하는 방법을 배우게 됩니다.
이 튜토리얼은 릴레이를 전자기 잠금장치, 액추에이터 등에 연결함으로써 확장할 수 있습니다.
1 | × | ESP32 ESP-WROOM-32 개발 모듈 | 쿠팡 | 아마존 | |
1 | × | USB 케이블 타입-C | 쿠팡 | 아마존 | |
1 | × | RFID/NFC RC522 Kit (reader + tags) | 쿠팡 | 아마존 | |
1 | × | RFID Key Fob | 쿠팡 | 아마존 | |
1 | × | 릴레이 | 아마존 | |
10 | × | 점퍼케이블 | 아마존 | |
1 | × | (옵션) DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 | |
1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 | |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
RFID/NFC RC522 모듈과 릴레이에 대한 구체적인 튜토리얼이 있습니다. 각 튜토리얼에는 하드웨어 핀아웃, 작동 원리, ESP32에 대한 배선 연결, ESP32 코드에 대한 자세한 정보와 단계별 지침이 포함되어 있습니다. 다음 링크에서 자세히 알아보세요:
ESP32 코드에는 사전에 정의된 여러 개의 인증된 RFID/NFC 태그의 UID가 있습니다
RFID/NFC 태그가 RFID/NFC 리더에 탭되었을 때
ESP32는 RFID/NFC 리더에서 UID를 읽습니다
ESP32는 사전 정의된 UID 목록에서 읽은 UID를 검색합니다
사전 정의된 UID 목록에 읽은 UID가 포함되어 있으면, ESP32는 릴레이를 활성화합니다.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32를 구동하는 방법.
※ 주의:
핀 순서는 제조업체에 따라 다를 수 있습니다. 항상 모듈에 인쇄된 레이블을 사용하세요. 위 이미지는 DIYables 제조업체의 모듈 핀배열을 보여줍니다.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5
#define RST_PIN 27
#define RELAY_PIN 32
MFRC522 rfid(SS_PIN, RST_PIN);
byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
Serial.println("RFID-RC522 리더기에 RFID/NFC 태그를 탭하세요");
}
void loop() {
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (rfid.uid.uidByte[0] == authorizedUID[0] &&
rfid.uid.uidByte[1] == authorizedUID[1] &&
rfid.uid.uidByte[2] == authorizedUID[2] &&
rfid.uid.uidByte[3] == authorizedUID[3] ) {
Serial.println("Authorized Tag");
digitalWrite(RELAY_PIN, HIGH);
delay(2000);
digitalWrite(RELAY_PIN, LOW);
}
else
{
Serial.print("Unauthorized Tag with UID:");
for (int i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(rfid.uid.uidByte[i], HEX);
}
Serial.println();
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
}
}
Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하세요.
검색 상자에 “MFRC522”를 입력한 다음, GithubCommunity에서 제공하는 라이브러리를 찾으세요.
Install 버튼을 클릭하여 라이브러리를 설치하세요.
다음 단계를 따라 태그의 UID를 찾으세요:
위의 코드를 복사하여 Arduino IDE에 붙여넣습니다.
Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP32 보드에 컴파일하고 업로드합니다.
Arduino IDE에서 시리얼 모니터를 엽니다.
RFID-RC522 리더기에 권한을 부여하고자 하는 RFID/NFC 태그를 탭하세요.
시리얼 모니터에 인쇄된 UID를 적어두세요.
Tap an RFID/NFC tag on the RFID-RC522 reader
Unauthorized Tag with UID: 2B B8 59 B1
위 코드의 18번째 줄에 있는 UID를 업데이트하세요. 예를 들어, byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};를 byte authorizedUID[4] = {0x2B, 0xB8, 0x59, 0xB1};로 변경하세요.
Tap an RFID/NFC tag on the RFID-RC522 reader
Authorized Tag
Tap an RFID/NFC tag on the RFID-RC522 reader
Authorized Tag
Unauthorized Tag with UID: 1C 2A 52 E3
아래의 ESP32 코드는 여러 개의 인증된 RFID/NFC 태그가 릴레이를 활성화할 수 있도록 합니다. 이 예제에서는 두 개의 태그를 사용합니다. 더 추가할 수 있습니다.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5
#define RST_PIN 27
#define RELAY_PIN 32
MFRC522 rfid(SS_PIN, RST_PIN);
byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB};
byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15};
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
Serial.println("Tap an RFID/NFC tag on the RFID-RC522 reader");
}
void loop() {
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (rfid.uid.uidByte[0] == authorizedUID1[0] &&
rfid.uid.uidByte[1] == authorizedUID1[1] &&
rfid.uid.uidByte[2] == authorizedUID1[2] &&
rfid.uid.uidByte[3] == authorizedUID1[3] ) {
Serial.println("Authorized Tag 1");
digitalWrite(RELAY_PIN, HIGH);
delay(2000);
digitalWrite(RELAY_PIN, LOW);
}
else
if (rfid.uid.uidByte[0] == authorizedUID2[0] &&
rfid.uid.uidByte[1] == authorizedUID2[1] &&
rfid.uid.uidByte[2] == authorizedUID2[2] &&
rfid.uid.uidByte[3] == authorizedUID2[3] ) {
Serial.println("Authorized Tag 2");
digitalWrite(RELAY_PIN, HIGH);
delay(2000);
digitalWrite(RELAY_PIN, LOW);
}
else
{
Serial.print("Unauthorized Tag with UID:");
for (int i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(rfid.uid.uidByte[i], HEX);
}
Serial.println();
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
}
}
Tap an RFID/NFC tag on the RFID-RC522 reader
Authorized Tag 1
Authorized Tag 2
코드를 수정하여 세 개, 네 개 또는 그 이상의 태그를 추가할 수 있습니다.
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.