🧪 새 튜토리얼이 계속 업데이트 중 — 로봇 팔부터 센서까지
본문으로 건너뛰기

ESP32-NanoCam 하드웨어 사양서

스토어에서 구매

1. 하드웨어 개요

본 섹션의 하드웨어 자료는 NanoCamModule.pdf + NanoCamBASE.pdf 회로도에서 가져왔습니다. 전체 구조: 코어 보드(ESP32-S3 + 카메라 + 오디오)가 베이스 보드(USB 전원 공급 + 시리얼 플래싱)에 결합됩니다.

Plaintext
┌─────────────────────────────────────────────────────────┐
│                    NanoCam 核心板                         │
│  ┌──────────┐  ┌──────────┐  ┌────────────┐            │
│  │ ESP32-S3 │  │ ES8311   │  │ NS4150B   │            │
│  │   R8     │  │ I2S 麦克风│  │ I2S 功放   │            │
│  │ (QFN56)  │  │          │  │            │            │
│  └────┬─────┘  └──────────┘  └────────────┘            │
│       │                                                 │
│  ┌────┴─────┐  ┌──────────┐  ┌────────────┐            │
│  │ GD25Q128 │  │  DVP     │  │ ME6217C33  │            │
│  │ 16MB Flash│ │ 摄像头   │  │ 3.3V LDO   │            │
│  └──────────┘  │ FPC-24P  │  └────────────┘            │
│                └──────────┘                             │
├─────────────────────────────────────────────────────────┤
│                    NanoCam 底板                          │
│  ┌──────────┐  ┌──────────┐  ┌────────────────────┐    │
│  │ USB-C    │  │ CH340K   │  │ 一键下载电路        │    │
│  │ 5V输入   │  │ USB-UART │  │ (DTR/RTS→BOOT/EN)  │    │
│  └──────────┘  └──────────┘  └────────────────────┘    │
│                                                         │
│  扩展接口: I2C ×1, UART ×1, 5V/GND/3.3V                 │
└─────────────────────────────────────────────────────────┘

그림 1:코어 보드 정면(ESP32-S3 / 카메라 / 오디오)

2. 메인 MCU와 저장소

2.1 메인 MCU

파라미터사양
모델ESP32-S3 N16R8
패키지QFN56
CPUXtensa LX7 듀얼 코어 240MHz
PSRAM8MB (Octal SPI, R8 접미사)
Flash16MB (N16 접미사, 외장 128M-bit SPI Flash)
클록40MHz 수정 진동자 + 10pF×2 매칭 커패시터

2.2 Flash 저장소

파라미터사양
모델GD25Q128ESIG
용량128M-bit = 16MB
인터페이스SPI (표준 4선)
브랜드GigaDevice
Flash 신호ESP32-S3 GPIO기능
CSIO29칩 선택
SO (DO)IO31데이터 출력
SI (DI)IO32데이터 입력
SCLKIO30클록
WPIO34쓰기 보호
HOLDIO33홀드

3. 카메라 서브시스템

3.1 DVP 인터페이스

파라미터사양
인터페이스 유형FPC 0.5 WS 24P (24Pin FPC 커넥터)
지원 SensorGC2145(기본) / OV2640 / OV5640 등 DVP 카메라
I2C 구성 버스SDA=IO41, SCL=IO42 (외부 I2C와 공유)
픽셀 포맷RGB565 / JPEG / YUV422 등

그림 5:GC2145 카메라 모듈 치수도(68° 화각)

3.2 DVP 핀 전체 매핑

