ESP32 CAM Foto uložené v bufferu

Odpovědět
ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od ondraN » 22 zář 2021, 12:33

Pascal a C se zase tolik neliší. Oba jsou procedurální strukturované jazyky. Pascal je ale víc rigidní a tím neumožňuje některé věci, co C.
Taky jsem vyrostl na Pascalu a do C jsem se pustil před pár lety. Pro MCU je C prostě lepší, hlavně díky skvělé práci s pointery. Ale daleko hůř se hledají chyby (hlavně překročení hranice polí a struktur).

Tady se nastavují parametry, které souvisí s velikostí bufferu

Kód: Vybrat vše

  if(psramFound()){
    config.frame_size = FRAMESIZE_XGA;//FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
    config.jpeg_quality = 10;
    config.fb_count = 2;
  } else {
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }  
Pokud je na modulu nalezená externí RAM paměť, provede se prvni blok, kde se alokují dva buffery na dva snímky a je nastavena vyšší kvalita jpegu. Když externí paměť není nainstalovaná, je jen jeden buffer a horší kvalita. Tím si to můžeš celé nakonfigurovat.

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od visk52 » 22 zář 2021, 18:01

Tady někde musí být chyba protože je špatná posloupnost

Kód: Vybrat vše

  int c=(fb->len)/1024;
for(int l=0;l<c;l++){

Serial.print("AT+FTPPUT=2,1024\r");

Serial.flush();
delay(3000); 
 while(Serial.available()){
    mesage=mesage+Serial.read();
  } 
  
delay(1000);
  for(int i=0;i<1024;i++){
     Serial.print(fb->buf[poz],HEX);
     poz++;
  }
  // put your setup code here, to run once:
}
int z=(fb->len)%1024;
Serial.print("AT+FTPPUT=2,");
Serial.print(z);
Serial.print("\r");
Serial.flush();
 for(int i=0;i<z;i++){
     Serial.print(fb->buf[poz],HEX);
     poz++;
 }

mi to vypisuje na sériový monitor toto ty data tam nemají byt protože mají být přenesena na FTP server
OK

+FTPPUT: 1,1,1360
9BA949CD162976A72D485EE6B68E7F7A6BA587A567239DEE5C4E948F5981567A87B52458525301C6ABDB7FC8C76FF0EED5ADCD207A877AE73583FE9CDFEED671F88DE3756E6FDCD515E6810F0A16B6BC27FF230C7F4ABA6FDE31C47F099DCE9C8AB737C4019A6C9FCAAFD7A9FF02EF3A3B515E5C362828AF6E83D028AF1F13FC56151CFFEAEBCB9FC66D033A5A873548E803D2A3CD5A24434DAA1C26987AD52244CD25222351B9FDDD5886909AB24666984D31C349544913FDEA69A62194D6E948849A33CD0472542D4D085A414C414D3489199F9AB89F1D1FFAT+FTPPUT=2,1024

+FTPPUT: 2,1024

OK

Správně to mělo být takto
+FTPPUT: 1,1,1360
AT+FTPPUT=2,1024
+FTPPUT: 2,1024
OK
+FTPPUT: 1,1,1360
AT+FTPPUT=2,1024
+FTPPUT: 2,1024
OK


díky

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od ondraN » 23 zář 2021, 08:04

Pokud sleduješ data na sériovém portu, tak se tam objeví vše, co tam pošleš funkcí Serial.print() (na Tx pinu) a vše co odpoví modem (na Rx pinu). Pro tebe by mělo být důležité, jestli byl na ftp vytvořen soubor a má správnou velikost a jde zobrazit jako jpg.

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od visk52 » 23 zář 2021, 08:37

Já to mám udělano tak že ten z modulu ESP32 CAM posílám všechno funkcí Serial.print() do modulu SIM800 a odpovědi s SIM800 si nechávám zobrazovat na sériovém monitoru to jen provizorně abych věděl co se tam děje ,a na FTP serveru se pak podívám co se tam přeneslo a objem dat pochopitelně tam chybí ty části které se nepodařilo přenést díky

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od ondraN » 23 zář 2021, 13:48

A jseš si jistý tím posílaným formátem HEX? Podle toho, co jsem si přečetl v manuálu, by měl být v AT příkazu AT+FTPPUT=2,.... uveden počet byte pro přenos. Ale pokud použíješ formát HEX, tak vlastně pošleš 2xtolik. Navíc se to posílá v textové formě, takže třeba hodnota 0x32 se odešle jako dva ASCI znaky '3' '2'
Zkusil bych místo těchto bloků

Kód: Vybrat vše

  for(int i=0;i<1024;i++){
     Serial.print(fb->buf[poz],HEX);
     poz++;
  }
udělat tohle

Kód: Vybrat vše

