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 │
└─────────────────────────────────────────────────────────┘
二、主控與存儲
2.1 主控芯片
| 參數 | 規格 |
|---|---|
| 型號 | ESP32-S3 N16R8 |
| 封裝 | QFN56 |
| CPU | Xtensa LX7 雙核 240MHz |
| PSRAM | 8MB (Octal SPI, R8 後綴) |
| Flash | 16MB (N16 後綴, 外掛 128M-bit SPI Flash) |
| 時鐘 | 40MHz 無源晶體 + 10pF×2 匹配電容 |
2.2 Flash 存儲
| 參數 | 規格 |
|---|---|
| 型號 | GD25Q128ESIG |
| 容量 | 128M-bit = 16MB |
| 接口 | SPI (標準四線) |
| 品牌 | GigaDevice |
| Flash 信號 | ESP32-S3 GPIO | 功能 |
|---|---|---|
| CS | IO29 | 片選 |
| SO (DO) | IO31 | 數據輸出 |
| SI (DI) | IO32 | 數據輸入 |
| SCLK | IO30 | 時鐘 |
| WP | IO34 | 寫保護 |
| HOLD | IO33 | 保持 |
三、攝像頭子系統
3.1 DVP 接口
| 參數 | 規格 |
|---|---|
| 接口類型 | FPC 0.5 WS 24P (24Pin FPC 排座) |
| 支援 Sensor | GC2145(默認) / OV2640 / OV5640 等 DVP 攝像頭 |
| I2C 配置總線 | SDA=IO41, SCL=IO42 (與外部 I2C 共用) |
| 像素格式 | RGB565 / JPEG / YUV422 等 |

