Problème téléserver esp32-cam

Bonjour à tous,
je me lance depuis peu dans l'aventure Arduino pour réaliser entre autre la domotique dans ma maison,
Je commence tranquille en réalisant une caméra de surveillance pour la maison.
Après quelques petite galére de code résolu (écriture au niveau du wifi), le programme se compile correctement mais refuse de se téléverser avec cette erreur:

esptool.py v3.0-dev
Serial port COM1
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
Failed uploading: uploading error: exit status 2

J'ai essayé avec le module FTDD1232 et le Micro USB Programmer.
J'ai changé de port USB et j'ai toujours la même erreur.
J'ai essayé d'appuyer sur reboot au démarrage

Voici mon programme:

#include "esp_camera.h"
#include <WiFi.h>

//
// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
//            Ensure ESP32 Wrover Module or other board with PSRAM is selected
//            Partial images will be transmitted if image exceeds buffer size
//

// Select camera model
#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM

#include "camera_pins.h"

const char* ssid = "###";
const char* password = "####";

void startCameraServer();

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();

  camera_config_t config;
  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;
  
  // if PSRAM IC present, init with UXGA resolution and higher JPEG quality
  //                      for larger pre-allocated frame buffer.
  if(psramFound()){
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 10;
    config.fb_count = 2;
  } else {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  // camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

  sensor_t * s = esp_camera_sensor_get();
  // initial sensors are flipped vertically and colors are a bit saturated
  if (s->id.PID == OV3660_PID) {
    s->set_vflip(s, 1); // flip it back
    s->set_brightness(s, 1); // up the brightness just a bit
    s->set_saturation(s, -2); // lower the saturation
  }
  // drop down frame size for higher initial frame rate
  s->set_framesize(s, FRAMESIZE_QVGA);

#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  startCameraServer();

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(10000);
}

Je suis un peu perdu.
Si vous aviez une solution ce serait cool.

Merci d'avance

Manu

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Merci à vous.

Bonsoir @manubgeek

  1. COM1 est il réellement le port COM de l'interfacecUSB /Série ?
    C'est souvent un numéro de port réservé à un autre usage

  2. Que dit le gestionaire de Périphériques de WIndows au sujet de COM1

J'ai essayé avec le module FTDD1232 et le Micro USB Programmer

  1. Pourriez vous être plus précis, donner plus d'explication sur le montage utilisé pour flasher la carte ?

J'ai essayé d'appuyer sur reboot au démarrage

A sa mise sous tension l'ESP32 doit trouver ce bouton enfoncé , on re relâche après

Désormais les carte ESP32-CAM sont souvent proposées à la vente avec une petite carte dite 'MB' qui facilite grandement le flashage un circuit intégré CH340 y est présent pour la liaison USB

Bonjour,
Evite de mettre tes paramètres de ton réseau WiFi au post #1
Pour les ESP32-CAM, c'est un peu la galère :innocent:

  • upload sans problème,
  • d'autres, il faut mettre IO0 à la masse et un coup de reset.
    Je n'ai jamais réussi à savoir pourquoi ?

Bonsoir @al1fch al1fch

    COM1 est il réellement le port COM de l'interfacecUSB /Série ?
    C'est souvent un numéro de port réservé à un autre usage

    Que dit le gestionaire de Périphériques de WIndows au sujet de COM1

Effectivement le bon port n'était pas détecté c'est bon sur le COM5/USB.

J'utilise cette carte pour brancher l'ESP32 mais j'ai aussi essayer ce module
Mais j'ai toujours la même erreur :

Failed uploading: uploading error: exit status 2`

Merci pour ta réponse je continue mes recherches

bonjour @icare

Evite de mettre tes paramètres de ton réseau WiFi au post #1

Oups oublie de ma part, corrigée.
peux tu m'expliquer comment on met IO0 à la masse?

Merci d'avance

avec le petit module MB , enfoncer le bouton marqué IO0, brancherr l'USB , puis relâcher le bouton IO0, l'ESP32 est alors en mode 'flashage' et peut dialoguer à cet effet avec l'ordinateur

sans ce module relier par fil IO0 et GND pour procéder au flashage, puis supprimer cette liaison pour un démarrage de l'ESP32 sur le code flashé

l'ESP32 a deux mode principaux de fonctionnement :

-charger en mémoire Flash un code venant de l'ordinateur
-exécuter le code présent en mémoire Flash

l'état de GPIO0 lors du Reset active l'un ou l'autre mode

1 Like

Avec le module Mother Board ,dit MB, et une carte A1 thinker ESP32-CAM tout se passe tout seul.
Inutile d'appuyer sur IO0.

Digression : Avec la carte lolin C3-mini il faut appuyer sur IO7 avant de faire un reset pour le programmer.
MAIS à la première programmation uniquement, pour les suivantes il n'y a strictement rien à faire.
Si j'avais une explication (simple) je serai content.

Juste un "truc" avec la carte MB et platformIO, où pour récupérer la liaison par l'USB il faut ajouter les deux lignes suivantes dans platform.ini

monitor_rts = 0
monitor_dtr = 0

Dans le fichier joint, je vois que deux cartes sont choisies : il y en une de trop.

Je n'ai pas regardé, mais probablement que le brochage n'est pas le même et le système de téléchargement doit se prendre les pieds dans le tapis.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.