ESP32 CAM Foto uložené v bufferu

Odpovědět
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 » 19 zář 2021, 19:00

Tam chyběli složené závorky a zas mi to dělá jinou neplechu výpis ze sériového monitoru

Kód: Vybrat vše

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++){  //**********************************  < tady
     Serial.print(fb->buf[poz],HEX);
     poz++;
  } // ***************************************** < a tady
  // put your setup code here, to run once:
}
AT+FTPPUTNAME="picture.jpg"

OK
AT+FTPPUT=1

OK
AT+FTPPUT=2,1024

ERROR

+FTPPUT: 1,1,1360
FFD8FFE00104A4649460111000000FFDB0430A78986A989BBACF1910FEEF1F161712192420262624202322282D3A31282B362B2223324433363B3D4041402730474C463F4B3A3F403EFFDB0431BBBFDF1D10101D3E2923293E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3EFFC401F001511111100000000123456789ABFFC40B5100213324355440017D123041151221314161351617227114328191A182342B1C11552D1F024336272829A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC401F103111111111000000123456789ABFFC40B51102124434754401277012311452131612415176171132232818144291A1B1C19233352F0156272D1A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFC0011830403121021113111FFDA0C31021131103F0CEC3B2B7DD6C7270BEF51939EE1EDBB15E0467AEA6DD05037AAEE51F1DFB538FBE3DF6D38CDB263A995EADB71FDD26868DD555B69C285073D49C55732B5CB4F51ACBB5FF0D5F6F5A5C16042AE3AFA567763445E6282732A8239DBB874F5A5E46E18C3C93FE15B7C4EEC76685FE9E8326A32C31BD8B2720632A2FA58B88A7A1FD3229DE51DA1954F03DF1472B7A884911D5376D1C7BFDEE2998E9D8E4939A6A5EE97AEC77DBC67A8E7BD47CEBB5383FECD4F3FB3D84378DA79C7A74E79A40AFB86DF9BDBF1A14FB9498D22F9FEE8EB9FA1A523283F8727D3DAB4D58A2D0D7589C03DF8514D7EFD1E411D4D4F35B4B17CDCA4658F60683C30DFEB45EC252634E47CCD8381CE2970131DAB4E66D598E4867DD3F2F6E7A75A7BC718F9BD86285E64639FA6E3F8D29F5FCBE9427CA17235E54E4F39A318C77F5E945D95E448D9FE11EE303AD45BC076F6A36458809F4EFCE29783C9EB8FC3EED1CA1E62AE571C29E7BD3E2278DCBD69C86F61E46399171FD683C74F5A8DC8206C17C8BFD299FC3FC209357777B941DD72319AT+FTPPUT=2,1024

+FTPPUT: 2,1024

OK

+FTPPUT: 1,1,1360
E78DBEDD293192783B7D874155915B8AFC291B874E777F8EF4B86C373EB8E41CF1532B728958672F4C526D2990D83F55157291426CC363F34EF986377A6DCD3B8D89186DB92A030FF06B18A419DDC8FA7028BDF412D45EE4F6CE73914EFBBF37C9FCF353CBD8AE61C5386E76AF3D29792D9241E77A7AD2E6E544CB520C6E2318CFA638A43CAAF1D70C0D688AE518A0E0727BE314A787FBBF4FCAA6EC6F50E7F0A776DD834F6D3EDD2DCEEFAFDE3DAAEE8FC5C9F93185238FAD44DDA372246D8FBD4F1EF5C738A3EF52F6A9BEA31E3AD2F7AA42A55A7701696979B107FD2527B0AT+FTPPUT=2,1024

+FTPPUT: 2,1024

OK

+FTPPUT: 1,1,1360
3B904EF1EB9CD1B9998FCFD3D5BA552B6E26424ED932331C8FCE9A3E65C0C7B555D5CBBDC68742E7EF1ED9A7B10E78E9C7E546A033E5E3934BC639E6A856EE31D8724F43938FCAB43493FBD61F2E3FD935854D9D86FE136C7514EE9D6B8D763951F8538546CC777A7548829DD6B4E820A29586C5EDCD20A76B219DAAAB9FF0486A62939A72D4890EA70A631471C52D52F2245EF486A46213EF4BD53D051F7A84FBC29E82243F2A5373C5111A7A5373D6988451FC553EA171EFD3351741CD5264867E5E3BD283C53F362FF0D0BD298D6681F72A443A4FBB518AT+FTPPUT=2,1024

+FTPPUT: 2,1024

OK
na FTP serveru mám 79 KB taky už nejsou stejné bloky to bylo těmi chybějícíma složenýma závorkami kde je teď chyba ? 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 » 20 zář 2021, 06:28

My bychom ti rádi pomoli, ale z takového krátkého fragmentu kódu to fakt nejde :?

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 » 20 zář 2021, 06:53

Ale já jsem tuším postnul celý projekt před časem do tohoto vlákna diky ;)

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 » 20 zář 2021, 10:02

Asi by bylo lepší sem dát aktuální verzi, protože těch verzí je tu několik (netuším se kterou zrovna pracuješ) a jak jsi psal výše, tak si opravil nějaké chyby. Zase tolik místa to nezabere :)

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 » 20 zář 2021, 10:26

Tak to vypadá když se ten paket přenese v pořádku na FTP server

výpis na sériovém monitoru

Kód: Vybrat vše


AT+FTPPUT=2,1024

+FTPPUT: 2,1024

OK
Jinak ten aktuální projekt postnu ale teď nejsem na PC kde ho mám díky

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 » 20 zář 2021, 17:37

Kód: Vybrat vše

#include "esp_camera.h"

// Pin definition for 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

camera_config_t config;

void setup() {
   
  Serial.begin(9600);
  initCamera();
  takePhoto();
  ATInternet();
}

void loop() {
  //takePhoto();
  //delay(10000);
//}
}

void initCamera() {
  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_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;
  }  
  // Init Camera
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }  
}

void takePhoto() {  
 byte dat=0; 
  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");
  Serial.print((fb->len) % 1024);
  //Serial.print("0x");
  /*for(int i=0;i<fb->len;i++)
     Serial.print(fb->buf[i], HEX);*/
Serial.println("");
//  dat = HEX(fb->buf);
  //Serial.write(fb->buf,fb->len);
  if(!fb) {
    Serial.println("Camera capture failed");

  // while(fb->len){
//      dat=fb->buf,fb->len;
    //Serial.print(fb->buf,fb->len);  
    //}
    return;
  }
  /*
   * Free buffer cam
   */
  esp_camera_fb_return(fb); 
}
void ATInternet(){
  int poz=0;
  int dopocet=1024;
  camera_fb_t * fb = NULL;
  // Take Picture with Camera
  fb = esp_camera_fb_get();  
  String mesage="";
  delay(10000);
  Serial.print("AT+SAPBR=3,1,\"Contype\",\"GPRS\"\r");
  Serial.flush();
  delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  Serial.print("AT+SAPBR=3,1,\"APN\",\"internet\"\r");
  Serial.flush();
  delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
 Serial.print("AT+SAPBR=1,1\r"); 
 Serial.flush();
 delay(1000);
 while(Serial.available()){
    mesage=mesage+Serial.read();
  }
 Serial.print("AT+SAPBR=2,1\r"); 
 Serial.flush();
 delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
Serial.print("AT+FTPCID=1\r");
Serial.flush();
 delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  Serial.print("AT+FTPTYPE=I\r");
Serial.flush();
 delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  
  Serial.print("AT+FTPSERV=\"**************"\r");
  Serial.flush();
 delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }

Serial.print("AT+FTPUN=\"********\"\r");
Serial.flush();
  delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  
Serial.print("AT+FTPPW=\"**********\"\r");
Serial.flush();
delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
 
Serial.print("AT+FTPPUTPATH=\"/*******************"\r");
Serial.flush(); 
delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  
Serial.print("AT+FTPPUTNAME=\"*********"\r");
Serial.flush();
delay(1000);
  while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  Serial.print("AT+FTPPUT=1\r");
Serial.flush();
delay(1000);
 while(Serial.available()){
    mesage=mesage+Serial.read();
  }
  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++;
 }
Serial.print("AT+FTPPUT=2,0\r");
Serial.flush(); 
  esp_camera_fb_return(fb); 
   Serial.print("AT+SAPBR=0,1\r"); 
 Serial.flush();
}
tak tady to je !!!!! ještě bych potřeboval upravit aby to nealokovalo moc velký buffer protože to padá potom ,mám podezření na funkci takePhoto() já jsem byl "odchován " na paskalu kdyby mě někdo řekl abych se učil jazyk C protože je to praotec všech programovacích jazyků tak se to učím ale tahle :? já asi tady pořád otravuji ale nemohu si pomoct ;) to je poslední vášeň kterou mám když jsem u PC zapomenu na svět co mám kolem sebe díky

ating 234 KB frame buffer Failed
[E][camera.c:1161] camera_init(): Failed to allocate frame buffer
E (1998) gpio: gpio_isr_handler_remove(396): GPIO isr service is not installed, call gpio_install_isr_service() first
[E][camera.c:1270] esp_camera_init(): Camera init failed with error 0x101
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.

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 » 21 zář 2021, 13:44

Opravdu je to aktuální verze? Nejde to ani přeložit, protože tam jsou třeba takovéhle podivnosti

Kód: Vybrat vše

Serial.print("AT+FTPPUTNAME=\"*********"\r");

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 » 21 zář 2021, 16:08

Kód: Vybrat vše

Serial.print("AT+FTPPUTNAME=\"picture.jpg\"\r");
Syntaxe je taková ale jméno souboru si můžeš dát jaké chceš

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, 11:45

Myslím, že problém je tady

Kód: Vybrat vše

for(int i=0;i<=1024;i++){
Tím vlasně osíláš 1025 znaků
Zkus tohle

Kód: Vybrat vše

for(int i=0;i<1024;i++){

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, 12:11

To zkusím to by bude jeden problém, alespoň vidíš že nejsem "vychovaný " C ,trápí ještě jedna věc proč si alokuje ta funkce která vytvoří snímek dvakrát tolik paměti než potřebuje a tým pádem se resetuje modul ESP32 CAM , to jen někdy ,jestli tak není taky nějaký problém? díky

Odpovědět

Kdo je online

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