신호 분류신호명ESP32 GPIO비고
시스템 클록XCLKIO9메인 클록 출력 24MHz
픽셀 클록PCLKIO6카메라 픽셀 클록 입력
프레임 동기VSYNCIO13수직 동기
행 동기HREFIO11수평 레퍼런스
제어PWDNIO12카메라 전원 차단 제어
제어RESETIO14카메라 리셋
I2CSDAIO41카메라 I2C 데이터 (ES8311과 공유)
I2CSCLIO42카메라 I2C 클록 (ES8311과 공유)
데이터 D0Y2IO4픽셀 데이터 bit0
데이터 D1Y3IO2픽셀 데이터 bit1
데이터 D2Y4IO1픽셀 데이터 bit2
데이터 D3Y5IO3픽셀 데이터 bit3
데이터 D4Y6IO5픽셀 데이터 bit4
데이터 D5Y7IO7픽셀 데이터 bit5
데이터 D6Y8IO8픽셀 데이터 bit6
데이터 D7Y9IO10픽셀 데이터 bit7

3.3 카메라 신호 그룹 요약

Plaintext
Camera DVP 信号组:
  XCLK  = IO9     # Master clock out (24MHz)
  PCLK  = IO6     # Pixel clock in
  VSYNC = IO13    # Vertical sync
  HREF  = IO11    # Horizontal ref
  PWDN  = IO12    # Power down (active low)
  RESET = IO14    # Hardware reset

  D0(Y2) = IO4    D1(Y3) = IO2
  D2(Y4) = IO1    D3(Y5) = IO3
  D4(Y6) = IO5    D5(Y7) = IO7
  D6(Y8) = IO8    D7(Y9) = IO10

  SIOD(SDA) = IO41
  SIOC(SCL) = IO42

4. 오디오 서브시스템

4.1 오디오 아키텍처

Plaintext
AP2718AT (模拟MEMS麦) → ES8311 Codec (ADC/DAC) → NS4150B (模拟功放) → 扬声器
                               ↕ I2S (MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40) + I2C (41/42, addr=0x30)
                            ESP32-S3
부품모델유형인터페이스
마이크AP2718AT아날로그 MEMS 실리콘 마이크차동 아날로그 → ES8311 ADC
코덱ES8311오디오 Codec (I2S+I2C)I2S=MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40, I2C=41/42, addr=0x30
앰프NS4150BD급 아날로그 앰프ES8311 DAC 출력 → 아날로그 입력 → 스피커

4.2 ES8311 Codec I2S 핀

I2S 신호ESP32 GPIO기능
MCLKIO39메인 클록
BCLK (SCLK)IO38비트 클록
LRCLK (WS)IO47좌우 채널 클록
DOUT (DAC)IO48시리얼 데이터 출력 (재생)
DIN (ADC)IO40시리얼 데이터 입력 (녹음)

오디오는 I2S0 Standard Duplex 모드를 사용하며, ES8311 Codec은 녹음과 재생을 동시에 지원합니다.

4.3 ES8311 I2C 제어

I2C 신호GPIO설명
SDAIO41카메라와 I2C 버스 공유
SCLIO42카메라와 I2C 버스 공유
주소0x30ES8311 8-bit I2C 주소

5. 전원 시스템

5.1 전원 공급 체인

Plaintext
USB-C (5V) ──→ 底板 NCE3401 P-MOSFET 反接保护 ──→ VDD50

                    ┌─────────────────────────┤
                    ↓                         ↓
            核心板 ME6217C33 LDO            NS4150B 功放
                    │                  (5V 直供)

                 VDD33 (3.3V)

        ┌───────────┼───────────┐
        ↓           ↓           ↓
    ESP32-S3    ES8311 Codec   GD25Q128 Flash
    DVP摄像头   AP2718AT 麦    ME6211A18/28 LDO

5.2 핵심 부품

모델기능
LDOME6217C33P5G (SOT-89-5)5V→3.3V 레귤레이션
LDOME6211A18M3G (SOT-23)5V→1.8V (카메라 코어)
LDOME6211A28M3G ×2 (SOT-23)5V→2.8V (U6=AVDD, U7=DOVDD)
U1 입력 필터C14 (10μF) + C15 (0.1μF)ME6217C33 입력
U1 출력 필터C1 (22μF)ME6217C33 출력
역접속 보호NCE3401 P-MOSFET베이스 보드 전원 입력 보호
게이트 저항R11 10KΩP-MOS 게이트 접지

6. 베이스 보드와 플래싱

그림 2:코어 보드 후면 핀 실크스크린(RXD/TXD/SCL/SDA/5V/GND 등)

6.1 USB-시리얼 변환

파라미터사양
CH340K
USB 인터페이스USB-C (USB1)
시리얼 연결TXD→U0RXD (IO44), RXD→U0TXD (IO43) (교차)
USB 매칭 저항R4, R5 22R/1% (D+/D- 직렬)
DTR/RTS원클릭 플래싱 시 BOOT + EN 자동 제어

그림 3:베이스 보드 정면(USB-C와 확장 인터페이스)

6.2 원클릭 다운로드 회로

Q1, Q2(S8050 NPN 트랜지스터)를 사용해 자동 플래싱을 구현합니다:

CH340K 신호제어대상 핀
DTR→ Q1 →ESP32 EN (CHIP_PU)
RTS→ Q2 →ESP32 BOOT (IO0)

원리: USB 플래싱 도구가 DTR/RTS 토글을 통해 BOOT와 EN 타이밍을 자동 제어하므로 수동 버튼 조작이 필요 없습니다.

6.3 코어 보드↔베이스 보드 커넥터 핀표

베이스 보드 핀 헤더코어 보드 핀 헤더신호명ESP32 GPIO기능
P1-1P1-1VDD505V 전원 출력
P1-2P1-2VDD505V 전원 출력
P1-3P1-3GND전원 접지
P1-4P1-4GND전원 접지
P1-5P1-5SDAIO41I2C 데이터 (카메라/ES8311과 공유)
P1-6P1-6SCLIO42I2C 클록 (카메라/ES8311과 공유)
P1-7P1-7U0TXDIO43시리얼 0 송신 (CH340K RXD에 연결)
P1-8P1-8U0RXDIO44시리얼 0 수신 (CH340K TXD에 연결)
P2-1P2-1ESP_PIO20USB 차동 데이터 정 (D+)
P2-2P2-2ESP_NIO19USB 차동 데이터 부 (D-)
P2-3P2-3VDD333.3V 전원 출력
P2-4P2-4VDD333.3V 전원 출력
P2-5P2-5GND전원 접지
P2-6P2-6GND전원 접지
P2-7P2-7BOOTIO0부팅 모드/플래싱
P2-8P2-8CHIP_PUEN칩 리셋 제어

그림 4:베이스 보드 후면 핀 실크스크린

6.4 베이스 보드 확장 인터페이스

인터페이스신호용도
P3 (I2C, 4Pin)5V1, GND, SDA, SCL외부 I2C 기기
P4 (UART, 4Pin)5V1, GND, ESP_P, ESP_N외부 USB/시리얼 기기

7. 전체 GPIO 점유표

합계: GPIO 33개가 사용 중이며, 사용 가능한 GPIO는 약 8개입니다.

