🧪 Novos tutoriais em andamento — do braço robótico ao sensor
Ir para o conteúdo
Compre este produtoLoja oficialSite oficial

Especificações de hardware do ESP32-NanoCam

Comprar na loja

1. Visão geral do hardware

Os materiais de hardware desta seção vêm dos esquemas NanoCamModule.pdf + NanoCamBASE.pdf. Arquitetura do conjunto: a placa principal (ESP32-S3 + câmera + áudio) encaixa-se na placa base (alimentação USB + gravação via serial).

Plaintext
┌─────────────────────────────────────────────────────────┐
│                   Placa Principal NanoCam               │
│  ┌───────────┐  ┌───────────┐  ┌────────────┐           │
│  │ ESP32-S3  │  │ ES8311    │  │ NS4150B    │           │
│  │ R8        │  │ Mic I2S   │  │ Amp I2S    │           │
│  │ (QFN56)   │  │           │  │            │           │
│  └────┬──────┘  └───────────┘  └────────────┘           │
│       │                                                 │
│  ┌────┴──────┐  ┌───────────┐  ┌────────────┐           │
│  │ GD25Q128  │  │ DVP       │  │ ME6217C33  │           │
│  │ 16MB Flash│  │ Câmera    │  │ 3.3V LDO   │           │
│  └───────────┘  │ FPC-24P   │  └────────────┘           │
│                 └───────────┘                           │
├─────────────────────────────────────────────────────────┤
│                   Placa Base NanoCam                    │
│  ┌───────────┐  ┌───────────┐  ┌────────────────────┐   │
│  │ USB-C     │  │ CH340K    │  │ Gravação 1 clique  │   │
│  │ Ent. 5V   │  │ USB-UART  │  │ (DTR/RTS→BOOT/EN)  │   │
│  └───────────┘  └───────────┘  └────────────────────┘   │
│                                                         │
│  Expansão: I2C ×1, UART ×1, 5V/GND/3.3V                 │
└─────────────────────────────────────────────────────────┘

Figura 1: Frente da placa principal (ESP32-S3 / câmera / áudio)

2. MCU e armazenamento

2.1 MCU principal

ParâmetroEspecificação
ModeloESP32-S3 N16R8
EncapsulamentoQFN56
CPUXtensa LX7 dual-core 240MHz
PSRAM8MB (Octal SPI, sufixo R8)
Flash16MB (sufixo N16, SPI Flash externa de 128M-bit)
ClockCristal passivo de 40MHz + 2× capacitores de casamento de 10pF

2.2 Armazenamento Flash

ParâmetroEspecificação
ModeloGD25Q128ESIG
Capacidade128M-bit = 16MB
InterfaceSPI (padrão de quatro fios)
FabricanteGigaDevice
Sinal FlashGPIO do ESP32-S3Função
CSIO29Seleção de chip
SO (DO)IO31Saída de dados
SI (DI)IO32Entrada de dados
SCLKIO30Clock
WPIO34Proteção contra escrita
HOLDIO33Hold

3. Subsistema de câmera

3.1 Interface DVP

ParâmetroEspecificação
Tipo de interfaceFPC 0.5 WS 24P (conector FPC de 24 pinos)
Sensores suportadosGC2145 (padrão) / OV2640 / OV5640 e outras câmeras DVP
Barramento I2C de configuraçãoSDA=IO41, SCL=IO42 (compartilhado com o I2C externo)
Formato de pixelRGB565 / JPEG / YUV422 etc.

Figura 5: Desenho dimensional do módulo de câmera GC2145 (campo de visão de 68°)

3.2 Mapeamento completo dos pinos DVP

Categoria do sinalNome do sinalGPIO do ESP32Observações
Clock do sistemaXCLKIO9Saída de clock principal de 24MHz
Clock de pixelPCLKIO6Entrada de clock de pixel da câmera
Sincronismo de quadroVSYNCIO13Sincronismo vertical
Sincronismo de linhaHREFIO11Referência horizontal
ControlePWDNIO12Controle de desligamento da câmera
ControleRESETIO14Reset da câmera
I2CSDAIO41Dados I2C da câmera (compartilhado com o ES8311)
I2CSCLIO42Clock I2C da câmera (compartilhado com o ES8311)
Dados D0Y2IO4Dados de pixel bit0
Dados D1Y3IO2Dados de pixel bit1
Dados D2Y4IO1Dados de pixel bit2
Dados D3Y5IO3Dados de pixel bit3
Dados D4Y6IO5Dados de pixel bit4
Dados D5Y7IO7Dados de pixel bit5
Dados D6Y8IO8Dados de pixel bit6
Dados D7Y9IO10Dados de pixel bit7

3.3 Resumo dos grupos de sinais da câmera

Plaintext
Grupo de sinais DVP da câmera:
  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 áudio

4.1 Arquitetura de áudio

Plaintext
AP2718AT (mic MEMS analógico) → ES8311 Codec (ADC/DAC) → NS4150B (amp. analógico) → alto-falante
                               ↕ I2S (MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40) + I2C (41/42, addr=0x30)
                            ESP32-S3
ComponenteModeloTipoInterface
MicrofoneAP2718ATMicrofone MEMS de silício analógicoAnalógico diferencial → ADC do ES8311
CodecES8311Codec de áudio (I2S+I2C)I2S=MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40, I2C=41/42, addr=0x30
AmplificadorNS4150BAmplificador analógico classe DSaída DAC do ES8311 → entrada analógica → alto-falante

4.2 Pinos I2S do codec ES8311

Sinal I2SGPIO do ESP32Função
MCLKIO39Clock principal
BCLK (SCLK)IO38Clock de bits
LRCLK (WS)IO47Clock dos canais esquerdo/direito
DOUT (DAC)IO48Saída de dados serial (reprodução)
DIN (ADC)IO40Entrada de dados serial (gravação)

O áudio usa o modo I2S0 Standard Duplex; o codec ES8311 suporta gravação e reprodução simultâneas.

4.3 Controle I2C do ES8311

Sinal I2CGPIODescrição
SDAIO41Compartilha o barramento I2C com a câmera
SCLIO42Compartilha o barramento I2C com a câmera
Endereço0x30Endereço I2C de 8 bits do ES8311

5. Sistema de alimentação

5.1 Cadeia de alimentação

Plaintext
USB-C (5V) ──→ placa base NCE3401 P-MOSFET proteção contra polaridade inversa ──→ VDD50

                    ┌─────────────────────────────────────────────────────────┤
                    ↓                                                         ↓
   placa principal ME6217C33 LDO                                       NS4150B (amplificador)
                    │                                                  (5V direto)

                 VDD33 (3.3V)

        ┌───────────┼───────────┐
        ↓           ↓           ↓
    ESP32-S3    ES8311 Codec   GD25Q128 Flash
    Câmera DVP  Mic AP2718AT   ME6211A18/28 LDO

5.2 Componentes principais

ChipModeloFunção
LDOME6217C33P5G (SOT-89-5)Regulação 5V→3.3V
LDOME6211A18M3G (SOT-23)5V→1.8V (núcleo da câmera)
LDOME6211A28M3G ×2 (SOT-23)5V→2.8V (U6=AVDD, U7=DOVDD)
Filtro de entrada do U1C14 (10μF) + C15 (0.1μF)Entrada do ME6217C33
Filtro de saída do U1C1 (22μF)Saída do ME6217C33
Proteção contra polaridade inversaNCE3401 P-MOSFETProteção da entrada de alimentação da placa base
Resistor de gateR11 10KΩGate do P-MOS aterrado

6. Placa base e gravação

Figura 2: Serigrafia dos pinos no verso da placa principal (RXD/TXD/SCL/SDA/5V/GND etc.)

6.1 Conversor USB-serial

ParâmetroEspecificação
ChipCH340K
Interface USBUSB-C (USB1)
Conexão serialTXD→U0RXD (IO44), RXD→U0TXD (IO43) (cruzadas)
Resistores de casamento USBR4, R5 22R/1% (em série com D+/D-)
DTR/RTSGravação automática com um clique controla BOOT + EN

