ESP32-C3에서 ESP-NOW, WebServer(HTTP), WebSocket의 속도를 비교할 때 가장 중요한 기준은 프로토콜의 오버헤드(Overhead)와 연결 방식(Connectionless vs Connection-oriented)입니다.
각 프로토콜의 특성과 속도 성능을 비교 분석해 드립니다.
1. 프로토콜별 성능 비교 요약
| 항목 | ESP-NOW | WebSocket | WebServer (HTTP) |
|---|---|---|---|
| 통신 계층 | Layer 2 (Data Link) | Layer 7 (Application/TCP) | Layer 7 (Application/TCP) |
| 속도(Throughput) | 매우 빠름 (최대 1~4 Mbps) | 빠름 (최대 1~2 Mbps) | 느림 (요청당 오버헤드 큼) |
| 지연 시간(Latency) | 매우 낮음 (약 1~5ms) | 낮음 (약 10~50ms) | 높음 (약 100~500ms+) |
| 연결 방식 | 비연결형 (Pairing 필요) | 연결 지향형 (지속 유지) | 연결 지향형 (매번 요청/응답) |
| 최대 데이터 크기 | 250 Bytes (1패킷당) | 사실상 제한 없음 (스트림) | 사실상 제한 없음 |
2. 상세 성능 분석
① ESP-NOW (가장 빠름)
ESP-NOW는 Wi-Fi의 비컨(Beacon) 프레임을 이용하며, TCP/IP 스택을 거치지 않습니다.
- 장점: 통신 준비 과정(Handshake)이 거의 없어 지연 시간이 압도적으로 짧습니다. 전원을 켜자마자 바로 데이터를 보낼 수 있을 정도로 빠릅니다.
- 속도 특성: 패킷당 최대 250바이트로 제한되지만, 불필요한 헤더 정보가 없어 작은 데이터를 수천 번 보낼 때 최고의 효율을 보입니다.
- 적합한 용도: 센서 데이터 실시간 전송, 리모컨 제어, 초저전력 배터리 기기.
② WebSocket (실시간성 양호)
TCP 연결을 한 번 맺은 후, 클라이언트와 서버가 서로 지속적으로 데이터를 주고받습니다.
- 장점: HTTP와 달리 매번 헤더를 보낼 필요가 없습니다. 한 번 연결되면 데이터 프레임만 오가므로 HTTP보다 2~5배 이상 빠릅니다.
- 속도 특성: TCP 기반이므로 데이터 무결성이 보장되지만, 패킷 손실 시 재전송 대기 시간으로 인해 ESP-NOW보다는 지연이 발생합니다.
- 적합한 용도: 실시간 웹 대시보드, 쌍방향 채팅 제어, 빈번한 데이터 업데이트.
③ WebServer (HTTP/REST) (가장 느림)
전형적인 요청-응답(Request-Response) 방식입니다.
- 단점: 데이터를 하나 보낼 때마다 TCP 연결 설정 → HTTP 헤더 전송 → 데이터 전송 → 연결 종료의 과정을 반복합니다. 이 과정에서 발생하는 오버헤드가 실제 데이터 크기보다 클 때가 많습니다.
- 속도 특성: ESP32-C3의 리소스를 가장 많이 소모하며, 동시에 많은 요청이 들어오면 응답 속도가 급격히 저하됩니다.
- 적합한 용도: 단순 설정 변경, 로그 확인, 가끔 발생하는 제어 명령.
3. 결론 및 선택 가이드
- 반응 속도가 생명인가? (지연 시간 최소화)
- ESP-NOW를 선택하세요. (예: 드론 제어, 실시간 버튼 반응)
- 웹 브라우저에서 실시간으로 데이터를 보고 싶은가?
- WebSocket이 정답입니다. 현재 작성하신 코드 방식이 바로 이 효율적인 방식입니다.
- 데이터의 양이 많고 신뢰성이 중요한가? (파일 전송 등)
- WebSocket 또는 일반 HTTP 전송이 유리합니다. ESP-NOW는 데이터 손실 방지 로직을 직접 짜야 하므로 대용량 전송에는 부적합합니다.
ESP32-C3에서의 팁: ESP32-C3는 싱글 코어(RISC-V) 모델이므로, WebSocket이나 WebServer 구동 시 연산 부하가 ESP32(듀얼 코어) 모델보다 크게 체감될 수 있습니다. 따라서 실시간 제어 루프와 통신 루프 사이의 asyncio.sleep_ms(0) 등을 통한 시분할 처리가 매우 중요합니다.


답글 남기기
댓글을 달기 위해서는 로그인해야합니다.