GPIO기능신호비고
IO0BOOTBOOT부팅 모드/플래싱 (S2 버튼, 10K 풀업 + 0.1μF 디바운스)
IO1DVP D2CAM_Y4픽셀 데이터 bit2
IO2DVP D1CAM_Y3픽셀 데이터 bit1
IO3DVP D3CAM_Y5픽셀 데이터 bit3
IO4DVP D0CAM_Y2픽셀 데이터 bit0
IO5DVP D4CAM_Y6픽셀 데이터 bit4
IO6DVP PCLKCAM_PCLK픽셀 클록 입력
IO7DVP D5CAM_Y7픽셀 데이터 bit5
IO8DVP D6CAM_Y8픽셀 데이터 bit6
IO9DVP XCLKCAM_XCLK카메라 메인 클록 (24MHz)
IO10DVP D7CAM_Y9픽셀 데이터 bit7
IO11DVP HREFCAM_HREF행 동기
IO12DVP PWDNCAM_PWDN카메라 전원 차단 제어
IO13DVP VSYNCCAM_VSYNC프레임 동기
IO14DVP RESETCAM_RESET카메라 리셋
IO18WS2812RGB_LED_DINWS2812 RGB LED 데이터 입력
IO19USB 차동D- (ESP_N)USB 차동 데이터 부 (D-)
IO20USB 차동D+ (ESP_P)USB 차동 데이터 정 (D+)
IO21WS2812 DOUTRGB_LED_DOUTWS2812 캐스케이드 출력 (캐스케이드하지 않을 때 사용 가능)
IO29SPI CSFlash_CS외장 Flash 칩 선택
IO30SPI SCLKFlash_CLK외장 Flash 클록
IO31SPI SOFlash_DO외장 Flash 데이터 출력
IO32SPI SIFlash_DI외장 Flash 데이터 입력
IO33SPI HOLDFlash_HOLD외장 Flash Hold
IO34SPI WPFlash_WP외장 Flash 쓰기 보호
IO38I2S BCLKI2S_BCLKES8311 비트 클록
IO39I2S MCLKI2S_MCLKES8311 메인 클록
IO40I2S DINI2S_DINES8311 ADC 데이터 입력
IO41I2C SDAI2C_SDA카메라 + ES8311 + 외부 I2C 공유
IO42I2C SCLI2C_SCL카메라 + ES8311 + 외부 I2C 공유
IO43UART0 TXUTXD시리얼 0 송신 (베이스 보드 CH340K)
IO44UART0 RXURXD시리얼 0 수신 (베이스 보드 CH340K)
IO47I2S WSI2S_WSES8311 워드 셀렉트 (LRCK)
IO48I2S DOUTI2S_DOUTES8311 DAC 데이터 출력
ENCHIP_PURST/EN인에이블/리셋 (S1 버튼, 10K 풀업)

사용 가능한 GPIO(미점유, 확장 가능)

GPIO특성권장 용도
IO15범용 IO확장
IO16범용 IO확장
IO17범용 IO확장
IO35범용 IO확장
IO36범용 IO확장
IO37범용 IO확장
IO45범용 IO확장
IO46범용 IO확장

⚠️ 사용 중인 GPIO: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,18,19,20,21,29,30,31,32,33,34,38,39,40,41,42,43,44,47,48

사용 가능 수량: GPIO 8개

8. 핵심 설계 제약 조건

8.1 I2S 주변장치 구성

  • ESP32-S3에는 두 개의 I2S 컨트롤러가 있습니다:
    • I2S0: ES8311 Codec에 할당됨(MCLK=IO39, BCLK=IO38, WS=IO47, DOUT=IO48, DIN=IO40), 양방향 I2S Duplex, 녹음과 재생 동시 지원
  • ES8311 I2C 제어: SDA=IO41, SCL=IO42, 소자 주소 0x30

8.2 DVP와 I2S DMA 공존

  • DVP는 LCD_CAM 주변장치의 DMA 채널을 사용합니다
  • ES8311은 I2S0 DMA를 사용합니다(단일 I2S 인터페이스 양방향)
  • 둘은 충돌하지 않지만 PSRAM 대역폭에 유의해야 합니다(8MB PSRAM이면 충분)
  • GPIO45/46은 오디오와 연결되어 있지 않아 다른 용도로 사용할 수 있으며, GPIO47은 I2S WS에 사용됩니다

8.3 I2C 버스 공유

  • IO41(SDA) + IO42(SCL)은 카메라와 외부 I2C 인터페이스에 동시에 연결됩니다
  • I2C 풀업 저항: R12 (SDA, 4.7K/1%), R13 (SCL, 4.7K/1%), VDD33으로 풀업
  • 카메라 I2C 주소가 외부 기기와 충돌하지 않도록 해야 합니다
  • OV2640 기본 I2C 주소: 0x60 (쓰기) / 0x61 (읽기) — ES8311(0x30)과 충돌하지 않습니다

