🧪 Neue Tutorials in Arbeit — vom Roboterarm bis zum Sensor
Zum Inhalt springen

ESP32-NanoCam Hardware-Spezifikation

Im Shop kaufen

1. Hardware-Übersicht

Die Hardware-Angaben in diesem Abschnitt stammen aus den Schaltplänen NanoCamModule.pdf + NanoCamBASE.pdf. Gesamtarchitektur: Das Kernboard (ESP32-S3 + Kamera + Audio) wird auf das Basisboard (USB-Stromversorgung + serielle Programmierung) gesteckt.

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

Abb. 1: Kernboard-Vorderseite (ESP32-S3 / Kamera / Audio)

2. MCU und Speicher

2.1 MCU-Chip

ParameterSpezifikation
ModellESP32-S3 N16R8
GehäuseQFN56
CPUXtensa LX7 Dual-Core 240MHz
PSRAM8MB (Octal SPI, Suffix R8)
Flash16MB (Suffix N16, externer 128M-bit-SPI-Flash)
Takt40MHz Quarz (passiv) + 10pF×2 Abgleichkondensatoren

2.2 Flash-Speicher

ParameterSpezifikation
ModellGD25Q128ESIG
Kapazität128M-bit = 16MB
SchnittstelleSPI (Standard, vier Leitungen)
HerstellerGigaDevice
Flash-SignalESP32-S3 GPIOFunktion
CSIO29Chip Select
SO (DO)IO31Datenausgang
SI (DI)IO32Dateneingang
SCLKIO30Takt
WPIO34Schreibschutz
HOLDIO33Halt

3. Kamera-Subsystem

3.1 DVP-Schnittstelle

ParameterSpezifikation
SchnittstellentypFPC 0.5 WS 24P (24-Pin-FPC-Sockel)
Unterstützte SensorenGC2145 (Standard) / OV2640 / OV5640 und weitere DVP-Kameras
I2C-KonfigurationsbusSDA=IO41, SCL=IO42 (geteilt mit externem I2C)
PixelformateRGB565 / JPEG / YUV422 u. a.

Abb. 5: Abmessungen des GC2145-Kameramoduls (68° Sichtfeld)

3.2 Vollständige DVP-Pinbelegung

SignalkategorieSignalnameESP32 GPIOBemerkung
SystemtaktXCLKIO9Haupttaktausgang 24MHz
PixeltaktPCLKIO6Pixel-Takteingang der Kamera
Frame-SyncVSYNCIO13Vertikalsynchronisation
Zeilen-SyncHREFIO11Horizontalreferenz
SteuerungPWDNIO12Kamera-Power-Down-Steuerung
SteuerungRESETIO14Kamera-Reset
I2CSDAIO41Kamera-I2C-Daten (geteilt mit ES8311)
I2CSCLIO42Kamera-I2C-Takt (geteilt mit ES8311)
Daten D0Y2IO4Pixeldaten bit0
Daten D1Y3IO2Pixeldaten bit1
Daten D2Y4IO1Pixeldaten bit2
Daten D3Y5IO3Pixeldaten bit3
Daten D4Y6IO5Pixeldaten bit4
Daten D5Y7IO7Pixeldaten bit5
Daten D6Y8IO8Pixeldaten bit6
Daten D7Y9IO10Pixeldaten bit7

3.3 Zusammenfassung der Kamera-Signalgruppen

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. Audio-Subsystem

4.1 Audio-Architektur

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
BauteilModellTypSchnittstelle
MikrofonAP2718ATAnaloges MEMS-SiliziummikrofonDifferentielles Analogsignal → ES8311 ADC
CodecES8311Audio-Codec (I2S+I2C)I2S=MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40, I2C=41/42, addr=0x30
VerstärkerNS4150BAnaloger Klasse-D-VerstärkerES8311 DAC 输出 → Analog-Eingang → Lautsprecher

4.2 ES8311-Codec-I2S-Pins

I2S-SignalESP32 GPIOFunktion
MCLKIO39Haupttakt
BCLK (SCLK)IO38Bittakt
LRCLK (WS)IO47Links/Rechts-Kanaltakt
DOUT (DAC)IO48Serieller Datenausgang (Wiedergabe)
DIN (ADC)IO40Serieller Dateneingang (Aufnahme)

Audio verwendet den I2S0-Standard-Duplex-Modus; der ES8311-Codec unterstützt gleichzeitig Aufnahme und Wiedergabe.

4.3 ES8311-I2C-Steuerung

I2C-SignalGPIOBeschreibung
SDAIO41Geteilter I2C-Bus mit der Kamera
SCLIO42Geteilter I2C-Bus mit der Kamera
Adresse0x30ES8311 8-bit-I2C-Adresse

5. Stromversorgung

5.1 Versorgungskette

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 Zentrale Bauteile

