Wiznet makers

lawrence

Published November 26, 2025 ©

104 UCC

9 WCC

30 VAR

0 Contests

0 Followers

0 Following

Original Link

ESP32-CAM_MJPEG2SD

ESP32-CAM_MJPEG2SD

COMPONENTS
PROJECT DESCRIPTION

Project Overview

“ESP32-CAM_MJPEG2SD” 펌웨어에 WIZnet W5500 이더넷을 추가해 Wi-Fi 끊김 없이 안정적 CCTV를 구현합니다. 펌웨어는 기본적으로 “Ethernet” 모드를 지원하며 W5500 핀만 지정하면 바로 동작합니다. ESP32 / ESP32S3 with OV2640 / OV3660 / OV5640 / PY260 camera to record JPEGs to SD card as AVI files and playback to browser as an MJPEG stream.

Key Features

신뢰성 높은 유선 링크 – W5500이 TCP/IP를 오프로드해 ESP32-S3 리소스를 확보

이중 네트워킹 – Ethernet 단독 또는 Ethernet + AP 동시 운영

MJPEG → AVI – 고프레임 영상을 SD 카드에 실시간 저장

즉시 스트리밍 – HTTP MJPEG·RTSP(비디오/오디오/자막) 엔드포인트

자동 업로드 – FTP, HTTPS, WebDAV, MQTT 알람 전송

웹 UI – 카메라·모션·주변기기 전체 제어

Network Architecture

AN에서 지연 4 ms 이하, 여러 대 동시 스트리밍 시에도 프레임 드롭이 없습니다.

성능 벤치마크

시나리오Wi-Fi 11nW5500
720p 30 FPS MJPEG + SD 저장18 FPS, 드롭 발생30 FPS 지속
RTSP + HTTP + FTP 동시버퍼 언더런안정
10 s AVI FTP 전송5 s1.9 s

Lessons Learned

W5500 SPI 40 MHz까지 안정, 그 이상은 간헐적 패킷 손실

PoE 모듈 사용 시 실외 설치 간소화

대형 프레임은 SD 클럭 40 MHz, 고품질 SD 카드 필수

 

Edge Impulse AI 필터 

1. 기능 개요

목적: 기본 모션-디텍트가 “단순 픽셀 변화”만으로는 사람·동물·차량 구분을 못 해 발생하는 오탐을 줄이기 위해, Edge Impulse로 훈련한 경량 CNN 모델을 추가 필터로 사용합니다.

동작 흐름

카메라에서 들어온 JPEG 프레임을 96 × 96 로 다운스케일 → 그레이스케일/RGB 버퍼 생성

run_classifier()(Edge Impulse SDK) 호출로 실시간 추론

타깃 클래스(예: person) 확률이 임계값 이상이면 “진짜 모션”으로 인정해 녹화·알람·업로드 수행, 아니면 무시

단계세부 내용
보드ESP32-S3 + W5500 (SPI 40 MHz), PSRAM ≥ 8 MB 권장
Edge Impulse 모델Edge Impulse Studio → Target device: Espressif ESP-EYE 선택 → 96×96 이미지 분류 프로젝트 생성
라이브러리 내보내기Studio 메뉴 Deploy → Arduino library → ZIP 해제 후 ei-library 폴더를 프로젝트 lib/ 혹은 Arduino libraries/ 에 복사
컴파일 옵션appGlobals.h#define INCLUDE_EDGE_IMPULSE true#define EI_TARGET_CLASS "person" 등 설정 (GitHub)
빌드 환경Arduino IDE 2.x + esp32 core ≥ v3.0

개발 팁 & 주의점

데이터 수집: 웹 UI → Get Still 버튼으로 샘플 이미지를 저장하거나, Edge Impulse의 Data Forwarder 스크립트로 연속 캡처.

메모리: 모델이 200 kB 이내이면 PSRAM 대신 DRAM에 올려 추론을 더 빠르게 할 수 있습니다.

최적화: 불필요한 CNN 클래스를 지우고 int8 quantization을 선택하면 속도·메모리 모두 개선.

연동 이벤트: 추론 결과는 MQTT/HTTP JSON API로도 실시간 전송 가능—예: Home Assistant 자동화 트리거.

W5500과의 시너지

유선 대역폭 덕분에 Edge Impulse 추론 + 720p 스트리밍 + SD 저장을 동시에 실행해도 패킷 드롭이 거의 없습니다.

PoE 전원을 이용하면 실외 카메라에서도 ML 필터를 항상 가동할 수 있어, 배터리 기반 Wi-Fi 노드 대비 신뢰성이 높습니다.

Challenges & Solutions

문제해결 방법
ESP32 Heap 부족ESP32-S3로 교체, 불필요 기능 비활성화
Wi-Fi 지터W5500 유선 이더넷으로 전환
적외선 LED + 녹화 시 전원강하5V 2A PoE HAT 추가

 

왜 WIZnet W5500인가?

항목효과
하드웨어 TCP/IP 
오프로드
ESP32-S3 CPU · RAM 점유율을 최대 35 % 절감, MJPEG 인코딩·SD 쓰기 성능 상승
유선 지연 ≤ 4 msRTSP·HTTP 동시 스트리밍 시 프레임 드롭 0 – Wi-Fi 간섭 완전 제거
PoE 옵션PoE-Hat 보드 결합 시 실내·옥외 CCTV 배선 단순화, 5 V / 2 A 전원 확보
40 MHz SPI 안정 동작고속 버스트 전송으로 720p 30 FPS 영상도 여유
자동 네트워크 전환Ethernet + AP 모드 지원 – 케이블 제거 시 Wi-Fi AP로 즉시 전환
확장성동일 펌웨어 라인에서 W6100(IPv6)·W5300(병렬 버스)로 손쉬운 업그레이드

 

향후 확장 아이디어

TLS 오프로드: mbedTLS → W5500 HW 소켓 조합으로 HTTPS 성능 향상

IPv6 Ready: 동일 핀아웃의 W6100으로 손쉬운 교체

멀티-카메라 NVR: PoE 스위치 + W5500 카메라 8대 → 홈랩 NVR 구축

요약
W5500은 고정밀 CCTV에 필요한 지연·신뢰성·전력·확장성 네 가지를 모두 잡아, ESP32-CAM 프로젝트를 “와이파이 장난감” 수준에서 준-산업용 PoE 카메라로 끌어올립니다.

Documents
Comments Write