8.4 Flash 용량 충분

  • 16MB Flash는 공간이 충분하여 다음을 지원할 수 있습니다:
    • OTA 이중 파티션 방식 (factory + ota_0 + ota_1)
    • SPIFFS에 웹 관리 백엔드 저장 (~1MB)
    • XiaoZhi AI 다국어 리소스 패키지 (.p3 파일)
    • NVS 구성 파티션
    • 업그레이드 여유 공간 확보
  • 펌웨어 크기를 걱정할 필요 없이 다중 Agent AI를 완전히 포함할 수 있습니다

8.5 DVP 카메라 입력 핀 제약

  • D0-D7 및 VSYNC/HREF/PCLK는 모두 입력 핀으로 카메라 센서가 구동합니다
  • 드라이버 개발 시 이 핀들을 반드시 INPUT 모드로만 구성해야 합니다
  • I2S 오디오 핀(38,39,40,47,48)은 출력 모드로 구성할 수 있습니다(ESP32-S3 지원)

9. ESP-IDF 구성 권장 사항

9.1 sdkconfig 주요 항목

Plaintext
# 芯片
CONFIG_IDF_TARGET_ESP32S3=y
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y

# Flash (16MB)
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_ESPTOOLPY_FLASHFREQ_80M=y

# PSRAM (8MB Octal)
CONFIG_SPIRAM=y
CONFIG_SPIRAM_MODE_OCT=y
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=49152
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y

# Cache
CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB=y
CONFIG_ESP32S3_DATA_CACHE_64KB=y
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y

# 摄像头
CONFIG_CAMERA_MODULE_CUSTOM=y
CONFIG_CAMERA_PIN_XCLK=9
CONFIG_CAMERA_PIN_PCLK=6
CONFIG_CAMERA_PIN_VSYNC=13
CONFIG_CAMERA_PIN_HREF=11
CONFIG_CAMERA_PIN_SIOD=41
CONFIG_CAMERA_PIN_SIOC=42
CONFIG_CAMERA_PIN_PWDN=12
CONFIG_CAMERA_PIN_RESET=14
CONFIG_CAMERA_PIN_Y2=4
CONFIG_CAMERA_PIN_Y3=2
CONFIG_CAMERA_PIN_Y4=1
CONFIG_CAMERA_PIN_Y5=3
CONFIG_CAMERA_PIN_Y6=5
CONFIG_CAMERA_PIN_Y7=7
CONFIG_CAMERA_PIN_Y8=8
CONFIG_CAMERA_PIN_Y9=10
CONFIG_CAMERA_XCLK_FREQ=24000000

# 音频 (ES8311 Codec, I2S0)
# ES8311 I2S: MCLK=39, BCLK=38, WS=47, DOUT=48, DIN=40
# ES8311 I2C: SDA=41, SCL=42, addr=0x30

9.2 카메라 구성

C
// esp32-camera 引脚配置
camera_config_t config = {
    .pin_pwdn  = 12,
    .pin_reset = 14,
    .pin_xclk  = 9,
    .pin_siod  = 41,
    .pin_sioc  = 42,
    .pin_d7    = 10,
    .pin_d6    = 8,
    .pin_d5    = 7,
    .pin_d4    = 5,
    .pin_d3    = 3,
    .pin_d2    = 1,
    .pin_d1    = 2,
    .pin_d0    = 4,
    .pin_vsync = 13,
    .pin_href  = 11,
    .pin_pclk  = 6,
    .xclk_freq_hz = 24000000,
    .pixel_format = PIXFORMAT_RGB565,  // 或 PIXFORMAT_JPEG
    .frame_size   = FRAMESIZE_QVGA,    // 320x240
    .jpeg_quality = 12,
    .fb_count     = 2,
    .fb_location  = CAMERA_FB_IN_PSRAM,
    .grab_mode    = CAMERA_GRAB_WHEN_EMPTY,
};

다음 단계