🧪 De nouveaux tutoriels arrivent — du bras robotique au capteur
Aller au contenu

ESP32-NanoCam — Spécifications matérielles ​

Acheter en boutique

Source : schémas NanoCamModule.pdf + NanoCAMBASE.pdf. Architecture : la carte principale (ESP32-S3 + caméra + audio) s'enfiche sur la carte de base (alimentation USB + flashage série).


1. Vue d'ensemble du matériel ​

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

Figure 1 : face avant de la carte principale (ESP32-S3 / caméra / audio)


2. MCU et stockage ​

2.1 MCU ​

ParamètreSpécification
ModèleESP32-S3 N16R8
BoîtierQFN56
CPUXtensa LX7 double cœur 240MHz
PSRAM8MB (Octal SPI, suffixe R8)
Flash16MB (suffixe N16, SPI Flash externe 128M-bit)
HorlogeQuartz passif 40MHz + 2 condensateurs d'adaptation 10pF

2.2 Stockage Flash ​

ParamètreSpécification
ModèleGD25Q128ESIG
Capacité128M-bit = 16MB
InterfaceSPI (4 fils standard)
MarqueGigaDevice
Signal FlashGPIO ESP32-S3Fonction
CSIO29Sélection de puce
SO (DO)IO31Sortie de données
SI (DI)IO32Entrée de données
SCLKIO30Horloge
WPIO34Protection en écriture
HOLDIO33Maintien (Hold)

3. Sous-système caméra ​

3.1 Interface DVP ​

