Skip to content

Camera and Network issue #11846

@asifqdn

Description

@asifqdn

Board

ESP32 CAM

Device Description

The camera live streaming and the network are not working properly after 3.3.x update.
Connected WiFi IP frequently show RTO, and live streaming is almost stopped.
Please fix it

It is working properly with 3.1.x versions

Hardware Configuration

// Setup camera
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_sccb_sda = SIOD_GPIO_NUM;
config.pin_sccb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.frame_size = FRAMESIZE_UXGA;
config.pixel_format = PIXFORMAT_JPEG;
config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
config.fb_location = CAMERA_FB_IN_PSRAM;
config.jpeg_quality = 12;
config.fb_count = 1;

Version

v3.3.0

Type

Bug

IDE Name

Arduino IDE

Operating System

Windows 11

Flash frequency

20 MHz

PSRAM enabled

yes

Upload speed

115200

Description

Wifi and live streaming are not working after uploading the code, but it is working if I upload the code with the older version 3.1.x

Sketch

#include "esp_camera.h" #include <WiFi.h> #include <WebServer.h> #define CAMERA_MODEL_AI_THINKER #include "camera_pins.h" // ================== WIFI CONFIG ================== const char* ssid = "Guest"; const char* password = "Guest@12345"; // Static IP configuration IPAddress local_IP(192, 168, 1, 20); IPAddress gateway(192, 168, 1, 1); IPAddress subnet(255, 255, 255, 0); // Flashlight Control #define FLASH_LED_PIN 4 // Car Control Pins #define IN1 12 #define IN2 13 #define IN3 14 #define IN4 15 // Web server for RC controls (port 82) WebServer control_server(82); // Renamed to avoid conflict // Car movement functions void stop_car() { // Renamed to avoid conflict digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); } void move_forward() { // Renamed to avoid conflict digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void move_backward() { // Renamed to avoid conflict digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } void turn_left() { // Renamed to avoid conflict digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void turn_right() { // Renamed to avoid conflict digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } // Toggle flash void handleFlash() { digitalWrite(FLASH_LED_PIN, !digitalRead(FLASH_LED_PIN)); control_server.send(200, "text/plain", digitalRead(FLASH_LED_PIN) ? "Flash ON" : "Flash OFF"); } void startCameraServer(); void setupLedFlash(int pin); void init_car() { Serial.begin(115200); Serial.setDebugOutput(true); Serial.println(); // Initialize motor and flash pins pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(FLASH_LED_PIN, OUTPUT); digitalWrite(FLASH_LED_PIN, LOW); stop_car(); // Setup camera 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_sccb_sda = SIOD_GPIO_NUM; config.pin_sccb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.frame_size = FRAMESIZE_UXGA; config.pixel_format = PIXFORMAT_JPEG; config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; config.fb_location = CAMERA_FB_IN_PSRAM; config.jpeg_quality = 12; config.fb_count = 1; // Optimize for PSRAM if (config.pixel_format == PIXFORMAT_JPEG) { if (psramFound()) { config.jpeg_quality = 10; config.fb_count = 2; config.grab_mode = CAMERA_GRAB_LATEST; } else { config.frame_size = FRAMESIZE_SVGA; config.fb_location = CAMERA_FB_IN_DRAM; } } else { config.frame_size = FRAMESIZE_240X240; #if CONFIG_IDF_TARGET_ESP32S3 config.fb_count = 2; #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(); if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1); s->set_brightness(s, 1); s->set_saturation(s, -2); } if (config.pixel_format == PIXFORMAT_JPEG) { s->set_framesize(s, FRAMESIZE_QVGA); } // Setup LED flash #if defined(LED_GPIO_NUM) setupLedFlash(LED_GPIO_NUM); #endif // Configure static IP if (!WiFi.config(local_IP, gateway, subnet)) { Serial.println("Static IP configuration failed"); } // Connect to WiFi WiFi.begin(ssid, password); WiFi.setSleep(false); WiFi.setTxPower(WIFI_POWER_19_5dBm); Serial.print("WiFi connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // Add custom RC car routes control_server.on("/", HTTP_GET, []() { control_server.send(200, "text/html", R"rawliteral(  <html>  <body>  <h1>ESP32-CAM RC Control</h1>  <img src="http://192.168.1.20:81/stream" width="320"><br><br>  <button onclick="fetch('/forward')">Forward</button>  <button onclick="fetch('/backward')">Backward</button>  <button onclick="fetch('/left')">Left</button>  <button onclick="fetch('/right')">Right</button>  <button onclick="fetch('/stop')">Stop</button>  <button onclick="fetch('/flash')">Toggle Flash</button>  <br><br>  <a href="http://192.168.1.20/capture">Capture Photo</a>  </body>  </html>  )rawliteral"); }); control_server.on("/forward", HTTP_GET, []() { move_forward(); control_server.send(200, "text/plain", "OK"); }); control_server.on("/backward", HTTP_GET, []() { move_backward(); control_server.send(200, "text/plain", "OK"); }); control_server.on("/left", HTTP_GET, []() { turn_left(); control_server.send(200, "text/plain", "OK"); }); control_server.on("/right", HTTP_GET, []() { turn_right(); control_server.send(200, "text/plain", "OK"); }); control_server.on("/stop", HTTP_GET, []() { stop_car(); control_server.send(200, "text/plain", "OK"); }); control_server.on("/flash", HTTP_GET, handleFlash); // Start custom server control_server.begin(); Serial.println("RC control server started on port 82"); // Start camera server startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println(":82' to control RC bot"); Serial.println("Stream at 'http://192.168.1.20:81/stream'"); Serial.println("Capture at 'http://192.168.1.20/capture'"); } void run_car() { control_server.handleClient(); yield(); delay(10); } void setup() { init_car(); // Call your initialization code } void loop() { run_car(); // Keep handling requests }

Debug Message

xxxx 

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

Labels

Area: LibrariesIssue is related to Library support.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions