Wiznet makers

jaden

Published July 13, 2026 ©

134 UCC

18 WCC

59 VAR

0 Contests

0 Followers

0 Following

Original Link

rj45alive

quickly check ethernet RJ45 sockets for connectivity

COMPONENTS Hardware components

WIZnet - W5500-EVB-Pico

x 1


PROJECT DESCRIPTION

W5500-EVB-Pico와 W5500 TOE로 휴대용 네트워크 체커를 만드는 방법은?

Summary

RJ45 Alive는 W5500-EVB-Pico와 1.3인치 LCD를 사용해 Ethernet 포트의 연결 상태와 네트워크 설정을 확인하는 휴대용 네트워크 체커다. RP2040은 MicroPython 애플리케이션과 화면 출력을 담당하고, W5500의 TCP/IP Offload Engine은 유선 Ethernet 및 UDP 소켓 통신을 처리한다. DHCP로 할당된 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버를 표시하고, 외부 DNS 서버에 질의를 보내 인터넷 연결 가능 여부도 확인한다.

What the Project Does

RJ45 Alive는 현장에서 노트북을 열지 않고도 벽면 RJ45 포트, 스위치 포트 또는 Ethernet 케이블의 기본 연결 상태를 확인하기 위한 장치다.

GitHub 저장소에는 W5500-EVB-Pico, 1.3인치 IPS LCD, MicroPython 프로그램, 3D 프린트용 케이스 파일이 포함되어 있다. 저장소 설명에서도 IP 주소와 DNS 정보를 표시하고 인터넷 연결을 확인하는 Raspberry Pi Pico 기반 도구라고 명시한다.

장치의 처리 흐름은 다음과 같다.

W5500 Ethernet 인터페이스를 활성화한다.

네트워크 연결 여부를 확인한다.

DHCP로 설정된 IP 주소, netmask, gateway, DNS 정보를 읽는다.

해당 정보를 240×240 LCD에 표시한다.

8.8.8.8의 UDP 53번 포트로 DNS 질의를 보낸다.

응답을 받으면 Internet : ONLINE, 받지 못하면 Internet : Offline을 표시한다.

ESP32 기반 HWANHEE NET-CHECKER와 공통점

비교 대상인 HWANHEE NET-CHECKER 역시 W5500을 Ethernet 인터페이스로 사용하는 휴대용 네트워크 진단 장치다. ESP32, W5500 모듈, ST7789 TFT, 로터리 엔코더, 버튼, 부저로 구성되며 IP 정보, DNS 상태, LAN 테스트, ARP 기반 IP 검색 기능 등을 제공한다.

두 프로젝트의 공통점은 다음과 같다.

항목RJ45 AliveHWANHEE NET-CHECKER
핵심 네트워크 장치W5500W5500
MCU 연결 방식SPISPI
주요 목적현장 Ethernet 연결 확인현장 LAN 진단
IP 정보 표시지원지원
Gateway 확인지원지원
DNS 정보 또는 상태 확인지원지원
화면 기반 인터페이스1.3인치 240×240 LCDST7789 320×240 TFT
휴대형 장치 지향
W5500 역할유선 Ethernet 및 소켓 처리유선 Ethernet, LAN 검사 및 ARP 검색

두 장치 모두 W5500을 사용해 무선 연결 상태가 아니라 실제 RJ45 포트의 유선 네트워크 상태를 검사한다. 또한 MCU가 화면과 진단 로직을 처리하고, W5500이 SPI 기반 Ethernet 인터페이스를 제공한다는 구조도 같다.

두 프로젝트의 차이점

가장 큰 차이는 기능 범위와 구현 복잡도다.

구분RJ45 AliveHWANHEE NET-CHECKER
메인 컨트롤러RP2040ESP32
하드웨어 형태W5500-EVB-Pico 통합 보드ESP32와 W5500 모듈 분리 구성
소프트웨어MicroPython공개 페이지에서 펌웨어 미제공
소스 공개 여부Python 코드와 케이스 파일 공개상세 펌웨어와 알고리즘 미공개
사용자 조작자동 반복 검사로터리 엔코더와 버튼 기반 메뉴
네트워크 설정DHCP 결과 표시 중심DHCP와 Static IP 모드
인터넷 검사고정 DNS 서버에 UDP 질의LAN TEST 및 DNS WATCH
ARP 기반 장치 검색미지원지원
Loop 감시미지원지원
Wi-Fi 보조 기능없음있음
음향 피드백없음부저 지원
프로젝트 성격단순하고 재현하기 쉬운 체커복합 기능을 갖춘 현장용 LAN 테스터

HWANHEE NET-CHECKER는 LAN TEST, IP INFO, DNS WATCH, LOOP WATCH, ARP 기반 IP SCAN을 제공하는 다기능 장치다. 특히 전체 ARP 검색에는 W5500 유선 경로가 필요하며, Wi-Fi 모드만으로는 전체 검색을 수행할 수 없다고 설명한다.

반면 RJ45 Alive는 IP 설정 표시와 외부 DNS 응답 확인에 집중한다. 기능은 적지만 전체 Python 코드가 공개되어 있고, 단일 메인 루프에서 동작하기 때문에 구조를 이해하고 재현하기가 쉽다.

따라서 두 프로젝트의 위치는 다음과 같이 구분할 수 있다.

RJ45 Alive: 빠르게 제작하고 복제할 수 있는 기본 Ethernet 연결 체커

HWANHEE NET-CHECKER: 메뉴, Static IP, ARP 검색, Loop 감시까지 포함한 확장형 LAN 진단기

HWANHEE NET-CHECKER 소개 페이지에는 펌웨어 소스, ARP 검색 알고리즘, Loop 감지 방식, DNS timeout 값이 공개되어 있지 않다. 따라서 기능 목록은 비교할 수 있지만 내부 구현 효율이나 진단 정확도를 코드 수준에서 직접 비교할 수는 없다.

Where WIZnet Fits

이 프로젝트에서 사용되는 WIZnet 제품은 W5500-EVB-Pico에 탑재된 W5500이다.

W5500은 Ethernet PHY만 제공하는 장치가 아니라, TCP, UDP, IPv4, ARP, ICMP와 하드웨어 소켓을 처리하는 TCP/IP Offload Engine을 포함한다. RP2040은 MicroPython의 network.WIZNET5K 인터페이스를 통해 W5500을 제어하고, 일반적인 소켓 API로 UDP DNS 질의를 수행한다.

각 구성 요소의 역할은 다음과 같다.

RP2040: MicroPython 실행, LCD 제어, 연결 결과 판단

W5500: Ethernet 링크, 네트워크 설정 레지스터, UDP 소켓 통신

DHCP 서버: IP, netmask, gateway, DNS 설정 제공

LCD: 네트워크 정보와 진단 결과 표시

W5500 TOE가 IP 주소나 DNS 서버를 자체적으로 검색하는 것은 아니다. IP 설정은 DHCP 서버로부터 제공되며, MicroPython 네트워크 드라이버가 DHCP 절차와 W5500 제어를 연결한다. 애플리케이션은 결과를 nic.ifconfig()로 읽는다.

TOE 사용의 핵심은 네트워크 설정 값을 읽는 함수 자체를 빠르게 만드는 데 있지 않다. TCP/IP 및 소켓 데이터 처리를 W5500 하드웨어로 분리해 RP2040의 RAM과 CPU 부담을 줄이고, 애플리케이션이 화면 출력과 진단 절차에 집중하도록 만드는 데 있다.

두 네트워크 체커 모두 이 구조적 장점을 활용한다. RJ45 Alive는 단순한 UDP DNS 검사에 사용하고, HWANHEE NET-CHECKER는 ARP 검색과 여러 진단 모드까지 W5500 유선 경로를 확장해 사용한다.

Implementation Notes

W5500 네트워크 인터페이스 초기화

파일: rj45alive.py

spi = SPI(
    0,
    2_000_000,
    mosi=Pin(19),
    miso=Pin(16),
    sck=Pin(18)
)

nic = network.WIZNET5K(spi, Pin(17), Pin(20))
nic.active(True)

이 코드는 RP2040의 SPI0을 2 MHz로 설정하고 W5500 네트워크 인터페이스를 생성한다.

network.WIZNET5K()에 전달되는 항목은 다음과 같다.

spi: RP2040과 W5500 사이의 SPI 통신

Pin(17): W5500 Chip Select

Pin(20): W5500 Reset

nic.active(True): Ethernet 인터페이스 활성화

W5500-EVB-Pico에는 RP2040과 W5500 사이의 SPI 연결이 보드 내부에 구성되어 있다. 별도의 W5500 모듈 배선 없이 해당 핀 설정을 사용해 네트워크 인터페이스를 활성화할 수 있다.

네트워크 정보 읽기

파일: rj45alive.py

if not nic.isconnected():
    LCD.text("disconnected...", 10, 30, LCD.white)
else:
    ip, netmask, gateway, dns = nic.ifconfig()

    LCD.text("IP addr: " + ip, 10, 30, LCD.white)
    LCD.text("Netmask: " + netmask, 10, 50, LCD.white)
    LCD.text("Gateway: " + gateway, 10, 70, LCD.white)
    LCD.text("DNS    : " + dns, 10, 110, LCD.white)

nic.isconnected()가 연결 상태를 확인하고, 연결된 경우 nic.ifconfig()가 다음 네 값을 반환한다.

IP 주소

서브넷 마스크

기본 게이트웨이

DNS 서버 주소

이 정보로 DHCP 주소가 정상적으로 할당되었는지, 예상한 네트워크 대역에 연결되었는지, 올바른 gateway와 DNS 설정을 받았는지 확인할 수 있다.

DNS 질의를 이용한 인터넷 연결 확인

파일: rj45alive.py

def pingdns(ip):
    packet = (
        b'$\x1a\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00'
        b'\x03www\x06google\x03com\x00\x00\x01\x00\x01'
    )

    s = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM)
    s.settimeout(1)
    s.connect((ip, 53))
    s.write(packet)

pingdns()라는 이름을 사용하지만 ICMP Echo 기반 ping은 아니다. UDP 소켓으로 지정된 DNS 서버의 53번 포트에 www.google.com A 레코드 질의를 보낸다.

메인 루프에서는 다음과 같이 검사한다.

online = pingdns("8.8.8.8")

응답을 받으면 최소한 다음 경로가 동작한다는 의미다.

W5500 Ethernet 링크

로컬 IPv4 설정

기본 게이트웨이

외부 네트워크 라우팅

UDP 53번 포트

Google Public DNS 응답

단, LCD에 표시되는 DHCP 제공 DNS 서버와 실제 검사 대상은 다르다. 화면에는 nic.ifconfig()가 반환한 DNS 주소가 표시되지만, 연결 검사는 고정된 8.8.8.8을 사용한다.

HWANHEE NET-CHECKER의 DNS WATCH 기능도 DNS 상태 점검을 목적으로 하지만, 공개된 콘텐츠에는 DNS 패킷 구성이나 성공 판정 코드가 포함되어 있지 않다. 따라서 RJ45 Alive의 구현과 코드 수준으로 직접 비교할 수는 없다.

Practical Tips / Pitfalls

코드에서 GPIO 16, 17, 18, 19, 20을 버튼 입력으로 먼저 선언한 뒤 W5500의 SPI, CS, Reset 핀으로 다시 사용한다. 해당 버튼을 실제로 사용하지 않는다면 선언을 제거하고, 사용할 계획이라면 W5500과 겹치지 않는 핀으로 변경해야 한다.

nic.active(True) 직후 DHCP가 완료되지 않을 수 있다. 연결 대기 상태와 DHCP 제한 시간을 별도로 표시하면 사용자가 케이블 단선과 주소 할당 지연을 구분할 수 있다.

현재 DNS 응답은 길이가 정확히 32바이트일 때만 성공으로 판단한다. DNS 응답 길이는 서버와 레코드에 따라 달라질 수 있으므로 transaction ID, QR 플래그, response code를 검사하는 편이 안전하다.

DHCP에서 제공된 DNS 서버도 검사하려면 pingdns("8.8.8.8")뿐 아니라 pingdns(dns)를 실행해야 한다. 두 결과를 분리하면 내부 DNS 장애와 외부 인터넷 장애를 구분할 수 있다.

HWANHEE NET-CHECKER와 비슷하게 확장하려면 DHCP/Static IP 선택, gateway 응답 검사, ARP 기반 호스트 검색, 메뉴 인터페이스를 추가할 수 있다. 다만 ARP 검색은 MicroPython의 일반 소켓 API만으로 구현하기 어려울 수 있으므로 드라이버의 Raw MAC 기능 지원 여부를 먼저 확인해야 한다.

