Wiznet makers

Hannah

Published March 06, 2026 ©

72 UCC

15 WCC

1 VAR

0 Contests

0 Followers

0 Following

Original Link

rasber-controller

Rasber controller with customed built python project, including custom protocol and MODBUS support, and Android APP.

COMPONENTS
PROJECT DESCRIPTION

Rasber Controller — W5500 기반 산업용 경사 센서 데이터 수집 시스템

 

배경 & 동기 (Background / Motivation)

지질재해 모니터링, 기초 굴착 변위 계측, 사면 안정성 분석 등 현장 계측 환경은 수백~수천 개의 센서 노드가 동시에 운용되며, 안정적이고 지속적인 데이터 전송이 필수입니다.

기존 Wi-Fi 기반 솔루션은 전파 간섭, 지하·터널 환경에서의 음영 구역, 보안 정책 제한 등으로 인해 산업 현장에 적합하지 않은 경우가 많습니다. 특히 지하 굴착 현장이나 건설 현장처럼 전기적 노이즈가 심한 환경에서는 무선 통신의 신뢰성이 크게 저하됩니다.

이러한 문제를 해결하기 위해 WIZnet W5500 SPI 이더넷을 핵심 유선 통신 채널로 채택하였습니다. W5500의 하드웨어 TCP/IP 스택은 MCU의 소프트웨어 부담 없이 안정적인 네트워크 연결을 보장하며, 4G LTE / Wi-Fi 를 병행 채널로 구성함으로써 유선 인프라가 없는 오지 현장에서도 동일한 펌웨어와 프로토콜로 운용이 가능합니다. 또한 CircuitPython을 펌웨어 언어로 선택하여 현장 엔지니어가 Python 수준에서 직접 설정 파일을 편집하고, USB Mass Storage로 데이터를 즉시 열람할 수 있는 유지보수 친화성을 확보하였습니다.

소프트웨어 구성 (KR)

소프트웨어는 임베디드 펌웨어Android 앱의 두 부분으로 구성됩니다.

먼저, CircuitPython 기반 펌웨어는 장치의 핵심 제어를 담당합니다. 이 펌웨어에는 설정 관리, RS485 통신 제어, 4G / Wi-Fi / Ethernet 네트워크 통신, Modbus RTU, CSV 데이터 로깅, LED 상태 표시, 전원 관리, BLE UART, 사설 프로토콜 V2026, 등의 디바이스 내부 동작을 담당하는 펌웨어 기능으로 구성되어있습니다

다음으로,  Android 앱 코드는 현장 설정과 유지보수를 위한 도구 역할을 합니다. 사용자는 이 앱을 통해 BLE 연결, 센서 스캔, 주소 변경, Modbus ID 설정, 네트워크 및 MQTT 설정 등을 수행할 수 있습니다.

즉, 이 프로젝트는 디바이스 내부 동작을 담당하는 펌웨어현장 엔지니어를 위한 모바일 설정 앱을 함께 제공하는 완결형 시스템입니다.

결과 & 마무리 (Results / Conclusion)

Rasber Controller는 지질재해 모니터링 현장에서 RS485 4채널을 통해 수천 개의 경사 센서 노드를 안정적으로 수집하고, W5500 유선 이더넷 · 4G · Wi-Fi 3중 통신 경로로 클라우드에 실시간 업로드하는 완성도 높은 산업용 플랫폼입니다.

주요 성과

  • AutoID 0~1023 범위 자동 스캔 및 배치 주소 쓰기로 대규모 센서 초기화 시간 대폭 단축
  • 분절 JSON 포맷으로 대량 센서 데이터를 MQTT 페이로드 제한 내에서 안정 전송
  • NVM 기반 USB 모드 전환으로 현장 데이터 회수와 펌웨어 업데이트를 동일 포트로 처리
  • CircuitPython + config.json 구조로 Python 기본 지식만으로도 현장 유지보수 가능
  • 딥슬립 ~10µA 구현으로 배터리 또는 태양광 전원 환경에서 장기 운용 적합

>>활용 가능성 : 기초 굴착 계측, 댐·사면 안정성 감시, 터널 변위 모니터링, 철도 노반 계측 등 유선 이더넷 인프라가 있는 모든 산업 현장에 적용 가능합니다.

Original Link : https://github.com/winterzh/rasber-controller

 

FAQ

Q1. 이 컨트롤러에서 왜 WIZnet W5500을 쓰나요? Wi-Fi/4G만으로도 되지 않나요?
A1. 레포가 다중 업링크(4G/와이파이/이더넷)를 전제로 하고 있고, 현장에서는 RF 품질이 나쁘거나 유선망이 이미 깔려 있는 경우가 많습니다. W5500은 SPI로 붙는 유선 인터페이스로, 펌웨어가 복잡한 네트워크 스택을 직접 떠안지 않고도 소켓 기반 통신(MQTT)을 안정적으로 구현할 수 있습니다.

Q2. W5500은 이 프로젝트에서 어떤 방식으로 연결되나요?
A2. SPI(SCK/MOSI/MISO) + CS + RST 조합입니다. 드라이버가 busio.SPI(...)로 SPI를 만들고, CS를 디지털 출력으로 설정한 다음 RST 핀을 토글해 W5500을 리셋하고 WIZNET5K(self.spi, self.cs_pin)로 초기화합니다.

Q3. 이 프로젝트에서 W5500이 맡는 “정확한 역할”은 무엇인가요?
A3. “유선 업로드” 경로의 네트워크 인터페이스입니다. DHCP/고정 IP 설정 후, MiniMQTT가 W5500 소켓을 사용하도록 바인딩해 RS485에서 읽은 경사계 데이터를 MQTT로 발행할 때 유선망으로 전송되게 합니다.

Q4. 초보자도 이 프로젝트의 W5500 파트를 따라 할 수 있나요?
A4. 가능합니다. 필수는 (1) SPI/CS/RST 배선을 정확히 맞추는 것, (2) CircuitPython 환경에 adafruit_wiznet5k, adafruit_minimqtt 같은 라이브러리를 올바르게 배치하는 것입니다. 이 드라이버는 라이브러리 누락 시 ImportError 메시지로 원인을 드러내도록 구성돼 있어 디버깅에도 도움이 됩니다.

Q5. W5500 유선 이더넷은 “MCU에 LwIP 올린 Wi-Fi/이더넷” 방식과 비교해 어떤 차이가 있나요?
A5. Wi-Fi는 설치가 쉬운 대신 재접속 지연, RF 간섭, 현장 구조물(철근/지하/사면) 영향이 큽니다. W5500 유선은 이동성을 포기하는 대신 링크 품질과 지연이 예측 가능하고, 네트워킹을 소켓 주변장치로 분리해 RS485 폴링·데이터 구성·로깅·전력 관리가 많은 장치에서 펌웨어 복잡도를 낮추는 데 유리합니다.

Documents
Comments Write