Skocz do zawartości

ESP32CAM błąd po kilku cyklach pracy


Wrona

Pomocna odpowiedź

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.

 

Link do komentarza
Share on other sites

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); 
}

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.