산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노·ENC28J60·MFRC522로 네트워크 연동 RFID 리더기 만들기

부품 및 소모품

부품 수량 비고
MFRC522 RFID 리더 모듈 (MIFARE 호환) 1 SPI 방식이면 어떤 타입이든 무관
아두이노 우노 (또는 나노/메가 등) 1 보드에 맞게 핀 번호 수정 필요
ENC28J60 이더넷 모듈/실드 1 타 이더넷 칩셋 사용 시 코드 수정 필요
점퍼 와이어 (수-수, 수-암) 1세트
브레드보드 1
컴퓨터 (TCP 서버 구동용) 1 동일 네트워크 접속 필요

필요 도구

앱 및 온라인 서비스

프로젝트 배경

RFID 출입통제/모니터링 시스템은 상용 제품이 200~2000달러로 고가입니다. 필자와 친구는 100달러 미만으로 더 많은 기능을 구현하고자 했습니다. 그 결과물인 인터넷 연동 아두이노 RFID 태그 리더기는 단 20달러 추가로 도어락 연동도 가능합니다. 고등학교 학생 출석 관리 시스템으로 기획되었으며, 학교 승인을 기다리고 있습니다.

하드웨어 연결 (아두이노 나노 기준)

  1. 아두이노를 브레드보드에 장착
  2. 보드별 SPI 핀아웃 확인 후 아래 연결:
    • 아두이노 10번(SS) → 이더넷 모듈 SS/CS
    • 아두이노 12번(MISO) → RFID MISO, 이더넷 SO
    • 아두이노 11번(MOSI) → RFID MOSI, 이더넷 SI
    • 아두이노 13번(SCK) → RFID SCK, 이더넷 SCK
    • 아두이노 9번 → RFID RST
    • 아두이노 8번 → RFID SSN (이더넷이 10번 사용하므로 별도 할당)
    • 아두이노 5,4,3번 → RGB LED (G, B, R)
  3. AC-DC 어댑터(3.3V/5V, 700mA 이상) → 브레드보드 전원 레일
  4. 아두이노 GND ↔ 어댑터 GND 공통 접지
  5. 주의: RFID와 이더넷 모듈은 3.3V 전용입니다. 5V 직결 시 손상! 저항 분할 또는 3.3V 레귤레이터 필수
  6. 이더넷 케이블 연결 → 컴퓨터와 동일 공유기/네트워크에 물릴 것
  7. USB로 아두이노-PC 연결

사전 준비: 필수 라이브러리 설치

  1. UIPEthernet: GitHub에서 다운로드 → Arduino/libraries/에 압축 해제
  2. MFRC522: GitHub에서 다운로드 → 동일 경로에 설치
  3. 아두이노 IDE 재시작

코드 수정 포인트 (네트워크 설정)

// MAC 주소 (여러 대 만들 때만 변경)
uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};

// 아두이노 고정 IP (자사 네트워크 대역에 맞게)
IPAddress mip(192,168,1,160);
IPAddress mdns(8,8,8,8);        // DNS (구글 DNS 또는 공유기 IP)
IPAddress mgate(192,168,1,5);   // 게이트웨이 (공유기 IP, ipconfig로 확인)
IPAddress msubnet(255,255,255,0);
Ethernet.begin(mac, mip, mdns, mgate, msubnet);

// 서버 전송 대상 IP/포트 (PC에서 ipconfig로 확인)
client.connect(IPAddress(192,168,1,100), 23); // 포트 23(텔넷)

PC 측 TCP 서버 예제 (파이썬)

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data
        # 여기에 SQL 조회 등 로직 추가
        # if (self.data == 허용된_카드_ID): self.request.sendall("g")
        # else: self.request.sendall("bb")
        self.request.sendall("g")  // 테스트용: 무조건 허용

if __name__ == "__main__":
    HOST, PORT = "", 23
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()

실행 및 테스트 절차

  1. AC-DC 어댑터 전원 연결
  2. 아두이노 USB 연결, 네트워크 동일 확인
  3. 수정된 아두이노 코드 업로드
  4. PC에서 파이썬 서버 실행 (python server.py)
  5. 아두이노 리셋 → 파란 LED 대기 상태 확인
  6. RFID 카드 태깅 → 서버 콘솔에 카드 ID 출력 및 녹색 LED(성공) 또는 빨간 LED(실패) 확인

LED 상태 표시 의미

색상/패턴 의미
보라/빨강 페이드 부팅 중
파랑 대기 중 (카드 또는 서버 응답 기다림)
초록 인증 성공 (서버 응답 'g' 수신)
빨강 에러 (카드 각도 불량, 서버 타임아웃, 인증 실패 등)
30초 이상 지연 후 빨강 서버 연결 실패 (전원 부족, 방화벽, 네트워크 불일치 등)

문제 해결 팁

소스 코드 저장소

최신 버전: GitHub - InternetRFIDTags

회로도

아두이노·ENC28J60·MFRC522로 네트워크 연동 RFID 리더기 만들기

케이블 색상 규칙: 빨강=전원(+), 검정=그라운드(-), 노랑=IR 센서 신호, 주황/초록=바이컬러 LED, 보라=모터 방향, 파랑=모터 속도(PWM)

제조공정

  1. 그리팅 카드 산업: 역사, 생산, 미래 트렌드
  2. 신용카드: 역사, 설계, 제조, 미래 트렌드
  3. 아두이노와 RC522 RFID로 보안 도어락 만들기 (MIFARE 13.56MHz)
  4. 아두이노 RFID 도어락 만들기 – 단계별 완벽 가이드
  5. 파이썬 연동 아두이노 RFID 출석 관리 시스템 구축하기
  6. 블루투스 제어 아두이노 스파이봇(Spybot) 만들기
  7. 플릭모트(FlickMote): 스마트 홈을 위한 제스처 제어 IR 리모컨
  8. DIY 아두이노 TV B-Gone: 모든 TV를 끄는 만능 리모컨
  9. 아두이노로 만드는 대형 LED 마스터 시계 (알람 기능 포함, 12m 거리에서도 식별 가능)
  10. 아두이노 기반 아마가 플로피 디스크 리더 - 저렴한 오픈소스 데이터 복구 솔루션