🧪 Se publican nuevos tutoriales — del brazo robótico al sensor
Saltar al contenido
Comprar este productoTienda oficialSitio web oficial

Especificaciones de hardware del ESP32-NanoCam

Comprar en la tienda

1. Visión general del hardware

Los materiales de hardware de esta sección provienen de los esquemáticos NanoCamModule.pdf + NanoCamBASE.pdf. Arquitectura completa: la placa central (ESP32-S3 + cámara + audio) se inserta sobre la placa base (alimentación USB + flasheo por puerto serie).

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                 │
└─────────────────────────────────────────────────────────┘

Figura 1: cara frontal de la placa central (ESP32-S3 / cámara / audio)

2. MCU y almacenamiento

2.1 Chip MCU

ParámetroEspecificación
ModeloESP32-S3 N16R8
EncapsuladoQFN56
CPUXtensa LX7 doble núcleo 240MHz
PSRAM8MB (Octal SPI, sufijo R8)
Flash16MB (sufijo N16, SPI Flash externo de 128M-bit)
RelojCristal pasivo de 40MHz + condensadores de adaptación 10pF×2

2.2 Almacenamiento Flash

ParámetroEspecificación
ModeloGD25Q128ESIG
Capacidad128M-bit = 16MB
InterfazSPI (cuatro hilos estándar)
MarcaGigaDevice
Señal FlashGPIO ESP32-S3Función
CSIO29Selección de chip
SO (DO)IO31Salida de datos
SI (DI)IO32Entrada de datos
SCLKIO30Reloj
WPIO34Protección contra escritura
HOLDIO33Retención (Hold)

3. Subsistema de cámara

3.1 Interfaz DVP

ParámetroEspecificación
Tipo de interfazFPC 0.5 WS 24P (zócalo FPC de 24 pines)
Sensor compatibleGC2145 (predeterminado) / OV2640 / OV5640 y otras cámaras DVP
Bus de configuración I2CSDA=IO41, SCL=IO42 (compartido con el I2C externo)
Formato de píxelRGB565 / JPEG / YUV422, etc.

Figura 5: plano de dimensiones del módulo de cámara GC2145 (ángulo de visión de 68°)

3.2 Mapeo completo de pines DVP

Categoría de señalNombre de señalGPIO ESP32Nota
Reloj del sistemaXCLKIO9Salida de reloj maestro 24MHz
Reloj de píxelPCLKIO6Entrada de reloj de píxel de la cámara
Sincronización de fotogramaVSYNCIO13Sincronización vertical
Sincronización de líneaHREFIO11Referencia horizontal
ControlPWDNIO12Control de apagado de la cámara
ControlRESETIO14Reset de la cámara
I2CSDAIO41Datos I2C de la cámara (compartido con ES8311)
I2CSCLIO42Reloj I2C de la cámara (compartido con ES8311)
Datos D0Y2IO4Datos de píxel bit0
Datos D1Y3IO2Datos de píxel bit1
Datos D2Y4IO1Datos de píxel bit2
Datos D3Y5IO3Datos de píxel bit3
Datos D4Y6IO5Datos de píxel bit4
Datos D5Y7IO7Datos de píxel bit5
Datos D6Y8IO8Datos de píxel bit6
Datos D7Y9IO10Datos de píxel bit7

3.3 Resumen de grupos de señales de la cámara

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. Subsistema de audio

4.1 Arquitectura de audio

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
ComponenteModeloTipoInterfaz
MicrófonoAP2718ATMicrófono MEMS de silicio analógicoAnalógico diferencial → ADC del ES8311
CódecES8311Códec de audio (I2S+I2C)I2S=MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40, I2C=41/42, addr=0x30
AmplificadorNS4150BAmplificador analógico clase DSalida DAC del ES8311 → entrada analógica → altavoz

4.2 Pines I2S del códec ES8311

Señal I2SGPIO ESP32Función
MCLKIO39Reloj maestro
BCLK (SCLK)IO38Reloj de bits
LRCLK (WS)IO47Reloj de canal izquierdo/derecho
DOUT (DAC)IO48Salida de datos serie (reproducción)
DIN (ADC)IO40Entrada de datos serie (grabación)

El audio usa el modo I2S0 Standard Duplex; el códec ES8311 admite grabación y reproducción a la vez.

4.3 Control I2C del ES8311

Señal I2CGPIODescripción
SDAIO41Bus I2C compartido con la cámara
SCLIO42Bus I2C compartido con la cámara
Dirección0x30Dirección I2C de 8 bits del ES8311

5. Sistema de alimentación

5.1 Cadena de alimentación

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 Componentes clave

ChipModeloFunción
LDOME6217C33P5G (SOT-89-5)Regulación 5V→3.3V
LDOME6211A18M3G (SOT-23)5V→1.8V (núcleo de la cámara)
LDOME6211A28M3G ×2 (SOT-23)5V→2.8V (U6=AVDD, U7=DOVDD)
Filtro de entrada de U1C14 (10μF) + C15 (0.1μF)Entrada del ME6217C33
Filtro de salida de U1C1 (22μF)Salida del ME6217C33
Protección contra polaridad inversaNCE3401 P-MOSFETProtección de la entrada de alimentación de la placa base
Resistencia de puertaR11 10KΩPuerta del P-MOS a tierra

6. Placa base y flasheo

Figura 2: serigrafía de pines en la cara posterior de la placa central (RXD/TXD/SCL/SDA/5V/GND, etc.)

6.1 USB a serie

ParámetroEspecificación
ChipCH340K
Interfaz USBUSB-C (USB1)
Conexión serieTXD→U0RXD (IO44), RXD→U0TXD (IO43) (cruzada)
Resistencias de adaptación USBR4, R5 22R/1% (en serie con D+/D-)
DTR/RTSControl automático de BOOT + EN para el flasheo con un clic

Figura 3: cara frontal de la placa base (USB-C e interfaz de expansión)

6.2 Circuito de flasheo automático con un clic

Para el flasheo automático se usan Q1 y Q2 (transistores NPN S8050):

Señal CH340KControlPin de destino
DTR→ Q1 →ESP32 EN (CHIP_PU)
RTS→ Q2 →ESP32 BOOT (IO0)

Principio: la herramienta de flasheo USB controla automáticamente la secuencia de BOOT y EN mediante la conmutación de DTR/RTS, sin necesidad de pulsar botones manualmente.

6.3 Tabla de pines del conector placa central ↔ placa base

Pin placa basePin placa centralNombre de señalGPIO ESP32Función
P1-1P1-1VDD50Salida de alimentación 5V
P1-2P1-2VDD50Salida de alimentación 5V
P1-3P1-3GNDTierra de alimentación
P1-4P1-4GNDTierra de alimentación
P1-5P1-5SDAIO41Datos I2C (compartido con cámara/ES8311)
P1-6P1-6SCLIO42Reloj I2C (compartido con cámara/ES8311)
P1-7P1-7U0TXDIO43Transmisión del puerto serie 0 (conecta al RXD del CH340K)
P1-8P1-8U0RXDIO44Recepción del puerto serie 0 (conecta al TXD del CH340K)
P2-1P2-1ESP_PIO20Datos diferenciales USB positivos (D+)
P2-2P2-2ESP_NIO19Datos diferenciales USB negativos (D-)
P2-3P2-3VDD33Salida de alimentación 3.3V
P2-4P2-4VDD33Salida de alimentación 3.3V
P2-5P2-5GNDTierra de alimentación
P2-6P2-6GNDTierra de alimentación
P2-7P2-7BOOTIO0Modo de arranque/flasheo
P2-8P2-8CHIP_PUENControl de reset del chip

Figura 4: serigrafía de pines en la cara posterior de la placa base

6.4 Interfaz de expansión de la placa base

InterfazSeñales expuestasUso
P3 (I2C, 4Pin)5V1, GND, SDA, SCLDispositivos I2C externos
P4 (UART, 4Pin)5V1, GND, ESP_P, ESP_NDispositivos USB/serie externos

7. Tabla completa de uso de GPIO

Total: 33 GPIO ocupados; alrededor de 8 GPIO disponibles.

