🧪 新教程持续更新中 · 从机械臂到传感器,跟着教程从零搭建
跳到主要内容

ESP32-NanoCam 硬件规格书

淘宝店铺

一、硬件总览

本节硬件资料来源于 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.1 主控芯片

参数规格
型号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 (标准四线)
品牌GigaDevice
Flash 信号ESP32-S3 GPIO功能
CSIO29片选
SO (DO)IO31数据输出
SI (DI)IO32数据输入
SCLKIO30时钟
WPIO34写保护
HOLDIO33保持

三、摄像头子系统

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.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.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 栅极接地

六、底板与烧录

图 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/串口设备

七、完整 GPIO 占用表

总计: 33 个 GPIO 被占用,可用 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

可用数量: 8 个 GPIO

八、关键设计约束

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 存放 Web 管理后台 (~1MB)
    • 小智 AI 多语言资源包 (.p3 文件)
    • NVS 配置分区
    • 预留升级空间
  • 无需担心固件体积,多 Agent AI 可以完整装入

8.5 DVP 摄像头输入引脚约束

  • D0-D7 及 VSYNC/HREF/PCLK 均为输入引脚,由摄像头传感器驱动
  • 驱动程序开发时必须确保这些引脚仅配置为 INPUT 模式
  • I2S 音频引脚 (38,39,40,47,48) 可配置为输出模式 (ESP32-S3 支持)

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

下一步