Figura 3: Frente da placa base (USB-C e interfaces de expansão)

6.2 Circuito de gravação com um clique

Usa Q1 e Q2 (transistores NPN S8050) para gravação automática:

Sinal do CH340KControlePino de destino
DTR→ Q1 →ESP32 EN (CHIP_PU)
RTS→ Q2 →ESP32 BOOT (IO0)

Princípio: a ferramenta de gravação USB alterna DTR/RTS para controlar automaticamente a sequência de BOOT e EN, sem necessidade de pressionar botões.

6.3 Tabela de pinos do conector placa principal ↔ placa base

Pino da placa basePino da placa principalNome do sinalGPIO do ESP32Função
P1-1P1-1VDD50Saída de alimentação 5V
P1-2P1-2VDD50Saída de alimentação 5V
P1-3P1-3GNDTerra de alimentação
P1-4P1-4GNDTerra de alimentação
P1-5P1-5SDAIO41Dados I2C (compartilhados com câmera/ES8311)
P1-6P1-6SCLIO42Clock I2C (compartilhado com câmera/ES8311)
P1-7P1-7U0TXDIO43Transmissão da serial 0 (para RXD do CH340K)
P1-8P1-8U0RXDIO44Recepção da serial 0 (para TXD do CH340K)
P2-1P2-1ESP_PIO20Dados diferenciais USB positivo (D+)
P2-2P2-2ESP_NIO19Dados diferenciais USB negativo (D-)
P2-3P2-3VDD33Saída de alimentação 3.3V
P2-4P2-4VDD33Saída de alimentação 3.3V
P2-5P2-5GNDTerra de alimentação
P2-6P2-6GNDTerra de alimentação
P2-7P2-7BOOTIO0Modo de boot/gravação
P2-8P2-8CHIP_PUENControle de reset do chip

Figura 4: Serigrafia dos pinos no verso da placa base

6.4 Interfaces de expansão da placa base

InterfaceSinais expostosUso
P3 (I2C, 4Pin)5V1, GND, SDA, SCLDispositivos I2C externos
P4 (UART, 4Pin)5V1, GND, ESP_P, ESP_NDispositivos USB/seriais externos

7. Tabela completa de ocupação de GPIO

Total: 33 GPIOs ocupados, cerca de 8 GPIOs disponíveis.

GPIOFunçãoSinalObservações
IO0BOOTBOOTModo de boot/gravação (botão S2, pull-up de 10K + debounce de 0.1μF)
IO1DVP D2CAM_Y4Dados de pixel bit2
IO2DVP D1CAM_Y3Dados de pixel bit1
IO3DVP D3CAM_Y5Dados de pixel bit3
IO4DVP D0CAM_Y2Dados de pixel bit0
IO5DVP D4CAM_Y6Dados de pixel bit4
IO6DVP PCLKCAM_PCLKEntrada de clock de pixel
IO7DVP D5CAM_Y7Dados de pixel bit5
IO8DVP D6CAM_Y8Dados de pixel bit6
IO9DVP XCLKCAM_XCLKClock principal da câmera (24MHz)
IO10DVP D7CAM_Y9Dados de pixel bit7
IO11DVP HREFCAM_HREFSincronismo de linha
IO12DVP PWDNCAM_PWDNControle de desligamento da câmera
IO13DVP VSYNCCAM_VSYNCSincronismo de quadro
IO14DVP RESETCAM_RESETReset da câmera
IO18WS2812RGB_LED_DINEntrada de dados do LED RGB WS2812
IO19Par diferencial USBD- (ESP_N)Dados diferenciais USB negativo (D-)
IO20Par diferencial USBD+ (ESP_P)Dados diferenciais USB positivo (D+)
IO21WS2812 DOUTRGB_LED_DOUTSaída em cascata do WS2812 (disponível quando não há cascata)
IO29SPI CSFlash_CSSeleção de chip da Flash externa
IO30SPI SCLKFlash_CLKClock da Flash externa
IO31SPI SOFlash_DOSaída de dados da Flash externa
IO32SPI SIFlash_DIEntrada de dados da Flash externa
IO33SPI HOLDFlash_HOLDHold da Flash externa
IO34SPI WPFlash_WPProteção contra escrita da Flash externa
IO38I2S BCLKI2S_BCLKClock de bits do ES8311
IO39I2S MCLKI2S_MCLKClock principal do ES8311
IO40I2S DINI2S_DINEntrada de dados do ADC do ES8311
IO41I2C SDAI2C_SDACompartilhado entre câmera + ES8311 + I2C externo
IO42I2C SCLI2C_SCLCompartilhado entre câmera + ES8311 + I2C externo
IO43UART0 TXUTXDTransmissão da serial 0 (CH340K da placa base)
IO44UART0 RXURXDRecepção da serial 0 (CH340K da placa base)
IO47I2S WSI2S_WSSeleção de palavra do ES8311 (LRCK)
IO48I2S DOUTI2S_DOUTSaída de dados do DAC do ES8311
ENCHIP_PURST/ENEnable/reset (botão S1, pull-up de 10K)

