라즈베리 파이 RFID 서보 모터
이 튜토리얼은 Raspberry Pi와 RFID NFC RC522 모듈을 사용하여 서보 모터를 제어하는 방법을 안내합니다. 과정은 다음과 같이 진행됩니다:
- 허가된 태그가 태그될 때 라즈베리 파이는 서보 모터를 90° 회전시킵니다.
- 동일한 허가된 태그가 다시 태그될 경우, 라즈베리 파이는 서보 모터를 0°로 되돌립니다.
- 이 사이클은 계속 반복됩니다.
이는 캐비닛, 서랍, 문을 잠그거나, 반려동물 급식기를 열고 닫는 데 사용할 수 있습니다...
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 | × | Servo Motor | 쿠팡 | Amazon | |
1 | × | 5V Power Adapter | Amazon | |
1 | × | DC Power Jack | 쿠팡 | Amazon | |
1 | × | 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 모듈 및 서보 모터(핀 배치, 작동 방식, 프로그래밍 방법 포함)에 익숙하지 않은 경우, 다음 튜토리얼에서 더 많은 정보를 제공할 수 있습니다:
- Raspberry Pi - RFID/NFC RC522 tutorial
- Raspberry Pi - Servo Motor tutorial
작동 방식
- 특정 RFID/NFC 태그의 UID가 라즈베리 파이 코드에 프로그래밍되어 있습니다.
- 사용자가 RFID/NFC 태그를 RFID/NFC 리더기에 접촉하면, 리더기가 태그로부터 UID를 읽어냅니다.
- 라즈베리 파이는 리더기로부터 UID를 수신하여 사전 정의된 UID와 비교합니다.
- UID가 사전 정의된 UID 중 하나와 일치하면, 라즈베리 파이는 서보 모터를 90°로 제어합니다.
- 태그가 다시 접촉되면, 라즈베리 파이는 서보 모터를 0°로 되돌립니다.
- 이 과정은 계속 반복됩니다.
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:
위의 배선도에서 5V 어댑터는 Raspberry Pi의 3.3V 핀을 통해 간접적으로 Raspberry Pi, 서보 모터 및 RC522 모듈에 전원을 공급하는 데 사용됩니다.
※ NOTE THAT:
핀 배열은 제조업체에 따라 다를 수 있습니다. 항상 모듈에 인쇄된 라벨을 사용하세요. 위 이미지는 DIYables 제조업체의 모듈 핀 배치를 보여줍니다.
간단함을 위해 위의 배선도는 테스트나 교육용으로 사용되며, 작은 토크의 서보 모터에 적합합니다. 실제로는 서보 모터에 외부 전원을 사용하는 것이 좋습니다. 서보 모터에 외부 전원을 공급하는 방법에 대해서는 Raspberry Pi - Servo Motor 튜토리얼을 참조하세요.
RFID/NFC RC522 모듈의 배선 표
RFID/NFC RC522 | Raspberry Pi |
---|---|
SS | → GPIO 8 (SPI0 CS) |
SCK | → GPIO 11 (SPI0 SCL) |
MOSI | → GPIO 10 (SPI0 MOSI) |
MISO | → GPIO 9 (SPI0 MISO) |
IRQ | not connected |
GND | → Any GND Pin |
RST | → Pin 31 (GPIO12) |
VCC | → Pin 1 or Pin 16 (3.3V) |
서보 모터 배선 표
Servo Motor | Arduino | 5V DC Adapter |
---|---|---|
VCC (red) | → positive | |
GND (brown) | → negative | |
SIG (yellow) | → A5 |
5V DC 어댑터의 배선표
5V DC Adapter | Servo Motor | Raspberry Pi |
---|---|---|
Positive | → VCC | |
Positive | -> Vin | |
Negative | → GND | |
Negative | → GND |
라즈베리 파이 코드 - 단일 RFID/NFC 태그
Detailed Instructions
- Raspberry Pi에 Raspbian 또는 다른 호환되는 운영 체제가 설치되어 있는지 확인하십시오.
- PC와 동일한 로컬 네트워크에 Raspberry Pi가 연결되어 있는지 확인하십시오.
- 일부 라이브러리를 설치해야 하는 경우 인터넷에 연결되어 있는지 확인하십시오.
- Raspberry Pi를 처음 사용하는 경우, Raspberry Pi 설정 방법을 참조하십시오.
- Linux 및 macOS의 내장 SSH 클라이언트 또는 Windows의 PuTTY를 사용하여 SSH를 통해 PC를 Raspberry Pi에 연결하십시오. SSH를 통해 PC를 Raspberry Pi에 연결하는 방법을 참조하십시오.
- RPi.GPIO 라이브러리가 설치되어 있는지 확인하십시오. 그렇지 않으면 다음 명령어를 사용하여 설치하십시오:
- Raspberry Pi에서 SPI 인터페이스를 활성화하려면 Raspberry Pi - SPI 인터페이스 활성화 방법의 지침을 따르십시오.
- spidev 라이브러리가 설치되어 있는지 확인하십시오. 설치되어 있지 않으면 다음 명령어를 사용하여 설치하십시오:
- mfrc522 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않으면 다음 명령어를 사용하여 설치하세요.
- Python 스크립트 파일 rfid_servo.py를 생성하고 다음 코드를 추가하세요:
- 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하십시오.
스크립트는 터미널에서 Ctrl + C를 누를 때까지 계속해서 무한 루프로 실행됩니다.
RFID/NFC 태그의 UID를 식별하려면, RFID-RC522 모듈에 RFID/NFC 태그를 접촉하세요. UID는 터미널에서 확인할 수 있습니다.
UID를 가지고 있으면:
- 코드의 20번째 줄을 UID로 대체합니다. 예를 들면 byte authorizedUID[4] = {0x3A, 0xC9, 0x6A, 0xCB};
- 파이썬 스크립트를 다시 실행합니다.
- RFID-RC522 모듈에 RFID/NFC 태그를 놓습니다
- 서보 모터가 90°로 회전합니다
- 터미널에서 출력을 확인합니다
- RFID-RC522 모듈에 다시 한 번 동일한 RFID/NFC 태그를 태깅하세요.
- 서보 모터가 0°로 회전하는 것을 확인하세요.
- 터미널에서 출력을 확인하세요.
- RFID-RC522 모듈에 RFID 또는 NFC 태그를 대십시오.
- 터미널에서 출력을 확인하십시오.
라즈베리 파이 코드 - 다중 RFID/NFC 태그
우리는 여러 RFID/NFC 태그를 사용하여 서보 모터를 제어할 수 있습니다. 예를 들어, 아래 코드는 세 개의 RFID 태그를 사용합니다.
이전과 동일한 절차를 반복한 후 RFID-RC522 모듈에서 각각의 태그를 차례로 탭하십시오. 터미널의 출력은 다음과 같이 나타나야 합니다.
위의 코드를 확장하여 네 개 이상의 RFID 태그를 포함할 수 있습니다.
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.