IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Comment utiliser l'image de la caméra ESP32-S3-N16R8 CAM development board


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut Comment utiliser l'image de la caméra ESP32-S3-N16R8 CAM development board
    Bonjour :)
    Je cherche à démarrer le module ESP32-S3-N16R8 CAM Development Board WiFi + Bluetooth with OV2640 camera for Arduino (acheté sur AliExpress).
    Je n'arrive pas à obtenir la documentation de ce produit précis (j'ai la doc de ESP32-S3-N16R8 VROOM : ce n'est pas le bon module).
    Je programme en C++ et j'utilise VSCode pour développer (je ne suis pas un "pro").
    J'utilise un programme généré par Le CHAT qui doit lire la caméra et envoyer l'image sur l'écran de mon PC.
    J'ai réussi à compiler le programme et à le charger dans le module ... mais il ne se passe rien : ni image, ni message d'erreur :(
    Le programme demande de définir le PINOUT du module (je n'ai pas cette information).
    Il y a 16 paramètres à définir : PWDN, RESET, XCLK, SIOD, SIOC, Y9, Y8, Y7, Y6, Y5, Y4, Y3, Y2, VSYNC, HREF et PCLK.
    J'ai testé 6 combinaisons de PINOUT extraites de divers programmes ESP32 CAM (ESP32 EYE, Espressif, XIAO CAM, AI thinker, WROOM, ...) sans succès.
    Aujourd'hui, je ne sais plus quoi tenter pour démarrer mon module ...
    Et j'aimerais beaucoup obtenir un peu d'aide ! Merci !!!

    platforIO.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [env:esp32-s3-devkitc1-n16r8]
    platform = espressif32
    board = esp32-s3-devkitc1-n16r8
    framework = arduino
    monitor_speed = 115200
    Programme C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    #include "Arduino.h"
    #include "esp_camera.h"
     
    // Définition des broches pour ESP32 S3 WROOM (China)
    #define PWDN_GPIO_NUM     -1
    #define RESET_GPIO_NUM    -1
    #define XCLK_GPIO_NUM     15
    #define SIOD_GPIO_NUM      4
    #define SIOC_GPIO_NUM      5
    #define Y9_GPIO_NUM       16
    #define Y8_GPIO_NUM       17
    #define Y7_GPIO_NUM       18
    #define Y6_GPIO_NUM       12
    #define Y5_GPIO_NUM       10
    #define Y4_GPIO_NUM        8
    #define Y3_GPIO_NUM        9
    #define Y2_GPIO_NUM       11
    #define VSYNC_GPIO_NUM     6
    #define HREF_GPIO_NUM      7
    #define PCLK_GPIO_NUM     13
     
    void setup() {
      Serial.begin(115200);
      Serial.setDebugOutput(true);
      Serial.println();
     
      // Initialisation de la caméra
      camera_config_t config;
      esp_camera_init(&config);
    if (esp_camera_init(&config) != ESP_OK) {
      Serial.println("Erreur d'initialisation de la caméra !");
      ESP.restart();
    } else {
      Serial.println("Caméra initialisée avec succès !");
    }
      config.ledc_channel = LEDC_CHANNEL_0;
      config.ledc_timer = LEDC_TIMER_0;
      config.pin_d0 = Y2_GPIO_NUM;
      config.pin_d1 = Y3_GPIO_NUM;
      config.pin_d2 = Y4_GPIO_NUM;
      config.pin_d3 = Y5_GPIO_NUM;
      config.pin_d4 = Y6_GPIO_NUM;
      config.pin_d5 = Y7_GPIO_NUM;
      config.pin_d6 = Y8_GPIO_NUM;
      config.pin_d7 = Y9_GPIO_NUM;
      config.pin_xclk = XCLK_GPIO_NUM;
      config.pin_pclk = PCLK_GPIO_NUM;
      config.pin_vsync = VSYNC_GPIO_NUM;
      config.pin_href = HREF_GPIO_NUM;
      config.pin_sscb_sda = SIOD_GPIO_NUM;
      config.pin_sscb_scl = SIOC_GPIO_NUM;
      config.pin_pwdn = PWDN_GPIO_NUM;
      config.pin_reset = RESET_GPIO_NUM;
      config.xclk_freq_hz = 20000000;
      config.pixel_format = PIXFORMAT_JPEG;
     
      // Initialisation avec PSRAM
      config.fb_count = 2;
      config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
     
      // Initialisation de la caméra
      esp_err_t err = esp_camera_init(&config);
      if (err != ESP_OK) {
        Serial.printf("Erreur d'initialisation de la caméra : 0x%x", err);
        return;
      }
     
      // Configuration de la résolution
      sensor_t *s = esp_camera_sensor_get();
      s->set_framesize(s, FRAMESIZE_QVGA); // 320x240
    }
     
    void loop() {
      // Capture d'une image
      camera_fb_t *fb = esp_camera_fb_get();
      if (!fb) {
        Serial.println("Échec de la capture d'image");
        return;
      }
     
      // Affichage de la taille de l'image
      Serial.printf("Image capturée : %u octets\n", fb->len);
     
      // Retour de l'image au pool
      esp_camera_fb_return(fb);
     
      delay(1000);
    }

    Photo du module "development board vs Wroom"
    Nom : Photo-ESP32-S3-N16R8-CAM.jpeg
Affichages : 88
Taille : 1,23 Mo

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 638
    Par défaut
    Hello,

    Vous auriez pu mettre le lien où vous l'avez acheté, bref je l'ai retrouvé... Apparemment le vendeur de ce module est Baishundianzi, et je me suis renseigné dessus... Apparemment ils sont spécialisés dans la vente de clone de ce type de module. Il faut donc trouver un équivalent, qui n'est même pas sûr d'être un équivalent niveau spécifications.

    Je dirai que le module le plus proche serait le ESP32-S3-WROOM-1-N16R8. L'ESP32-S3 prend en charge deux types d'interfaces pour la mémoire externe : Quad SPI (4 lignes de données) et Octal SPI (8 lignes de données). Les modules dotés de 2 Mo de PSRAM utilisent généralement le QSPI. Cependant, les modules R8 (8 Mo) utilisent quasi exclusivement l'interface OPI pour maximiser la bande passante, nécessaire au transfert rapide des données d'image.

    Je connais pas ce module mais je pense qu'il y a une erreur dans la configuration.

    Voir ici : https://www.reddit.com/r/esp32/comme...s3_n16r2_with/

    EDIT : J'ai trouvé une config à tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ; Définition de l'environnement pour ESP32-S3 N16R8 OPI
    [env:esp32-s3-n16r8-cam]
    platform = espressif32
    board = esp32-s3-devkitc-1
    framework = arduino
     
    ; --- Configuration Mémoire Critique (N16R8) ---
    ; Force l'utilisation du mode Octal (OPI) pour la PSRAM 8Mo
    board_build.arduino.memory_type = qio_opi 
    ; Mode Quad I/O pour la Flash
    board_build.flash_mode = qio
    ; Type de PSRAM défini explicitement sur OPI
    board_build.psram_type = opi
    ; Taille de la Flash 16Mo
    board_upload.flash_size = 16MB
    board_upload.maximum_size = 16777216
    ; Table de partition adaptée aux grandes applications (16MB)
    board_build.partitions = default_16MB.csv
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut
    Merci beaucoup pour votre message ; même si je n'ai pas pu appliquer tout ce que vous m'avez proposé :
    * je ne trouve pas l'environnement "esp32-s3-n16r8-cam" pour le tester à la place de celui que j'ai utilisé "esp32-s3-devkitc1-n16r8"
    * le lien ALIEXPRESS est le suivant :
    Carte de développement de caméra ESP32-S3-N16R8, Module WiFi + Bluetooth avec caméra OV2640/OV3660 pour arduino - AliExpress
    * le fabricant est bien :
    Shenzhen Baishun Ming core Electronics Co. , LTD
    12H-1. City 100 Building, No. 4 Zhonghang Road. Huahang Community.
    Huaqiang North Street, Futian District, Shenzhen.
    * j'avais déjà testé le PINOUT de :
    --- ESP32-CAM AI thinker
    --- ESP32-S3-WROOM-1-N16R8 (j'ai la documentation)
    --- et 4 autres brochages trouvé par Le CHAT sur internet (EYE ... , XIAO ...)
    mais aucun brochage ne me permet de démarrer la caméra
    * pour démarrer ESP32-S3-ZERO, j'ai utilisé la recommandation de sivar2311
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [env:esp32-s3-fh4r2]
    platform = espressif32
    framework = arduino
    board = esp32-s3-fh4r2
    Merci pour votre aide

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 638
    Par défaut
    Pour l'environnement introuvable,

    C'est la source principale de votre confusion. L'environnement [env:esp32-s3-n16r8-cam] n'existe pas dans la liste officielle de PlatformIO. C'est un nom personnalisé que vous devez créer vous-même.

    Vous ne pouvez pas le "sélectionner" dans une liste. Vous devez copier-coller le bloc de configuration ci-dessous directement dans votre fichier platformio.ini (en écrasant ou modifiant votre bloc [env:esp32-s3-devkitc1-n16r8] actuel).

    C'est cette configuration manuelle qui active la mémoire OPI (Octal). Sans elle, aucun brochage de caméra ne fonctionnera car l'ESP32 n'aura pas de mémoire pour stocker l'image.

    Remplacez tout le contenu de votre fichier platformio.ini par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [env:esp32-s3-n16r8-cam]
    ; On utilise la base "devkitc-1" car c'est la plus générique pour les puces S3
    platform = espressif32
    board = esp32-s3-devkitc-1
    framework = arduino
    monitor_speed = 115200
     
    ; --- CONFIGURATION MEMOIRE OBLIGATOIRE POUR N16R8 ---
    ; Sans ces 3 lignes, la caméra ne démarrera jamais (écran noir)
    board_build.arduino.memory_type = qio_opi
    board_build.flash_mode = qio
    board_build.psram_type = opi
     
    ; Taille mémoire
    board_upload.flash_size = 16MB
    board_build.partitions = default_16MB.csv
     
    ; --- DRAPEAUX DE COMPILATION ---
    build_flags = 
        -DBOARD_HAS_PSRAM
        ; Cette ligne active le port série sur l'USB natif (celui marqué USB/OTG)
        ; Si vous utilisez le port marqué "COM" ou "UART", mettez cette ligne à 0
        -DARDUINO_USB_CDC_ON_BOOT=1
    Essayez ce brochage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // PINOUT SPÉCIFIQUE POUR "BAISHUN / DUAL USB N16R8"
    #define PWDN_GPIO_NUM     -1
    #define RESET_GPIO_NUM    -1
    #define XCLK_GPIO_NUM     15  // Attention: C'est souvent 15 sur ces clones
    #define SIOD_GPIO_NUM     4   // SDA
    #define SIOC_GPIO_NUM     5   // SCL
     
    #define Y9_GPIO_NUM       16
    #define Y8_GPIO_NUM       17
    #define Y7_GPIO_NUM       18
    #define Y6_GPIO_NUM       12
    #define Y5_GPIO_NUM       10
    #define Y4_GPIO_NUM       8
    #define Y3_GPIO_NUM       9
    #define Y2_GPIO_NUM       11
     
    #define VSYNC_GPIO_NUM    6
    #define HREF_GPIO_NUM     7
    #define PCLK_GPIO_NUM     13
    Puisque votre carte est une "Baishun Dual USB", elle suit le design de référence qui évite les broches 33 à 37 (utilisées par la RAM Octal). C'est pourquoi le brochage "AI Thinker" (votre premier test) ou "WROOM Standard" ne fonctionnent pas : ils essaient d'utiliser des broches occupées par la mémoire RAM.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut Test du soir ...
    Bonjour
    * J’ai utilisé le PINOUT que vous m’avez proposé (issu du design de référence)
    * J’ai remplacé le PlatformIO.INI par la nouvelle version
    * Build : OK → Upload : OK – Serial Monitor → il ne se passe rien (ni message positif, ni message d’erreur)

    Noter que le design de référence s’appuie sur la carte ESP32-S3-N16R8 avec Dual USB : ce doit être la grande carte avec 44 broches …

    Ma carte est composée de 2 petits PCB : ESP32-S3-CAM et ESP32-CAM-MB (module burner) …

    Ma carte ressemble à la carte ESP32-CAM AI thinker, qui ne porte pas la mention « S3 »
    * J’ai ré-essayé avec le PINOUT de AI thinker (malgé l’utilisation de broches entre 33 et 37)
    * Build + Upload : OK – Mais rien avec le moniteur série (aucun message) …

    * Encore plus grave : j’ai essayé un programme basique de communication série … ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <Arduino.h>
     
    void setup() {
     Serial.begin(115200);
     while (!Serial); // attend que le port série soit prêt
     Serial.println("ESP32-S3-CAM démarré !");
    }
     
    void loop() {
     Serial.println("Hello World !!!");
     delay(1000);
    }
    * J’ai changé le paramètre DARDUINO → pas d’effet visible avec 0 ou 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [env:esp32-s3-n16r8-cam]
    ; On utilise la base "devkitc-1" car c'est la plus générique pour les puces S3
    platform = espressif32
    board = esp32-s3-devkitc-1
    framework = arduino
    monitor_speed = 115200
     
    ; --- CONFIGURATION MEMOIRE OBLIGATOIRE POUR N16R8 ---
    ; Sans ces 3 lignes, la caméra ne démarrera jamais (écran noir)
    board_build.arduino.memory_type = qio_opi
    board_build.flash_mode = qio
    board_build.psram_type = opi
     
    ; Taille mémoire
    board_upload.flash_size = 16MB
    board_build.partitions = default_16MB.csv
     
    ; --- DRAPEAUX DE COMPILATION ---
    build_flags = 
        -DBOARD_HAS_PSRAM
        ; Cette ligne active le port série sur l'USB natif (celui marqué USB/OTG)
        ; Si vous utilisez le port marqué "COM" ou "UART", mettez cette ligne à 0
        -DARDUINO_USB_CDC_ON_BOOT=1

    Merci infiniment pour votre aide

Discussions similaires

  1. [JAR] Utiliser des images
    Par Seiya dans le forum Général Java
    Réponses: 2
    Dernier message: 26/08/2005, 18h59
  2. [MFC] Utilisation d'image en couleur 32 bits
    Par vanitom dans le forum MFC
    Réponses: 1
    Dernier message: 03/08/2005, 12h13
  3. Droit d'utilisation des images clipart
    Par Civodul4 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 23/05/2005, 09h30
  4. Utilisation d'images au format png
    Par chtiot dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo