라즈베리 파이 RFID 릴레이

이 튜토리얼은 Raspberry Pi와 RFID/NFC RC522 리더기를 사용하여 릴레이를 제어하는 방법을 안내합니다. 이 튜토리얼을 더욱 발전시켜 릴레이로 도어 잠금 장치, 전구, 모터, 액추에이터 등을 제어할 수도 있습니다.

Hardware Preparation

1×Raspberry Pi 4 Model B Amazon
1×RFID/NFC RC522 Kit (reader + tags) 쿠팡 | Amazon
1×RFID Key Fob 쿠팡 | Amazon
1×RFID Card Amazon
1×Relay Amazon
10×Jumper Wires Amazon
1×(추천) Screw Terminal Block Shield for Raspberry Pi 쿠팡 | Amazon
1×(추천) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B Amazon
1×(추천) Plastic Case and Cooling Fan for Raspberry Pi 4B Amazon
1×(추천) HDMI Touch Screen Monitor for Raspberry Pi Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

RFID/NFC RC522 모듈 및 릴레이 소개

RFID/NFC RC522 모듈 및 릴레이(핀아웃, 작동 방식, 프로그래밍 방법 등)에 익숙하지 않은 경우, 다음 튜토리얼이 지식을 얻는 데 도움이 될 것입니다:

작동 방식

  • 일부 RFID/NFC 태그는 Raspberry Pi 코드에 사전 정의된 UID를 가지고 있습니다.
  • 사용자가 RFID/NFC 리더에 RFID/NFC 태그를 대면, 리더가 태그에서 UID를 읽습니다.
  • 그런 다음 Raspberry Pi는 리더로부터 UID를 받아 사전 정의된 UID와 비교합니다.
  • UID가 사전 정의된 UID 중 하나와 일치하면, Raspberry Pi가 릴레이를 활성화합니다.

Wiring Diagram

라즈베리 파이 RFID RC522 릴레이 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:

Raspberry Pi Screw Terminal Block Shield

※ NOTE THAT:

핀의 배열은 제조업체에 따라 다를 수 있습니다. 항상 모듈에 인쇄된 라벨을 사용하세요. 위 이미지는 DIYables 제조사의 모듈 핀 배치를 보여줍니다.

라즈베리 파이 코드 - 단일 RFID/NFC 태그

Detailed Instructions

  • Raspberry Pi에 Raspbian 또는 기타 Raspberry Pi 호환 운영 체제가 설치되어 있는지 확인하세요.
  • Raspberry Pi가 PC와 동일한 로컬 네트워크에 연결되어 있는지 확인하세요.
  • 라이브러리를 설치해야 하는 경우 Raspberry Pi가 인터넷에 연결되어 있는지 확인하세요.
  • Raspberry Pi를 처음 사용하는 경우, Raspberry Pi 설정 방법을 참조하세요.
  • Linux 및 macOS의 기본 SSH 클라이언트를 사용하거나 Windows의 PuTTY를 사용하여 PC를 SSH를 통해 Raspberry Pi에 연결하세요. SSH를 통해 PC를 Raspberry Pi에 연결하는 방법을 참조하세요.
  • RPi.GPIO 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않으면 다음 명령을 사용하여 설치하세요.
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Raspberry Pi에서 SPI 인터페이스를 활성화하려면 Raspberry Pi - SPI 인터페이스 활성화 방법의 지침을 따르세요.
  • spidev 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않다면 다음 명령어를 사용하여 설치하세요:
sudo apt-get install python3-pip python3-dev git sudo pip3 install spidev
  • mfrc522 라이브러리가 설치되어 있는지 확인하십시오. 설치되어 있지 않다면, 다음 명령어를 사용하여 설치하십시오:
sudo pip3 install mfrc522
  • Python 스크립트 파일 rfid_relay.py를 생성하고 다음 코드를 추가하세요:
# 이 Raspberry Pi 코드는 newbiely.kr 에서 개발되었습니다 # 이 Raspberry Pi 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. # 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: # https://newbiely.kr/tutorials/raspberry-pi/raspberry-pi-rfid-relay import RPi.GPIO as GPIO import MFRC522 import time # Define GPIO pins RC522_RST_PIN = 12 # GPIO pin connected to RC522's RST pin RELAY_PIN = 16 # GPIO pin connected to relay # Set up GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(RELAY_PIN, GPIO.OUT, initial=GPIO.LOW) # Create an instance of the RFID reader reader = MFRC522.MFRC522() authorized_uid = [0xFF, 0xFF, 0xFF, 0xFF] try: print("Tap RFID/NFC Tag on reader") while True: (status, TagType) = reader.MFRC522_Request(reader.PICC_REQIDL) if status == reader.MI_OK: (status, uid) = reader.MFRC522_Anticoll() if status == reader.MI_OK: if uid == authorized_uid: print("Authorized Tag") GPIO.output(RELAY_PIN, GPIO.HIGH) # activate the relay for 2 seconds time.sleep(2) GPIO.output(RELAY_PIN, GPIO.LOW) # deactivate the relay else: print(f"Unauthorized Tag with UID: {' '.join(format(b, '02x') for b in uid)}") except KeyboardInterrupt: GPIO.cleanup()
  • 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하세요:
python3 rfid_relay.py

스크립트는 터미널에서 Ctrl + C를 누를 때까지 계속해서 무한 루프를 실행합니다.

RFID/NFC 태그의 UID를 식별하려면:

  • 위 코드를 실행하고 RFID-RC522 모듈의 태그를 터치하세요.
  • UID가 시리얼 모니터에 표시됩니다.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Unauthorized Tag with UID: 3A C9 6A CB

UID를 얻은 후:

  • 코드의 18번째 줄을 UID에 맞게 변경합니다. 예를 들어 byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};로 변경합니다.
  • 코드를 라즈베리 파이에 업로드합니다.
  • RFID-RC522 모듈에 RFID/NFC 태그를 놓습니다.
  • 시리얼 모니터에서 출력을 확인합니다.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag
  • RFID-RC522 모듈에 다른 RFID/NFC 태그를 대십시오.
  • 시리얼 모니터에서 출력을 확인하십시오.
PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag Unauthorized Tag with UID: BD 1E 1D 00

※ NOTE THAT:

  • 테스트를 용이하게 하기 위해 활성 시간은 2초로 설정되어 있지만, 실제 사용이나 시연을 위해서는 시간을 늘려야 합니다.
  • MFRC522 라이브러리 설치가 필요합니다. 자세한 내용은 Raspberry Pi - RFID/NFC RC522 튜토리얼을 참조하십시오.

라즈베리 파이 코드 - 여러 RFID/NFC 태그

여러 개의 RFID/NFC 태그를 통해 릴레이를 활성화할 수 있습니다. 아래 코드는 세 개의 RFID 태그를 예시로 보여줍니다.

# 이 Raspberry Pi 코드는 newbiely.kr 에서 개발되었습니다 # 이 Raspberry Pi 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. # 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: # https://newbiely.kr/tutorials/raspberry-pi/raspberry-pi-rfid-relay import RPi.GPIO as GPIO import MFRC522 import time # Define GPIO pins RC522_RST_PIN = 12 # GPIO pin connected to RC522's RST pin RELAY_PIN = 16 # GPIO pin connected to relay # Set up GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(RELAY_PIN, GPIO.OUT, initial=GPIO.LOW) # Create an instance of the RFID reader reader = MFRC522.MFRC522() # List of authorized UIDs authorized_uids = [ [0xAA, 0xBB, 0xCC, 0xDD], [0x11, 0x22, 0x33, 0x44], [0xFF, 0xFF, 0xFF, 0xFF] ] def is_authorized(uid): for auth_uid in authorized_uids: if uid == auth_uid: return True return False try: print("Tap RFID/NFC Tag on reader") while True: (status, TagType) = reader.MFRC522_Request(reader.PICC_REQIDL) if status == reader.MI_OK: (status, uid) = reader.MFRC522_Anticoll() if status == reader.MI_OK: if is_authorized(uid): print("Authorized Tag") GPIO.output(RELAY_PIN, GPIO.HIGH) # activate the relay for 2 seconds time.sleep(2) GPIO.output(RELAY_PIN, GPIO.LOW) # deactivate the relay else: print(f"Unauthorized Tag with UID: {' '.join(format(b, '02x') for b in uid)}") except KeyboardInterrupt: GPIO.cleanup()

이전과 같은 단계를 반복한 후, RFID-RC522 모듈의 각 태그를 터치하십시오. 시리얼 모니터에서 보게 될 결과는 아래와 유사할 것입니다:

PuTTY - Raspberry Pi
Tap RFID/NFC tag on reader Authorized Tag Authorized Tag

위에서 언급한 코드를 확장하여 네 개 이상의 RFID 태그를 포함할 수 있습니다.

Video Tutorial

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.