🧪 新教程持續更新中 · 由機械臂到傳感器,跟隨教程從零搭建
跳到主要內容

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

下一步