GPIOFunciónSeñalNota
IO0BOOTBOOTModo de arranque/flasheo (botón S2, pull-up de 10K + antirrebote de 0.1μF)
IO1DVP D2CAM_Y4Datos de píxel bit2
IO2DVP D1CAM_Y3Datos de píxel bit1
IO3DVP D3CAM_Y5Datos de píxel bit3
IO4DVP D0CAM_Y2Datos de píxel bit0
IO5DVP D4CAM_Y6Datos de píxel bit4
IO6DVP PCLKCAM_PCLKEntrada de reloj de píxel
IO7DVP D5CAM_Y7Datos de píxel bit5
IO8DVP D6CAM_Y8Datos de píxel bit6
IO9DVP XCLKCAM_XCLKReloj maestro de la cámara (24MHz)
IO10DVP D7CAM_Y9Datos de píxel bit7
IO11DVP HREFCAM_HREFSincronización de línea
IO12DVP PWDNCAM_PWDNControl de apagado de la cámara
IO13DVP VSYNCCAM_VSYNCSincronización de fotogramas
IO14DVP RESETCAM_RESETReset de la cámara
IO18WS2812RGB_LED_DINEntrada de datos del LED RGB WS2812
IO19Diferencial USBD- (ESP_N)Datos diferenciales USB negativos (D-)
IO20Diferencial USBD+ (ESP_P)Datos diferenciales USB positivos (D+)
IO21WS2812 DOUTRGB_LED_DOUTSalida en cascada WS2812 (disponible si no hay cascada)
IO29SPI CSFlash_CSSelección de chip del Flash externo
IO30SPI SCLKFlash_CLKReloj del Flash externo
IO31SPI SOFlash_DOSalida de datos del Flash externo
IO32SPI SIFlash_DIEntrada de datos del Flash externo
IO33SPI HOLDFlash_HOLDHold del Flash externo
IO34SPI WPFlash_WPProtección contra escritura del Flash externo
IO38I2S BCLKI2S_BCLKReloj de bits del ES8311
IO39I2S MCLKI2S_MCLKReloj maestro del ES8311
IO40I2S DINI2S_DINEntrada de datos del ADC del ES8311
IO41I2C SDAI2C_SDACompartido entre cámara + ES8311 + I2C externo
IO42I2C SCLI2C_SCLCompartido entre cámara + ES8311 + I2C externo
IO43UART0 TXUTXDTransmisión del puerto serie 0 (CH340K de la placa base)
IO44UART0 RXURXDRecepción del puerto serie 0 (CH340K de la placa base)
IO47I2S WSI2S_WSSelección de palabra del ES8311 (LRCK)
IO48I2S DOUTI2S_DOUTSalida de datos del DAC del ES8311
ENCHIP_PURST/ENHabilitación/reset (botón S1, pull-up de 10K)

GPIO disponibles (no ocupados, ampliables)

GPIOCaracterísticaUso recomendado
IO15IO de propósito generalExpansión
IO16IO de propósito generalExpansión
IO17IO de propósito generalExpansión
IO35IO de propósito generalExpansión
IO36IO de propósito generalExpansión
IO37IO de propósito generalExpansión
IO45IO de propósito generalExpansión
IO46IO de propósito generalExpansión

⚠️ GPIO ocupados: 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

Cantidad disponible: 8 GPIO

8. Restricciones clave de diseño

8.1 Configuración del periférico I2S

  • El ESP32-S3 tiene dos controladores I2S:
    • I2S0: asignado al códec ES8311 (MCLK=IO39, BCLK=IO38, WS=IO47, DOUT=IO48, DIN=IO40), I2S Duplex bidireccional, compatible con grabación y reproducción a la vez
  • Control I2C del ES8311: SDA=IO41, SCL=IO42, dirección del dispositivo 0x30

8.2 Coexistencia de DMA entre DVP e I2S

  • El DVP usa un canal DMA del periférico LCD_CAM
  • El ES8311 usa el DMA de I2S0 (interfaz I2S única bidireccional)
  • Ambos no entran en conflicto, pero hay que tener en cuenta el ancho de banda de la PSRAM (8MB de PSRAM son suficientes)
  • GPIO45/46 no están conectados al audio y pueden usarse para otros fines; GPIO47 se usa para I2S WS

8.3 Uso compartido del bus I2C

  • IO41(SDA) + IO42(SCL) se conectan a la vez a la cámara y a la interfaz I2C externa
  • Resistencias pull-up de I2C: R12 (SDA, 4.7K/1%), R13 (SCL, 4.7K/1%), con pull-up a VDD33
  • Hay que asegurarse de que la dirección I2C de la cámara no entre en conflicto con los dispositivos externos
  • Dirección I2C predeterminada del OV2640: 0x60 (escritura) / 0x61 (lectura) — no entra en conflicto con el ES8311 (0x30)

8.4 Capacidad de Flash suficiente

  • Los 16MB de Flash ofrecen espacio de sobra para:
    • Esquema OTA de doble partición (factory + ota_0 + ota_1)
    • SPIFFS para el panel de administración web (~1MB)
    • Paquete de recursos multilingües de XiaoZhi AI (archivos .p3)
    • Partición de configuración NVS
    • Espacio reservado para actualizaciones
  • No hay que preocuparse por el tamaño del firmware; la IA multiagente cabe completa

8.5 Restricciones de los pines de entrada de la cámara DVP

  • D0-D7 y VSYNC/HREF/PCLK son pines de entrada, controlados por el sensor de la cámara
  • Al desarrollar el controlador hay que asegurarse de que estos pines se configuren únicamente en modo INPUT
  • Los pines de audio I2S (38,39,40,47,48) pueden configurarse en modo salida (compatible con el ESP32-S3)

9. Recomendaciones de configuración de ESP-IDF

9.1 Elementos clave de 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 Configuración de la cámara

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,
};

Próximos pasos