Skocz do zawartości

ESP32CAM błąd po kilku cyklach pracy


Pomocna odpowiedź

Napisano

Mam esp32cam który co kilka minut robi zdjęcie wysyła na serwer. Wszystko działa ale od czasu do czasu dochodzi do błędu i dostaje komunikat:

[E][camera.c:1049] camera_probe(): Detected camera not supported.

[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004

Programowy restart nie naprawia problemu i dopiero odłączenie urządzenia i ponowne uruchomienie przynosi pozytywny skutek do czasu aż po kilku czy kilkunastu a czasem kilkudziesięciu wykonanych zdjęciach znów komunikat o błędzie. Ma ktoś jakiś pomysł jak rozwiązać ten problem bez konieczności ciągłego wyłączania i włączania.

 

Kodów próbowałem wielu i z każdym mam ten sam problem.  Ale oczywiście wstawiam poniżej jeden z nich.

#include "esp_camera.h"
#include "soc/soc.h"           
#include "soc/rtc_cntl_reg.h"  
#include "driver/rtc_io.h"
#include <WiFi.h>
#include <WebServer.h>
#include <WiFiClient.h>   
#include "ESP32_FTPClient.h"
#include <WiFiUdp.h>

char* ftp_server = "***";
char* ftp_user = "***";
char* ftp_pass = "***";
char* ftp_path = "***";

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

unsigned long AC = 0;
unsigned long ZC = 0;

WebServer serverlokalny(80);
WiFiUDP ntpUDP;
ESP32_FTPClient ftp (ftp_server,ftp_user,ftp_pass, 5000, 2);

#define CAMERA_MODEL_AI_THINKER
#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27
#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22

void setup() 
{
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); 
Serial.begin(9600);                                                               
Serial.setDebugOutput(true);
Serial.println();
WiFi.begin(ssid, password);delay(1000);
while(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print(".");}
serverlokalny.begin();     
initCamera();
}

void initCamera() 
{
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(psramFound()){config.frame_size=FRAMESIZE_UXGA;config.jpeg_quality=10;config.fb_count=2;} 
else {config.frame_size=FRAMESIZE_UXGA;config.jpeg_quality=12;config.fb_count=1;}  
esp_err_t err=esp_camera_init(&config);
if (err != ESP_OK) {Serial.printf("Błąd 0x%x", err);return;}  
}

void loop() 
{
serverlokalny.handleClient();                                                                                            
ZZ();
while((AC-ZC)<=60000UL) {AC = millis(); delay(100);}ZC = AC; 
}
  
void ZZ() 
{
camera_fb_t * fb = NULL; fb = esp_camera_fb_get(); if(!fb) {return;}
String NO = "cos.jpg";                                                        
ftp.OpenConnection();                                                                      
ftp.ChangeWorkDir(ftp_path);                                                                                        
ftp.InitFile("Type I"); ftp.NewFile(NO.c_str()); ftp.WriteData(fb->buf, fb->len); ftp.CloseFile();
ftp.CloseConnection();
esp_camera_fb_return(fb); 
}

 

7 minut temu, Belferek napisał:

A jesteś pewien, że te operacje na klasie ftp w funkcji ZZ() np. ftp.OpenConnection() itd. kończą się sukcesem?

Tak jestem pewien bo na serwerze zapisuje się zdjęcie i mam na nie podgląd.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...