ParamètreSpécification
Type d'interfaceFPC 0.5 WS 24P (connecteur FPC 24 broches)
Capteurs pris en chargeGC2145 (par défaut) / OV2640 / OV5640 et autres caméras DVP
Bus de configuration I2CSDA=IO41, SCL=IO42 (partagé avec l'I2C externe)
Format de pixelRGB565 / JPEG / YUV422, etc.

Figure 4 : sérigraphie des broches au dos de la carte de base

3.2 Mappage complet des broches DVP ​

Catégorie de signalNom du signalGPIO ESP32Remarque
Horloge systèmeXCLKIO9Sortie d'horloge principale 24MHz
Horloge pixelPCLKIO6Entrée d'horloge pixel caméra
Synchro de trameVSYNCIO13Synchronisation verticale
Synchro de ligneHREFIO11Référence horizontale
CommandePWDNIO12Contrôle power-down caméra
CommandeRESETIO14Réinitialisation caméra
I2CSDAIO41Données I2C caméra (partagées avec l'ES8311)
I2CSCLIO42Horloge I2C caméra (partagée avec l'ES8311)
Données D0Y2IO4Bit 0 des données pixel
Données D1Y3IO2Bit 1 des données pixel
Données D2Y4IO1Bit 2 des données pixel
Données D3Y5IO3Bit 3 des données pixel
Données D4Y6IO5Bit 4 des données pixel
Données D5Y7IO7Bit 5 des données pixel
Données D6Y8IO8Bit 6 des données pixel
Données D7Y9IO10Bit 7 des données pixel

3.3 Récapitulatif des groupes de signaux caméra ​

Plaintext
Groupe de signaux DVP caméra :
  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. Sous-système audio ​

4.1 Architecture audio ​

Plaintext
AP2718AT (micro MEMS analogique) → ES8311 Codec (ADC/DAC) → NS4150B (ampli analogique) → haut-parleur
                               ↕ I2S (MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40) + I2C (41/42, addr=0x30)
                            ESP32-S3
ComposantModèleTypeInterface
MicrophoneAP2718ATMicro MEMS analogiqueDifférentiel analogique → ADC ES8311
CodecES8311Codec audio (I2S+I2C)I2S=MCLK=39,BCLK=38,WS=47,DOUT=48,DIN=40, I2C=41/42, addr=0x30
AmplificateurNS4150BAmpli analogique classe DSortie DAC ES8311 → entrée analogique → haut-parleur

4.2 Broches I2S du codec ES8311 ​

Signal I2SGPIO ESP32Fonction
MCLKIO39Horloge principale
BCLK (SCLK)IO38Horloge binaire
LRCLK (WS)IO47Horloge de canal gauche/droite
DOUT (DAC)IO48Sortie de données série (lecture)
DIN (ADC)IO40Entrée de données série (enregistrement)

L'audio utilise le mode I2S0 Standard Duplex ; le codec ES8311 prend en charge simultanément l'enregistrement et la lecture.

4.3 Contrôle I2C de l'ES8311 ​

Signal I2CGPIODescription
SDAIO41Bus I2C partagé avec la caméra
SCLIO42Bus I2C partagé avec la caméra
Adresse0x30Adresse I2C 8 bits de l'ES8311

5. Système d'alimentation ​

5.1 Chaîne d'alimentation ​

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 Composants clés ​

PuceModèleFonction
LDOME6217C33P5G (SOT-89-5)Régulation 5V→3.3V
LDOME6211A18M3G (SOT-23)5V→1.8V (cœur caméra)
LDOME6211A28M3G ×2 (SOT-23)5V→2.8V (U6=AVDD, U7=DOVDD)
Filtrage d'entrée U1C14 (10μF) + C15 (0.1μF)Entrée ME6217C33
Filtrage de sortie U1C1 (22μF)Sortie ME6217C33
Protection contre l'inversionNCE3401 P-MOSFETProtection de l'entrée d'alimentation de la carte de base
Résistance de grilleR11 10KΩGrille du P-MOS à la masse

6. Carte de base et flashage ​

Figure 5 : schéma de dimensions du module caméra GC2145 (champ de vision 68°)

6.1 USB vers série ​

ParamètreSpécification
PuceCH340K
Interface USBUSB-C (USB1)
Connexion sérieTXD→U0RXD (IO44), RXD→U0TXD (IO43) (croisées)
Résistances d'adaptation USBR4, R5 22R/1% (en série sur D+/D-)
DTR/RTSContrôle automatique BOOT + EN pour le flashage en un clic

Figure 2 : sérigraphie des broches au dos de la carte principale (RXD/TXD/SCL/SDA/5V/GND, etc.)

6.2 Circuit de flashage automatique ​

Utilise Q1, Q2 (transistors NPN S8050) pour le flashage automatique :

Signal CH340KCommandeBroche cible
DTR→ Q1 →ESP32 EN (CHIP_PU)
RTS→ Q2 →ESP32 BOOT (IO0)

Principe : l'outil de flashage USB bascule DTR/RTS pour contrôler automatiquement la séquence BOOT et EN, sans appui manuel sur les boutons.

6.3 Tableau des broches du connecteur carte principale ↔ carte de base ​

Broche carte de baseBroche carte principaleNom du signalGPIO ESP32Fonction
P1-1P1-1VDD50—Sortie d'alimentation 5V
P1-2P1-2VDD50—Sortie d'alimentation 5V
P1-3P1-3GND—Masse d'alimentation
P1-4P1-4GND—Masse d'alimentation
P1-5P1-5SDAIO41Données I2C (partagées avec caméra/ES8311)
P1-6P1-6SCLIO42Horloge I2C (partagée avec caméra/ES8311)
P1-7P1-7U0TXDIO43Émission UART0 (vers CH340K RXD)
P1-8P1-8U0RXDIO44Réception UART0 (vers CH340K TXD)
P2-1P2-1ESP_PIO20Données différentielles USB positives (D+)
P2-2P2-2ESP_NIO19Données différentielles USB négatives (D-)
P2-3P2-3VDD33—Sortie d'alimentation 3.3V
P2-4P2-4VDD33—Sortie d'alimentation 3.3V
P2-5P2-5GND—Masse d'alimentation
P2-6P2-6GND—Masse d'alimentation
P2-7P2-7BOOTIO0Mode de démarrage / flashage
P2-8P2-8CHIP_PUENContrôle de réinitialisation de la puce

Figure 3 : face avant de la carte de base (USB-C et interfaces d'extension)

6.4 Interfaces d'extension de la carte de base ​

InterfaceSignauxUtilisation
P3 (I2C, 4 broches)5V1, GND, SDA, SCLPériphériques I2C externes
P4 (UART, 4 broches)5V1, GND, ESP_P, ESP_NPériphériques USB/série externes

7. Tableau complet d'occupation des GPIO ​

Total : 33 GPIO occupés, environ 8 GPIO disponibles.

GPIOFonctionSignalRemarque
IO0BOOTBOOTMode de démarrage / flashage (bouton S2, pull-up 10K + anti-rebond 0.1μF)
IO1DVP D2CAM_Y4Bit 2 des données pixel
IO2DVP D1CAM_Y3Bit 1 des données pixel
IO3DVP D3CAM_Y5Bit 3 des données pixel
IO4DVP D0CAM_Y2Bit 0 des données pixel
IO5DVP D4CAM_Y6Bit 4 des données pixel
IO6DVP PCLKCAM_PCLKEntrée d'horloge pixel
IO7DVP D5CAM_Y7Bit 5 des données pixel
IO8DVP D6CAM_Y8Bit 6 des données pixel
IO9DVP XCLKCAM_XCLKHorloge principale caméra (24MHz)
IO10DVP D7CAM_Y9Bit 7 des données pixel
IO11DVP HREFCAM_HREFSynchronisation de ligne
IO12DVP PWDNCAM_PWDNContrôle power-down caméra
IO13DVP VSYNCCAM_VSYNCSynchronisation de trame
IO14DVP RESETCAM_RESETRéinitialisation caméra
IO18WS2812RGB_LED_DINEntrée de données de la LED RGB WS2812
IO19USB différentielD- (ESP_N)Données différentielles USB négatives (D-)
IO20USB différentielD+ (ESP_P)Données différentielles USB positives (D+)
IO21WS2812 DOUTRGB_LED_DOUTSortie en cascade WS2812 (libre si non utilisée)
IO29SPI CSFlash_CSSélection de puce de la Flash externe
IO30SPI SCLKFlash_CLKHorloge de la Flash externe
IO31SPI SOFlash_DOSortie de données de la Flash externe
IO32SPI SIFlash_DIEntrée de données de la Flash externe
IO33SPI HOLDFlash_HOLDHold de la Flash externe
IO34SPI WPFlash_WPProtection en écriture de la Flash externe
IO38I2S BCLKI2S_BCLKHorloge binaire ES8311
IO39I2S MCLKI2S_MCLKHorloge principale ES8311
IO40I2S DINI2S_DINEntrée de données ADC ES8311
IO41I2C SDAI2C_SDAPartagé caméra + ES8311 + I2C externe
IO42I2C SCLI2C_SCLPartagé caméra + ES8311 + I2C externe
IO43UART0 TXUTXDÉmission UART0 (CH340K de la carte de base)
IO44UART0 RXURXDRéception UART0 (CH340K de la carte de base)
IO47I2S WSI2S_WSSélection de mot ES8311 (LRCK)
IO48I2S DOUTI2S_DOUTSortie de données DAC ES8311
ENCHIP_PURST/ENActivation/réinitialisation (bouton S1, pull-up 10K)

GPIO disponibles (libres, extensibles) ​

GPIOCaractéristiqueUtilisation suggérée
IO15IO génériqueExtension
IO16IO génériqueExtension
IO17IO génériqueExtension
IO35IO génériqueExtension
IO36IO génériqueExtension
IO37IO génériqueExtension
IO45IO génériqueExtension
IO46IO génériqueExtension

⚠️ GPIO occupés : 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 Nombre disponible : 8 GPIO


8. Contraintes de conception clés ​

8.1 Configuration du périphérique I2S ​

  • L'ESP32-S3 dispose de deux contrôleurs I2S :
    • I2S0 : attribué au codec ES8311 (MCLK=IO39, BCLK=IO38, WS=IO47, DOUT=IO48, DIN=IO40), I2S Duplex bidirectionnel, enregistrement et lecture simultanés
  • Contrôle I2C de l'ES8311 : SDA=IO41, SCL=IO42, adresse du composant 0x30

8.2 Coexistence du DVP et du DMA I2S ​

  • Le DVP utilise le canal DMA du périphérique LCD_CAM
  • L'ES8311 utilise le DMA I2S0 (une seule interface I2S bidirectionnelle)
  • Les deux ne sont pas en conflit, mais attention à la bande passante PSRAM (8MB de PSRAM suffisent)
  • GPIO45/46 ne sont pas connectés à l'audio et peuvent servir à d'autres usages ; GPIO47 est utilisé pour I2S WS

8.3 Partage du bus I2C ​

  • IO41(SDA) + IO42(SCL) sont connectés à la fois à la caméra et à l'interface I2C externe
  • Résistances de pull-up I2C : R12 (SDA, 4.7K/1%), R13 (SCL, 4.7K/1%), tirées vers VDD33
  • S'assurer que l'adresse I2C de la caméra n'entre pas en conflit avec les périphériques externes
  • Adresse I2C par défaut de l'OV2640 : 0x60 (écriture) / 0x61 (lecture) — pas de conflit avec l'ES8311 (0x30)

8.4 Capacité de la Flash suffisante ​

  • 16MB de Flash offrent un espace confortable, permettant de prendre en charge :
    • Schéma double partition OTA (factory + ota_0 + ota_1)
    • SPIFFS pour l'interface d'administration Web (~1MB)
    • Packs de ressources multilingues XiaoZhi AI (fichiers .p3)
    • Partition de configuration NVS
    • Espace réservé pour les mises à jour
  • Aucune inquiétude sur la taille du firmware : les agents IA multiples peuvent être intégralement embarqués

8.5 Contraintes des broches d'entrée de la caméra DVP ​

  • D0-D7 ainsi que VSYNC/HREF/PCLK sont des broches d'entrée, pilotées par le capteur caméra
  • Lors du développement du pilote, veiller à ce que ces broches soient configurées uniquement en mode INPUT
  • Les broches audio I2S (38,39,40,47,48) peuvent être configurées en mode sortie (pris en charge par l'ESP32-S3)

9. Recommandations de configuration ESP-IDF ​

9.1 Éléments clés du sdkconfig ​

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

# Caméra
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

# Audio (codec ES8311, I2S0)
# ES8311 I2S: MCLK=39, BCLK=38, WS=47, DOUT=48, DIN=40
# ES8311 I2C: SDA=41, SCL=42, addr=0x30

9.2 Configuration de la caméra ​

C
// Configuration des broches 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,
};

Étapes suivantes ​