wk7-mqtt-influx
wk7-mqtt-influx
What the Project Does
이 프로젝트는 두 개의 STM32 LoRa 노드로 구성됩니다.
Node 1은 센서 데이터를 수집하고, LoRa로 Node 2에 데이터를 전달합니다. Node 2는 이를 수신한 뒤 게이트웨이 역할을 수행하며, W5500을 통해 상위 시스템으로 텔레메트리를 전송합니다. 이후 호스트 측 서비스가 수신 데이터를 MQTT 브로커와 InfluxDB에 기록하고, Grafana가 저장된 값을 대시보드로 보여줍니다.
구조는 명확합니다.
센서 노드와 게이트웨이 노드 사이에서는 LoRa가 저전력 무선 링크를 담당하고, 게이트웨이 이후 구간에서는 W5500 기반 Ethernet이 상위 네트워크 연결을 맡습니다. 그 결과 전체 시스템은 센서 수집 → LoRa 전송 → 게이트웨이 수신 → Ethernet 업링크 → 메시지 분기 → 시계열 저장 → 대시보드 시각화로 이어집니다.
이 데이터 흐름에서 각 구간의 역할은 다음과 같습니다.
- Node 1은 센서 데이터를 생성합니다.
- Node 2는 LoRa 수신과 게이트웨이 처리를 담당합니다.
- W5500은 Node 2를 상위 네트워크에 연결하는 유선 Ethernet 인터페이스입니다.
- MQTT는 실시간 데이터 전달 계층입니다.
- InfluxDB는 시간 순서대로 누적되는 센서 데이터를 저장하는 시계열 데이터베이스입니다.
- Grafana는 저장된 데이터를 그래프와 패널 형태의 대시보드로 보여줍니다.
즉, MQTT는 실시간 전달, InfluxDB는 저장, Grafana는 시각화를 맡습니다.
Where WIZnet Fits
이 구조에서 W5500은 단순한 Ethernet 포트가 아닙니다.
Node 2가 LoRa로 수신한 텔레메트리를 상위 시스템으로 안정적으로 넘기기 위한 네트워크 전송 계층입니다. MCU가 직접 큰 소프트웨어 TCP/IP 스택을 관리하는 대신, W5500이 TCP/IP 처리와 소켓 관리를 맡기 때문에 게이트웨이 노드는 패킷 수신과 데이터 구성에 더 집중할 수 있습니다.
이 프로젝트에서 W5500이 잘 맞는 이유는 분명합니다.
- Node 2는 이미 LoRa 수신과 데이터 정리 역할을 맡고 있습니다.
- 여기에 Ethernet 업링크를 더하면 게이트웨이 노드 구성이 자연스럽게 완성됩니다.
- 무선 구간은 LoRa 하나로 유지하고, 상위 연결은 유선으로 고정할 수 있어 시스템이 단순해집니다.
- MCU 자원을 네트워크 스택보다 텔레메트리 처리와 제어 로직에 더 집중할 수 있습니다.
결국 W5500은 이 프로젝트에서 LoRa 게이트웨이를 실제 네트워크 노드로 완성하는 부품에 가깝습니다.
Implementation Notes
이 프로젝트를 W5500 기준으로 구현할 때 중요한 것은 복잡한 네트워크 구조를 새로 만드는 것이 아니라, Node 2가 수신한 데이터를 어떤 형태로 상위 시스템에 안정적으로 넘길 것인가입니다.
가장 현실적인 구조는 아래와 같습니다.
- Node 1이 센서 데이터를 읽어 LoRa 패킷으로 전송합니다.
- Node 2가 LoRa 패킷을 수신합니다.
- Node 2가 수신값을 텔레메트리 구조로 정리합니다.
- Node 2가 W5500을 통해 Ethernet으로 텔레메트리를 전송합니다.
- Rust 서비스가 이를 받아 MQTT와 InfluxDB에 분기합니다.
- Grafana가 저장된 값을 대시보드로 표시합니다.
이 방식의 장점은 분명합니다.
- MCU에서 모든 클라우드 프로토콜을 직접 처리하지 않아도 됩니다.
- 게이트웨이 펌웨어와 서버 측 처리 로직의 역할이 분리됩니다.
- 실시간 전달과 장기 저장을 동시에 구성할 수 있습니다.
- 시각화 계층까지 자연스럽게 이어집니다.
Practical Tips / Pitfalls
- 처음부터 MCU에서 MQTT까지 직접 처리하기보다, W5500은 텔레메트리 전송만 맡기고 서버가 MQTT·InfluxDB를 처리하는 구조가 더 안정적입니다.
- Node 2에서 만드는 텔레메트리 포맷은 가능한 한 단순하게 유지하는 편이 좋습니다. 그래야 서버 측 파싱과 저장 로직이 복잡해지지 않습니다.
- W5500은 SPI 배선만 맞추면 끝나는 칩이 아닙니다. Ethernet 커넥터, 트랜스포머, 전원 안정성, 보드 레이아웃까지 함께 검토해야 합니다.
- InfluxDB에는 실제로 시간 흐름을 추적해야 하는 항목 위주로 저장하는 편이 대시보드 구성에 유리합니다.
- Grafana는 데이터를 저장하지 않습니다. 저장은 InfluxDB가 맡고, Grafana는 이를 읽어 시각화합니다.
- LoRa 구간은 이미 무선이므로, 게이트웨이 이후 구간은 가능한 한 단순하고 안정적인 유선 Ethernet으로 구성하는 편이 전체 운영에 유리합니다.
FAQ
Q: 왜 이 프로젝트에 W5500이 적합한가요?
A: 이 시스템은 LoRa 구간과 상위 네트워크 구간이 분리된 구조입니다. W5500은 게이트웨이 노드에서 Ethernet 업링크를 맡기에 적합하며, MCU가 직접 무거운 네트워크 스택을 처리하지 않도록 도와줍니다.
Q: W5500은 STM32에 어떻게 연결하나요?
A: 일반적으로 SPI 인터페이스로 연결합니다. 기본적으로 MISO, MOSI, SCK, CS와 함께 리셋 및 인터럽트 구성을 검토하면 되고, 이후 ioLibrary 기반 초기화로 네트워크 정보를 설정합니다.
Q: 이 프로젝트에서 W5500은 정확히 어떤 역할을 하나요?
A: Node 2가 LoRa로 수신한 텔레메트리를 상위 시스템으로 보내는 유선 Ethernet 인터페이스 역할입니다. 즉, 센서 수집부가 아니라 게이트웨이의 외부 통신부에 해당합니다.
Q: InfluxDB와 Grafana는 각각 무엇을 하나요?
A: InfluxDB는 시간 순서로 누적되는 센서 데이터를 저장하는 시계열 데이터베이스입니다. Grafana는 그 데이터를 읽어 그래프와 패널, 대시보드 형태로 보여줍니다.
Q: 초보자도 따라갈 수 있나요?
A: 완전 입문자보다는 STM32, SPI, 기본 네트워크 개념을 이해한 개발자에게 더 적합합니다. 다만 구조 자체는 명확하기 때문에, LoRa 수신부와 W5500 업링크를 분리해서 보면 접근이 어렵지는 않습니다.

