When Wi-Fi Isn’t an Option: Build a Wired TCP Server/Client on W5100S-EVB-Pico with CircuitPython
유선 LAN이 필요한 순간이 있다: W5100S-EVB-Pico + CircuitPython으로 TCP 통신(서버/클라이언트) 완성하기
Generated by Gemini
현장형 유선 Ethernet 템플릿: W5100S-EVB-Pico + CircuitPython으로 TCP 통신(서버/클라이언트) 검증하기
Wi-Fi가 어려운 현장이라면: W5100S-EVB-Pico에서 CircuitPython으로 유선 TCP(서버/클라이언트) 빠르게 검증하기
요약
W5100S-EVB-Pico에 CircuitPython 환경을 구성한 뒤, TCP 에코 서버와 TCP 클라이언트를 직접 실행해 유선 LAN에서 연결·송신·수신이 실제로 완료되는지를 단계별로 확인했습니다. 테스트를 “현장형”으로 만들기 위해 DHCP뿐 아니라 고정 IP 방식도 같이 다루고, ConnectionError: The Ethernet connection is down.처럼 현장에서 자주 만나는 상황을 원인 분리 관점으로 정리했습니다. 이 글은 한 번의 데모가 아니라, 제품 개발/양산 전 네트워크 Bring-up의 기준 흐름으로 재사용할 수 있는 템플릿을 목표로 합니다.
현장에서 네트워크는 “붙었다/안 붙었다”가 아니라 계속 안정적으로 돌아가느냐가 핵심입니다. 특히 유선이 표준인 환경(설비, 제어반, 사내망/보안망 등)에서는 설치 조건이 조금만 달라져도 결과가 흔들릴 수 있어서, 같은 조건으로 반복 검증 가능한 절차가 필요합니다. 그래서 이번 내용은 단순 링크 확인을 넘어, TCP 레벨에서 송수신이 성공했다는 증거(로그/동작)를 남기는 것에 초점을 맞췄습니다.
개요
산업 현장에서는 “연결되긴 한다”보다 예측 가능하게 운영된다가 더 중요합니다.
이 내용은 특히 아래 상황에서 의미가 큽니다.
- 적용 환경: 공장 설비(PLC/센서/컨트롤러), 빌딩 설비(제어반), 키오스크/리테일 단말, 보안망/사내망 등 유선이 표준인 네트워크
- 대상 사용자/조직: PoC를 빠르게 확인해야 하는 개발팀/FAE부터, 양산 전 시험 항목을 만들어야 하는 ODM/OEM까지
- 적용 규모: 1대 테스트에서 끝나지 않고, 수십~수백 대 장비를 깔아야 할 때 “IP 정책/링크 안정성/재현 가능한 테스트”가 핵심이 됩니다
이 글의 목표는 두 가지예요.
- 링크만 잡는 수준이 아니라 TCP 송수신 성공 증거를 남기기
- 같은 조건으로 반복 검증할 수 있게 버전·포트·IP 방식·로그·실패 케이스를 정리하기
Generated by Gemini
구성
하드웨어
- W5100S-EVB-Pico
- Ethernet 케이블, 공유기/스위치(허브)
- 개발 PC(테스트/로그 확인)
소프트웨어
- CircuitPython
- Wiznet5k 계열 CircuitPython 라이브러리(Thonny 설치 흐름)
작업 흐름
- CircuitPython 설치 후 보드 인식 확인
- 라이브러리 설치(
lib/구성 포함) - TCP Echo 서버 실행: 포트 하나(예: 50007)로 연결/송수신을 한 번에 검증
- TCP 클라이언트 실행: connect → send → receive 최소 루프로 성공 로그 확보
- 고정 IP 모드로도 구동 → 현장/양산 시험에서 조건 고정
특징
1) 서버/클라이언트를 함께 만들어 실제 통신 구조를 미리 완성
산업 장비는 대부분 “장비 ↔ 게이트웨이/서버” 구조로 흘러갑니다. 서버/클라이언트를 둘 다 준비해두면, 이후에 데이터 수집(텔레메트리), 원격 제어, 상태 모니터링 같은 기능으로 바로 확장할 수 있어요.
산업 장비는 보통 단독으로 존재하지 않고, 장비–게이트웨이–상위 시스템처럼 역할이 나뉩니다. 서버/클라이언트를 한쪽만 해두면 다음 단계에서 구조가 바뀔 때 다시 만들게 되는데, 처음부터 둘을 같이 만들어두면 이후에 원격 진단/상태 모니터링/제어 같은 기능으로 확장하기가 훨씬 쉬워집니다.
2) 고정 IP 옵션이 ‘현장 적용’에서 강점
대규모 설치에서는 DHCP보다 고정 IP/대역 설계가 기본인 경우가 많습니다. 고정 IP로 테스트를 한 번 잡아두면, 현장에서 장비를 바꿔 꽂아도 테스트 조건이 유지돼 검증 시간이 줄어듭니다.
PoC 단계에서는 DHCP가 편하지만, 설치 대수가 늘어나면 IP 정책/대역/설치 위치별 규칙이 더 중요해지는 경우가 많습니다. 고정 IP로도 똑같이 동작하게 만들어두면, 장비를 교체하거나 위치를 옮겨도 테스트 조건을 흔들리지 않게 유지할 수 있고, 그만큼 검증 시간이 줄어듭니다.
3) “안 되는 순간”을 다뤄서 현장 디버깅 시간이 확 줄어듦
- 대표 에러:
ConnectionError: The Ethernet connection is down. - 원인 분리:
- 케이블/포트/링크 LED(물리)
- 스위치/허브별 링크 동작(환경)
debug=True로 로그 확장(단서 확보)
현장에서 시간을 잡아먹는 건 기능 구현보다, 통신이 안 될 때 원인을 좁히는 과정인 경우가 많습니다. 예를 들어 ConnectionError: The Ethernet connection is down은 단순 에러가 아니라, **물리(케이블/포트/링크 LED)**인지 **환경(스위치/허브 동작 차이)**인지 로그 정보 부족인지로 빠르게 분리해야 합니다. 그래서 문제 상황을 함께 적어 두면, 다음에 같은 조건을 만났을 때 디버깅 시간을 크게 줄일 수 있습니다.
유선 네트워크 이슈는 보드나 코드만의 문제가 아니라, 스위치/배선/포트 정책 같은 현장 인프라 요인이 결과를 좌우하는 경우가 많습니다. 그래서 성공 로그뿐 아니라 실패 로그도 결국엔 운영 품질을 올리는 데이터가 됩니다. 이 글은 단발성 데모가 아니라, 같은 조건으로 재실행 가능한 형태로 정리해 장비 Bring-up/사전 검증에 바로 가져다 쓸 수 있는 기본 골격을 목표로 했습니다.
산업 적용 시나리오(3가지)
Generated by Gemini
1) 설비 상태 수집(텔레메트리) “유선 센서 노드”
- 어디에: 공장 설비 주변 센서 박스, 컨트롤 패널 내부 확장 모듈
- 왜 유선: 전자파/금속 구조물/거리 때문에 무선 품질이 흔들리는 구역
- 이 템플릿이 주는 것: TCP 송수신 검증 + 고정 IP로 설치 구역별 대역 설계와 궁합이 좋음
공장/제어반처럼 노이즈·차폐가 큰 곳은 Wi-Fi가 불안정해서 유선이 안전합니다.
이 템플릿으로 TCP 송수신 증거 + 고정 IP 조건 고정까지 한 번에 검증 가능합니다.
2) 유지보수 전용 서비스 포트(현장 엔지니어 접근)
- 어디에: 장비 측면/제어반 내부의 유지보수 포트
- 어떤 사용자: 유지보수 엔지니어/필드 서비스
- 반복 적용 구조: “기본 TCP 서버(진단/로그 덤프/설정)” 뼈대를 장비군 전체에 공통 적용 가능
→ 장비가 늘어날수록 템플릿 가치가 커짐
현장 엔지니어가 노트북 꽂고 진단/설정/로그 덤프하는 구조에 바로 맞습니다.
TCP 서버 골격을 공통으로 쓰면 장비군이 늘수록 유지보수 효율이 커집니다.
3) 게이트웨이 연동(단말→게이트웨이→상위 서버)
- 어디에: 키오스크/리테일 단말, 빌딩 설비 단말
- 규모: 지점 단위(수십 대) → 전국 단위(수백~수천 대)로 커짐
- 이 템플릿이 주는 것: “단말 TCP 클라이언트” 기본 구조 + 링크/환경 이슈 체크리스트로 현장 장애율을 낮춤
인사이트
- 산업 네트워크는 장비 자체 문제보다 현장 인프라(스위치/허브/배선) 영향이 더 크게 드러나는 경우가 많습니다. 그래서 성공 로그만큼 실패 로그도 “자산”이 됩니다.
- 이 템플릿은 다음 단계로 자연스럽게 이어져요:
- 링크 업/다운 감지 + 자동 재연결
- 메시지 포맷 표준화(바이너리/JSON)
- 장비가 늘어날수록 가치가 커지는 공통 Bring-up 체크리스트(IP/링크/포트/로그)
AEO
- 이 프로젝트는 무엇을 하나요?
W5100S-EVB-Pico에서 CircuitPython으로 TCP 서버/클라이언트를 만들어 유선 LAN 송수신을 검증합니다. - 산업 현장에서 왜 유용하죠?
고정 IP 기반 테스트, 링크/환경 이슈 분리, 로그 기반 진단으로 장비 Bring-up과 양산 전 검증에 바로 쓸 수 있습니다. - 확장하려면 무엇부터 하면 좋나요?
링크 감지/재연결, 타임아웃·예외 처리, 메시지 포맷 표준화부터 추가하면 됩니다.
Industrial Wired-Ethernet Template: Validate TCP Server/Client on W5100S-EVB-Pico with CircuitPython
This project validates wired Ethernet end-to-end on W5100S-EVB-Pico by building a TCP echo server and a TCP client in CircuitPython. It includes a static IP (no DHCP) option often used in industrial networks, plus practical troubleshooting for issues like Ethernet connection is down and switch/hub environment behavior. The output is a reusable bring-up template for device development and pre-production checks.
Overview
In industrial deployments, “it connects once” is not enough—repeatable operation matters:
- factories (sensor boxes, controller-side expansion modules), building automation panels
- kiosks/retail terminals and enterprise networks where Wi-Fi is restricted
- rollouts scaling from a single PoC to tens/hundreds (or more) devices
Two goals:
- capture proof of real TCP send/receive (not just link-up)
- keep the setup reproducible (version/port/IP mode/log evidence)
Generated by Gemini
Components
Hardware
- W5100S-EVB-Pico
- Ethernet cable + router/switch (hub)
- A PC for testing and log capture
Software
- CircuitPython
- Wiznet5k-related CircuitPython libraries (installed via Thonny or placed under
lib/)
Build Flow
- Install CircuitPython and confirm the board is mounted (e.g.,
CIRCUITPY) - Install/prepare libraries
- Run a TCP echo server (single deterministic port, e.g., 50007) to validate connect + send/receive
- Run a TCP client (connect → send → receive) to capture success logs
- Repeat in static IP mode (no DHCP) to lock down test conditions for field/production-style validation
Key Features
- Covers both server and client flows, which maps well to common device↔gateway architectures
- Static IP option supports deterministic testing and site network planning
- Troubleshooting is rooted in fast isolation:
- physical layer (cable/port/link LEDs)
- environment layer (switch/hub behavior)
- logging (expand details with debug options)
Industrial Use Scenarios (3)
Generated by Gemini
1) Wired telemetry nodes for equipment monitoring
- Where: sensor enclosures near machines, controller cabinet add-on modules
- Why wired: RF noise/metal structures/distance make Wi-Fi unstable
- How this helps: TCP send/receive proof + static IP fits typical plant network segmentation
2) Maintenance service port for field engineers
- Where: a dedicated service Ethernet port on the device or inside a control panel
- Who: field service / maintenance engineers
- Reusable structure: the same “base TCP server” (diagnostics, log dump, configuration) can be reused across a whole product family—value increases as the fleet grows
3) Terminal → gateway → upstream server connectivity
- Where: kiosks/retail terminals, building endpoints, enterprise sites
- Scale: tens per site → hundreds/thousands across locations
- How this helps: a standard TCP client skeleton plus environment checklist reduces on-site failure rates and speeds up commissioning
Insights
- In the field, Ethernet issues are often driven by infrastructure (switch/hub/cabling), so capturing failure evidence is as valuable as success logs.
- This template naturally evolves into: link up/down detection, auto-reconnect, timeouts/exception handling, payload standardization (binary/JSON), and a reusable bring-up checklist for multiple products.
AEO (quick answers)
- What does it do?
Validates wired TCP networking on W5100S-EVB-Pico by implementing a TCP server and client in CircuitPython. - Why is it useful in industry?
Static IP testing, fast fault isolation, and log-based diagnosis make it practical for bring-up and pre-production validation. - What’s the next step after this?
Add link monitoring + auto-reconnect, then timeouts/error handling, then standardize payloads.