ChipModellFunktion
LDOME6217C33P5G (SOT-89-5)5V→3.3V-Regelung
LDOME6211A18M3G (SOT-23)5V→1.8V (Kamera-Kern)
LDOME6211A28M3G ×2 (SOT-23)5V→2.8V (U6=AVDD, U7=DOVDD)
U1 EingangsfilterC14 (10μF) + C15 (0.1μF)ME6217C33 Eingang
U1 AusgangsfilterC1 (22μF)ME6217C33 Ausgang
VerpolschutzNCE3401 P-MOSFETSchutz des Stromversorgungseingangs am Basisboard
Gate-WiderstandR11 10KΩP-MOS-Gate auf Masse

6. Basisboard und Flashen

Abb. 2: Pinbeschriftung der Kernboard-Rückseite (RXD/TXD/SCL/SDA/5V/GND usw.)

6.1 USB-zu-Seriell

ParameterSpezifikation
ChipCH340K
USB-SchnittstelleUSB-C (USB1)
Serielle VerbindungTXD→U0RXD (IO44), RXD→U0TXD (IO43) (gekreuzt)
USB-AbgleichwiderständeR4, R5 22R/1% (in Reihe zu D+/D-)
DTR/RTSEin-Klick-Programmierung steuert BOOT + EN automatisch

Abb. 3: Basisboard-Vorderseite (USB-C und Erweiterungsschnittstellen)

6.2 Ein-Klick-Download-Schaltung

Die automatische Programmierung erfolgt über Q1, Q2 (S8050 NPN-Transistoren):

CH340K-SignalSteuerungZielpin
DTR→ Q1 →ESP32 EN (CHIP_PU)
RTS→ Q2 →ESP32 BOOT (IO0)

Prinzip: Das USB-Flash-Tool steuert über DTR/RTS-Umschaltung automatisch die BOOT- und EN-Sequenz — kein manueller Tastendruck erforderlich.

6.3 Steckverbinder Kernboard↔Basisboard

Basisboard-StiftleisteKernboard-StiftleisteSignalnameESP32 GPIOFunktion
P1-1P1-1VDD505V-Stromversorgungsausgang
P1-2P1-2VDD505V-Stromversorgungsausgang
P1-3P1-3GNDMasse
P1-4P1-4GNDMasse
P1-5P1-5SDAIO41I2C-Daten (geteilt mit Kamera/ES8311)
P1-6P1-6SCLIO42I2C-Takt (geteilt mit Kamera/ES8311)
P1-7P1-7U0TXDIO43UART0 Senden (an CH340K RXD)
P1-8P1-8U0RXDIO44UART0 Empfangen (an CH340K TXD)
P2-1P2-1ESP_PIO20USB-Differenzdaten positiv (D+)
P2-2P2-2ESP_NIO19USB-Differenzdaten negativ (D-)
P2-3P2-3VDD333.3V-Stromversorgungsausgang
P2-4P2-4VDD333.3V-Stromversorgungsausgang
P2-5P2-5GNDMasse
P2-6P2-6GNDMasse
P2-7P2-7BOOTIO0Boot-Modus/Programmierung
P2-8P2-8CHIP_PUENChip-Reset-Steuerung

Abb. 4: Pinbeschriftung der Basisboard-Rückseite

6.4 Erweiterungsschnittstellen des Basisboards

SchnittstelleHerausgeführte SignaleVerwendung
P3 (I2C, 4Pin)5V1, GND, SDA, SCLExterne I2C-Geräte
P4 (UART, 4Pin)5V1, GND, ESP_P, ESP_NExterne USB-/Seriellgeräte

7. Vollständige GPIO-Belegungstabelle

Gesamt: 33 GPIOs sind belegt, ca. 8 GPIOs verfügbar.