Loop 감시는 단순한 인터넷 연결 검사와 다른 문제다. 브로드캐스트 패킷 증가율, 반복 수신 패턴 또는 스위치 상태를 분석해야 하며, 실제 운용 네트워크에 영향을 줄 수 있는 능동 테스트는 주의해야 한다.

현장용 장비에는 DHCP 실패, DNS timeout, 소켓 예외 발생 후에도 계속 동작할 수 있도록 예외 처리, 소켓 정리, W5500 재초기화 절차를 추가하는 것이 좋다.

FAQ

Q. 왜 RJ45 Alive와 HWANHEE NET-CHECKER 모두 W5500을 사용하나요?

두 프로젝트 모두 실제 유선 LAN 포트의 상태를 검사해야 하기 때문이다. W5500은 SPI 인터페이스, Ethernet PHY, 하드웨어 TCP/IP 스택과 소켓을 제공하므로 MCU가 화면과 진단 로직에 집중할 수 있다. HWANHEE NET-CHECKER에서는 전체 ARP 검색도 W5500 유선 경로를 필요로 한다.

Q. W5500-EVB-Pico에서는 W5500이 RP2040과 어떻게 연결되나요?

SPI0으로 연결된다. 제공된 코드에서는 GPIO 19가 MOSI, GPIO 16이 MISO, GPIO 18이 SCK이며 GPIO 17과 GPIO 20이 각각 CS와 Reset 역할을 한다. W5500-EVB-Pico에서는 이 연결이 보드에 포함되어 있다.

Q. W5500은 RJ45 Alive에서 구체적으로 무엇을 담당하나요?

W5500은 유선 Ethernet 링크, 네트워크 설정 유지, UDP 소켓 송수신을 담당한다. RP2040은 W5500에서 IP, netmask, gateway, DNS 정보를 읽고 DNS 응답 여부를 판단해 LCD에 표시한다.

Q. 두 프로젝트 중 어느 쪽이 초보자가 따라 하기 쉬운가요?

RJ45 Alive가 더 단순하다. MicroPython 소스가 공개되어 있고 실행 흐름이 W5500 초기화, 설정 정보 표시, DNS 검사로 제한되어 있다. HWANHEE NET-CHECKER는 메뉴, 로터리 엔코더, 부저, Static IP, ARP 검색, Loop 감시까지 포함하므로 하드웨어와 펌웨어 복잡도가 더 높다. 비교 콘텐츠에는 전체 펌웨어가 공개되어 있지 않아 그대로 복제하기도 어렵다.

Q. RJ45 Alive와 ESP32 Wi-Fi 기반 네트워크 체커의 차이는 무엇인가요?

Wi-Fi 기반 체커는 인터넷 접속이나 무선 네트워크 상태는 확인할 수 있지만, 점검 대상 RJ45 포트가 실제로 활성화되어 있는지는 확인할 수 없다. W5500은 테스트할 케이블과 포트에 직접 연결되므로 DHCP 할당과 유선 LAN 상태를 검사할 수 있다. ARP 기반 전체 LAN 검색 역시 비교 프로젝트에서는 W5500 유선 연결을 요구한다.

Source

RJ45 Alive: mikerr/rj45alive, W5500-EVB-Pico 기반 Ethernet 연결 체커. Python 소스와 3D 프린트용 STL 파일을 제공한다. 저장소에는 별도의 소프트웨어 라이선스가 명시되어 있지 않다.

비교 프로젝트: ESP32 + W5500 + TFT 기반 HWANHEE NET-CHECKER 제작기, WIZnet Makers, TheoIm, 2026년 7월 7일 게시. 원본 프로젝트의 라이선스는 명시되어 있지 않다.

비교 범위: 공개된 하드웨어 구성과 기능 설명을 기준으로 비교했다. HWANHEE NET-CHECKER의 펌웨어 소스와 세부 알고리즘은 공개 페이지에서 확인되지 않는다.

Tags

#W5500 #W5500EVBPico #RP2040 #ESP32 #MicroPython #TCPIPOffload #Ethernet #NetworkChecker #LANTester #DHCP #DNS #ARPScan

Documents
Comments Write