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

ESP32-NanoCam Spécifications matérielles

Acheter en boutique

1. Vue d'ensemble du matériel

Les informations matérielles de cette section proviennent des schémas NanoCamModule.pdf + NanoCamBASE.pdf. Architecture de l'ensemble : la carte principale (ESP32-S3 + caméra + audio) s'enfiche sur la carte de base (alimentation USB + flashage série).

Plaintext
┌─────────────────────────────────────────────────────────┐
│                  Carte principale NanoCam                │
│  ┌──────────┐  ┌──────────┐  ┌────────────┐            │
│  │ ESP32-S3 │  │ ES8311   │  │ NS4150B    │            │
│  │   R8     │  │ Micro I2S│  │ Ampli I2S  │            │
│  │ (QFN56)  │  │          │  │            │            │
│  └────┬─────┘  └──────────┘  └────────────┘            │
│       │                                                 │
│  ┌────┴─────┐  ┌──────────┐  ┌────────────┐            │
│  │ GD25Q128 │  │  DVP     │  │ ME6217C33  │            │
│  │16MB Flash│  │ Caméra   │  │ 3.3V LDO   │            │
│  └──────────┘  │ FPC-24P  │  └────────────┘            │
│                └──────────┘                             │
├─────────────────────────────────────────────────────────┤
│                  Carte de base NanoCam                   │
│  ┌──────────┐  ┌──────────┐  ┌────────────────────┐    │
│  │ USB-C    │  │ CH340K   │  │ Flashage auto      │    │
│  │ Entrée 5V│  │ USB-UART │  │ (DTR/RTS→BOOT/EN)  │    │
│  └──────────┘  └──────────┘  └────────────────────┘    │
│                                                         │
│  Interfaces d'extension : 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 5 : schéma de dimensions du module caméra GC2145 (champ de vision 68°)

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) ──→ carte de base NCE3401 P-MOSFET protection contre l'inversion ──→ VDD50

                    ┌─────────────────────────┤
                    ↓                         ↓
            carte principale ME6217C33 LDO   NS4150B ampli
                    │                  (alimentation 5V directe)

                 VDD33 (3.3V)

        ┌───────────┼───────────┐
        ↓           ↓           ↓
    ESP32-S3    ES8311 Codec   GD25Q128 Flash
    Caméra DVP  Micro 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 2 : sérigraphie des broches au dos de la carte principale (RXD/TXD/SCL/SDA/5V/GND, etc.)

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 3 : face avant de la carte de base (USB-C et interfaces d'extension)

6.2 Circuit de flashage automatique

Utilise Q1, Q2 (transistors NPN S8050) pour réaliser 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-1VDD50Sortie d'alimentation 5V
P1-2P1-2VDD50Sortie d'alimentation 5V
P1-3P1-3GNDMasse d'alimentation
P1-4P1-4GNDMasse 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-3VDD33Sortie d'alimentation 3.3V
P2-4P2-4VDD33Sortie d'alimentation 3.3V
P2-5P2-5GNDMasse d'alimentation
P2-6P2-6GNDMasse d'alimentation
P2-7P2-7BOOTIO0Mode de démarrage / flashage
P2-8P2-8CHIP_PUENContrôle de réinitialisation de la puce

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

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 DVP et 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 PSRAM suffisent)
  • GPIO45/46 ne sont pas connectés à l'audio et restent disponibles ; 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é Flash suffisante

  • 16MB Flash offre 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 s'intègrent entièrement

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, s'assurer que ces broches sont 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