GPIOFunktionSignalBemerkung
IO0BOOTBOOTBoot-Modus/Programmierung (S2-Taste, 10K Pull-up + 0.1μF Entprellung)
IO1DVP D2CAM_Y4Pixeldaten bit2
IO2DVP D1CAM_Y3Pixeldaten bit1
IO3DVP D3CAM_Y5Pixeldaten bit3
IO4DVP D0CAM_Y2Pixeldaten bit0
IO5DVP D4CAM_Y6Pixeldaten bit4
IO6DVP PCLKCAM_PCLKPixel-Takteingang
IO7DVP D5CAM_Y7Pixeldaten bit5
IO8DVP D6CAM_Y8Pixeldaten bit6
IO9DVP XCLKCAM_XCLKKamera-Haupttakt (24MHz)
IO10DVP D7CAM_Y9Pixeldaten bit7
IO11DVP HREFCAM_HREFZeilen-Synchronisation
IO12DVP PWDNCAM_PWDNKamera-Power-Down-Steuerung
IO13DVP VSYNCCAM_VSYNCFrame-Synchronisation
IO14DVP RESETCAM_RESETKamera-Reset
IO18WS2812RGB_LED_DINWS2812-RGB-LED-Dateneingang
IO19USB-DifferenzD- (ESP_N)USB-Differenzdaten negativ (D-)
IO20USB-DifferenzD+ (ESP_P)USB-Differenzdaten positiv (D+)
IO21WS2812 DOUTRGB_LED_DOUTWS2812-Kaskadenausgang (nutzbar, wenn nicht kaskadiert)
IO29SPI CSFlash_CSChip Select des externen Flash
IO30SPI SCLKFlash_CLKTakt des externen Flash
IO31SPI SOFlash_DODatenausgang des externen Flash
IO32SPI SIFlash_DIDateneingang des externen Flash
IO33SPI HOLDFlash_HOLDHOLD des externen Flash
IO34SPI WPFlash_WPSchreibschutz des externen Flash
IO38I2S BCLKI2S_BCLKES8311-Bittakt
IO39I2S MCLKI2S_MCLKES8311-Haupttakt
IO40I2S DINI2S_DINES8311-ADC-Dateneingang
IO41I2C SDAI2C_SDAGeteilt von Kamera + ES8311 + externem I2C
IO42I2C SCLI2C_SCLGeteilt von Kamera + ES8311 + externem I2C
IO43UART0 TXUTXDUART0 Senden (Basisboard CH340K)
IO44UART0 RXURXDUART0 Empfangen (Basisboard CH340K)
IO47I2S WSI2S_WSES8311-Wortauswahl (LRCK)
IO48I2S DOUTI2S_DOUTES8311-DAC-Datenausgang
ENCHIP_PURST/ENEnable/Reset (S1-Taste, 10K Pull-up)

Verfügbare GPIOs (nicht belegt, erweiterbar)

GPIOEigenschaftEmpfohlene Verwendung
IO15Universal-IOErweiterung
IO16Universal-IOErweiterung
IO17Universal-IOErweiterung
IO35Universal-IOErweiterung
IO36Universal-IOErweiterung
IO37Universal-IOErweiterung
IO45Universal-IOErweiterung
IO46Universal-IOErweiterung

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

Verfügbar: 8 GPIOs

8. Wichtige Design-Constraints

8.1 I2S-Peripheriekonfiguration

  • Der ESP32-S3 verfügt über zwei I2S-Controller:
    • I2S0: dem ES8311-Codec zugewiesen (MCLK=IO39, BCLK=IO38, WS=IO47, DOUT=IO48, DIN=IO40), bidirektionaler I2S-Duplex, unterstützt gleichzeitig Aufnahme und Wiedergabe
  • ES8311-I2C-Steuerung: SDA=IO41, SCL=IO42, Geräteadresse 0x30

8.2 Koexistenz von DVP- und I2S-DMA

  • DVP nutzt den DMA-Kanal der LCD_CAM-Peripherie
  • ES8311 nutzt I2S0-DMA (ein einziges I2S-Interface, bidirektional)
  • Beide kollidieren nicht, beachten Sie jedoch die PSRAM-Bandbreite (8MB PSRAM sind ausreichend)
  • GPIO45/46 sind nicht mit dem Audio verbunden und anderweitig nutzbar; GPIO47 wird für I2S WS verwendet

8.3 Gemeinsame I2C-Busnutzung

  • IO41 (SDA) + IO42 (SCL) verbinden gleichzeitig die Kamera und die externe I2C-Schnittstelle
  • I2C-Pull-up-Widerstände: R12 (SDA, 4.7K/1%), R13 (SCL, 4.7K/1%), Pull-up auf VDD33
  • Stellen Sie sicher, dass die Kamera-I2C-Adresse nicht mit externen Geräten kollidiert
  • OV2640-Standard-I2C-Adresse: 0x60 (Schreiben) / 0x61 (Lesen) — kein Konflikt mit ES8311 (0x30)

8.4 Ausreichende Flash-Kapazität

  • 16MB Flash bieten reichlich Platz und unterstützen:
    • OTA-Dual-Partitionierung (factory + ota_0 + ota_1)
    • SPIFFS für das Web-Verwaltungsbackend (~1MB)
    • XiaoZhi-AI-Mehrsprachigkeits-Ressourcenpaket (.p3-Datei)
    • NVS-Konfigurationspartition
    • Reserve für Upgrades
  • Keine Sorge um die Firmware-Größe — die Multi-Agent-AI passt vollständig hinein

8.5 Eingangspin-Vorgaben der DVP-Kamera

  • D0-D7 sowie VSYNC/HREF/PCLK sind Eingangspins und werden vom Kamerasensor getrieben
  • Bei der Treiberentwicklung müssen diese Pins zwingend nur als INPUT-Modus konfiguriert werden
  • Die I2S-Audiopins (38,39,40,47,48) können als Ausgang konfiguriert werden (vom ESP32-S3 unterstützt)

9. ESP-IDF-Konfigurationsempfehlungen

9.1 Wichtige sdkconfig-Einträge

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 Kamera-Konfiguration

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

Nächste Schritte