GPIOs disponíveis (não utilizados, expansíveis)

GPIOCaracterísticaUso sugerido
IO15IO de uso geralExpansão
IO16IO de uso geralExpansão
IO17IO de uso geralExpansão
IO35IO de uso geralExpansão
IO36IO de uso geralExpansão
IO37IO de uso geralExpansão
IO45IO de uso geralExpansão
IO46IO de uso geralExpansão

⚠️ GPIOs 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

Quantidade disponível: 8 GPIOs

8. Restrições de projeto importantes

8.1 Configuração do periférico I2S

  • O ESP32-S3 tem dois controladores I2S:
    • I2S0: atribuído ao codec ES8311 (MCLK=IO39, BCLK=IO38, WS=IO47, DOUT=IO48, DIN=IO40), I2S Duplex bidirecional, com suporte simultâneo a gravação e reprodução
  • Controle I2C do ES8311: SDA=IO41, SCL=IO42, endereço do dispositivo 0x30

8.2 Coexistência entre DVP e DMA do I2S

  • O DVP usa o canal DMA do periférico LCD_CAM
  • O ES8311 usa o DMA do I2S0 (interface I2S única bidirecional)
  • Os dois não entram em conflito, mas atenção à largura de banda da PSRAM (os 8MB de PSRAM são suficientes)
  • GPIO45/46 não têm conexão com o áudio e podem ter outros usos; GPIO47 é usado para I2S WS

8.3 Compartilhamento do barramento I2C

  • IO41(SDA) + IO42(SCL) conectam simultaneamente a câmera e a interface I2C externa
  • Resistores de pull-up I2C: R12 (SDA, 4.7K/1%), R13 (SCL, 4.7K/1%), com pull-up para VDD33
  • Garanta que o endereço I2C da câmera não conflite com os dispositivos externos
  • Endereço I2C padrão do OV2640: 0x60 (escrita) / 0x61 (leitura) — não conflita com o ES8311 (0x30)

8.4 Capacidade de Flash suficiente

  • 16MB de Flash oferecem espaço de sobra, com suporte a:
    • Esquema de partição dupla OTA (factory + ota_0 + ota_1)
    • SPIFFS para o painel de gerenciamento Web (~1MB)
    • Pacotes de recursos multilíngues do XiaoZhi AI (arquivos .p3)
    • Partição de configuração NVS
    • Espaço reservado para atualizações
  • Sem preocupação com o tamanho do firmware; o AI multi-Agent cabe por completo

8.5 Restrições dos pinos de entrada da câmera DVP

  • D0-D7 e VSYNC/HREF/PCLK são pinos de entrada, controlados pelo sensor da câmera
  • Ao desenvolver o driver, garanta que esses pinos sejam configurados apenas como modo INPUT
  • Os pinos de áudio I2S (38,39,40,47,48) podem ser configurados como modo de saída (suportado pelo ESP32-S3)

9. Recomendações de configuração do ESP-IDF

9.1 Itens principais do sdkconfig

Plaintext
# Chip
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

# Câmera
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

# Áudio (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 Configuração da câmera

C
// Configuração de pinos do 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,  // ou 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 passos