3.2 DVP 引腳全映射
| 信號類別 | 信號名 | ESP32 GPIO | 備註 |
|---|---|---|---|
| 系統時鐘 | XCLK | IO9 | 主時鐘輸出 24MHz |
| 像素時鐘 | PCLK | IO6 | 攝像頭像素時鐘輸入 |
| 幀同步 | VSYNC | IO13 | 垂直同步 |
| 行同步 | HREF | IO11 | 水平參考 |
| 控制 | PWDN | IO12 | 攝像頭斷電控制 |
| 控制 | RESET | IO14 | 攝像頭復位 |
| I2C | SDA | IO41 | 攝像頭 I2C 數據 (與 ES8311 共用) |
| I2C | SCL | IO42 | 攝像頭 I2C 時鐘 (與 ES8311 共用) |
| 數據 D0 | Y2 | IO4 | 像素數據 bit0 |
| 數據 D1 | Y3 | IO2 | 像素數據 bit1 |
| 數據 D2 | Y4 | IO1 | 像素數據 bit2 |
| 數據 D3 | Y5 | IO3 | 像素數據 bit3 |
| 數據 D4 | Y6 | IO5 | 像素數據 bit4 |
| 數據 D5 | Y7 | IO7 | 像素數據 bit5 |
| 數據 D6 | Y8 | IO8 | 像素數據 bit6 |
| 數據 D7 | Y9 | IO10 | 像素數據 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 |
| 功放 | NS4150B | D 類模擬功放 | ES8311 DAC 輸出 → 模擬輸入 → 揚聲器 |
4.2 ES8311 Codec I2S 引腳
| I2S 信號 | ESP32 GPIO | 功能 |
|---|---|---|
| MCLK | IO39 | 主時鐘 |
| BCLK (SCLK) | IO38 | 位時鐘 |
| LRCLK (WS) | IO47 | 左右聲道時鐘 |
| DOUT (DAC) | IO48 | 串行數據輸出 (播放) |
| DIN (ADC) | IO40 | 串行數據輸入 (錄音) |
音頻使用 I2S0 Standard Duplex 模式,ES8311 Codec 同時支援錄音和播放。
4.3 ES8311 I2C 控制
| I2C 信號 | GPIO | 說明 |
|---|---|---|
| SDA | IO41 | 與攝像頭共用 I2C 總線 |
| SCL | IO42 | 與攝像頭共用 I2C 總線 |
| 地址 | 0x30 | ES8311 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 LDO5.2 關鍵器件
| 芯片 | 型號 | 功能 |
|---|---|---|
| LDO | ME6217C33P5G (SOT-89-5) | 5V→3.3V 穩壓 |
| LDO | ME6211A18M3G (SOT-23) | 5V→1.8V (攝像頭核心) |
| LDO | ME6211A28M3G ×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.1 USB 轉串口
| 參數 | 規格 |
|---|---|
| 芯片 | CH340K |
| USB 接口 | USB-C (USB1) |
| 串口連接 | TXD→U0RXD (IO44), RXD→U0TXD (IO43) (交叉) |
| USB 匹配電阻 | R4, R5 22R/1% (D+/D- 串聯) |
| DTR/RTS | 一鍵燒錄自動控制 BOOT + EN |

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-1 | P1-1 | VDD50 | — | 5V 電源輸出 |
| P1-2 | P1-2 | VDD50 | — | 5V 電源輸出 |
| P1-3 | P1-3 | GND | — | 電源地 |
| P1-4 | P1-4 | GND | — | 電源地 |
| P1-5 | P1-5 | SDA | IO41 | I2C 數據 (與攝像頭/ES8311 共用) |
| P1-6 | P1-6 | SCL | IO42 | I2C 時鐘 (與攝像頭/ES8311 共用) |
| P1-7 | P1-7 | U0TXD | IO43 | 串口 0 發送 (接 CH340K RXD) |
| P1-8 | P1-8 | U0RXD | IO44 | 串口 0 接收 (接 CH340K TXD) |
| P2-1 | P2-1 | ESP_P | IO20 | USB 差分數據正 (D+) |
| P2-2 | P2-2 | ESP_N | IO19 | USB 差分數據負 (D-) |
| P2-3 | P2-3 | VDD33 | — | 3.3V 電源輸出 |
| P2-4 | P2-4 | VDD33 | — | 3.3V 電源輸出 |
| P2-5 | P2-5 | GND | — | 電源地 |
| P2-6 | P2-6 | GND | — | 電源地 |
| P2-7 | P2-7 | BOOT | IO0 | 啟動模式/燒錄 |
| P2-8 | P2-8 | CHIP_PU | EN | 芯片復位控制 |

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 | 功能 | 信號 | 備註 |
|---|---|---|---|
| IO0 | BOOT | BOOT | 啟動模式/燒錄 (S2 按鍵, 10K 上拉 + 0.1μF 消抖) |
| IO1 | DVP D2 | CAM_Y4 | 像素數據 bit2 |
| IO2 | DVP D1 | CAM_Y3 | 像素數據 bit1 |
| IO3 | DVP D3 | CAM_Y5 | 像素數據 bit3 |
| IO4 | DVP D0 | CAM_Y2 | 像素數據 bit0 |
| IO5 | DVP D4 | CAM_Y6 | 像素數據 bit4 |
| IO6 | DVP PCLK | CAM_PCLK | 像素時鐘輸入 |
| IO7 | DVP D5 | CAM_Y7 | 像素數據 bit5 |
| IO8 | DVP D6 | CAM_Y8 | 像素數據 bit6 |
| IO9 | DVP XCLK | CAM_XCLK | 攝像頭主時鐘 (24MHz) |
| IO10 | DVP D7 | CAM_Y9 | 像素數據 bit7 |
| IO11 | DVP HREF | CAM_HREF | 行同步 |
| IO12 | DVP PWDN | CAM_PWDN | 攝像頭斷電控制 |
| IO13 | DVP VSYNC | CAM_VSYNC | 幀同步 |
| IO14 | DVP RESET | CAM_RESET | 攝像頭復位 |
| IO18 | WS2812 | RGB_LED_DIN | WS2812 RGB LED 數據輸入 |
| IO19 | USB 差分 | D- (ESP_N) | USB 差分數據負 (D-) |
| IO20 | USB 差分 | D+ (ESP_P) | USB 差分數據正 (D+) |
| IO21 | WS2812 DOUT | RGB_LED_DOUT | WS2812 級聯輸出 (未級聯時可用) |
| IO29 | SPI CS | Flash_CS | 外置 Flash 片選 |
| IO30 | SPI SCLK | Flash_CLK | 外置 Flash 時鐘 |
| IO31 | SPI SO | Flash_DO | 外置 Flash 數據輸出 |
| IO32 | SPI SI | Flash_DI | 外置 Flash 數據輸入 |
| IO33 | SPI HOLD | Flash_HOLD | 外置 Flash Hold |
| IO34 | SPI WP | Flash_WP | 外置 Flash 寫保護 |
| IO38 | I2S BCLK | I2S_BCLK | ES8311 位時鐘 |
| IO39 | I2S MCLK | I2S_MCLK | ES8311 主時鐘 |
| IO40 | I2S DIN | I2S_DIN | ES8311 ADC 數據輸入 |
| IO41 | I2C SDA | I2C_SDA | 攝像頭 + ES8311 + 外部 I2C 共用 |
| IO42 | I2C SCL | I2C_SCL | 攝像頭 + ES8311 + 外部 I2C 共用 |
| IO43 | UART0 TX | UTXD | 串口 0 發送 (底板 CH340K) |
| IO44 | UART0 RX | URXD | 串口 0 接收 (底板 CH340K) |
| IO47 | I2S WS | I2S_WS | ES8311 字選擇 (LRCK) |
| IO48 | I2S DOUT | I2S_DOUT | ES8311 DAC 數據輸出 |
| EN | CHIP_PU | RST/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=0x309.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,
};
