IoT Weather Station
STM32 TCP client that fetches live weather data from Open-Meteo API using W5500 Ethernet. Displays temperature, wind, and location on 16x2 LCD with button contr
🚨 Problem
일반적인 IoT 프로젝트는 대부분 WiFi 기반으로 구현되지만,
다음과 같은 문제가 존재합니다:
- WiFi 연결 불안정 (끊김, 간섭)
- 산업/현장 환경에서 네트워크 제약
- 네트워크 초기 설정 및 유지보수 어려움
👉 특히 실사용 환경에서는
안정적인 통신이 더 중요한 경우가 많습니다.
💡 Solution
이 프로젝트에서는 다음과 같은 방식으로 문제를 해결했습니다:
- W5500 기반 Ethernet 유선 통신
- STM32를 이용한 데이터 처리
- HTTP 기반 API 통신 (Open-Meteo)
- JSON 데이터 파싱 후 LCD 출력
👉 핵심 아이디어:
👉 “유선 네트워크 기반의 안정적인 IoT 데이터 처리 시스템”
🧱 System Architecture
[Open-Meteo API Server]
↓
(HTTP GET)
↓
Internet
↓
Ethernet (W5500)
↓ (SPI)
STM32 MCU
↓
JSON Parsing
↓
16x2 LCD👉 W5500은 내부 TCP/IP 스택을 가지고 있어
MCU의 부담을 줄이고 효율적인 네트워크 처리가 가능합니다.
🔄 Main Features
- DHCP를 통한 자동 IP 할당
- DNS를 이용한 서버 주소 변환
- TCP 기반 서버 연결
- HTTP GET 요청으로 날씨 데이터 수신
- JSON 데이터 파싱
- LCD 출력 및 버튼 UI
📸 Results
이 시스템은 다음과 같은 동작을 수행합니다:
- 부팅 후 DHCP로 IP 자동 할당
- API 서버 접속 및 데이터 요청
- JSON 형태의 날씨 데이터 수신
- 온도, 시간, 풍속 등을 LCD에 표시
- 버튼을 통해 화면 전환
👉 네트워크 → 데이터 → 사용자 출력까지 전체 흐름이 구현된 시스템
🔍 Key Points
- W5500을 이용한 안정적인 Ethernet 통신
- DHCP + DNS + TCP + HTTP 전체 네트워크 흐름 구현
- JSON 데이터 파싱을 통한 실질적인 데이터 활용
- 사용자 인터페이스(LCD + 버튼) 포함
🚀 Future Work
- HTTPS (TLS) 지원
- MQTT 프로토콜 적용
- FreeRTOS 기반 구조 개선
- OTA 업데이트 기능 추가
- Web Dashboard 구현
🧠 Conclusion
이 프로젝트를 통해
STM32와 W5500을 활용한 Ethernet 기반 IoT 시스템의 전체 흐름을 구현할 수 있었습니다.
👉 단순한 통신 테스트를 넘어
실제 데이터를 수집하고 사용자에게 전달하는 완성형 구조를 확인할 수 있었습니다.