Serial.write(&(fb->buf[poz]),1024);
poz=poz+1024;
Pak tam odejde opravdu jen 1024byte binárně, bez jakýchkoli úprav.

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od visk52 » 23 zář 2021, 17:59

Pořád je něco špatně na FTP serveru se to zobrazuje jak má viz příloha před tím tam byl jen jeden řádek tak je to přenášeno binárně ale pořád a tam zůstávají nepřenesené data ten soubor na FTP serveru je hrozně malý tak 2 k a naposled je ta velikost toho souboru 1k :oops: díky

Kód: Vybrat vše

 int c=(fb->len)/1024;
for(int l=0;l<c;l++){

Serial.print("AT+FTPPUT=2,1024\r");

Serial.flush();
delay(3000); 
 while(Serial.available()){
    mesage=mesage+Serial.read();
  } 
  
delay(1000);
 /* for(int i=0;i<1024;i++){
     Serial.print(fb->buf[poz],HEX);
     poz++;
  }*/
  Serial.write(&(fb->buf[poz]),1024);
   poz=poz+1024;
  // put your setup code here, to run once:
}
int z=(fb->len)%1024;
Serial.print("AT+FTPPUT=2,");
Serial.print(z);
Serial.print("\r");
Serial.flush();
 /*for(int i=0;i<z;i++){
     Serial.print(fb->buf[poz],HEX);
     poz++;
 }*/
 Serial.write(&(fb->buf[poz]),z);
 poz=poz+z;
Serial.print("AT+FTPPUT=2,0\r");
Serial.flush(); 
  esp_camera_fb_return(fb); 
   Serial.print("AT+SAPBR=0,1\r"); 
 Serial.flush();
}
Přílohy
PSpad1.jpg

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od ondraN » 23 zář 2021, 20:48

Tenhle soubor jako jpeg nevypadá. Nemá to vůbec Exifovou hlavičku. Zkus si vypsat, jak je ta datová oblast velká (fb->len). Taky nemáš před zápisem posledního, zbytkového, bloku žádný delay a taky není před posledními dvěma příkazy. To by mohlo vadit.

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od visk52 » 23 zář 2021, 21:43

Tady to je

Kód: Vybrat vše

  camera_fb_t * fb = NULL;
  // Take Picture with Camera
  fb = esp_camera_fb_get();  
  Serial.print("Velikost obrazu: ");
  Serial.print(fb->len);
  Serial.print(" B,");
  Serial.print((fb->len)/1024); 
  Serial.println(" KB");
ale otázka je kde to vypisovat protože bohužel na tom modulu ESP32 CAM není druhá UART a softwarový serial to nesnese protože když tam dám knihovnu softwareSerial tak to dělá blbosti díky

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od ondraN » 24 zář 2021, 08:09

Ještě jsem koukal do manuálu a jestli jsem to spávně pochopil, tak pro jedno přidání bloku dat bys měl mít sekvenci
AT+FTPPUT=1
odpoví
+FTPPUT:1,1,<maxlength>

a pak
AT+FTPPUT=2,<length>
odpoví
+FTPPUT: 2,<length>

pak se pošle počet byte a po posledním odpoví
OK

a pak se celá tahle sekvence zopakuje znovu a znovu až do úplného počtu dat a pak se uzavře FTP.
Ty ale pošleš AT+FTPPUT=1 jenom poprvé a pak neustále točíš AT+FTPPUT=2,<length>
Možná je to ten problém.
A taky si dej pozor na délku stringu mesage protože do něj jen neustále přidáváš odpovědi a tak stále narůstá. Po každém vyhodnocení (to neděláš) bys ho měl inicializovat mesage="";

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM Foto uložené v bufferu

Příspěvek od visk52 » 24 zář 2021, 15:17

Já vlastně nevím jestli ta posloupnost mám dobrou

Kód: Vybrat vše

AT+SAPBR=3,1,"Contype","GPRS"
OK
AT+SAPBR=3,1,"APN","internet"
OK
AT+SAPBR=1,1
OK
AT+SAPBR=2,1
+SAPBR: 1,1,"10.189.139.131"

OK
AT+FTPCID=1
OK
AT+FTPTYPE=I
OK
AT+FTPSERV="*******************"
OK
AT+FTPUN="*************"
OK
AT+FTPPW="********"
OK
AT+FTPPUTPATH="/**************************"
OK
AT+FTPPUTNAME="picture.jpg"
OK
AT+FTPPUT=1
OK
AT+FTPPUT=2,1024
ERROR

+FTPPUT: 1,1,1360

a poslední dobou se objeví pokaždé ERROR není možný nějaký softwarový reset čili poslat tam AT příkaz který nastaví ten modul do počátečního stavu ,protože se mohlo stát že jak se tím "hraji "tak tam mohlo zůstat něco nastaveno špatně ? díky

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů