ESP32 CAM Foto uložené v bufferu
ESP32 CAM Foto uložené v bufferu
Zdravím
Potřeboval bych vybrat z kódu https://www.gsampallo.com/2020/04/20/su ... esp32-cam/ část která udělá fotku a nechá jí bufferu? díky
Potřeboval bych vybrat z kódu https://www.gsampallo.com/2020/04/20/su ... esp32-cam/ část která udělá fotku a nechá jí bufferu? díky
- SkullKeep
- Příspěvky: 291
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP32 CAM Foto uložené v bufferu
Jestli jsem se dobře díval tak jsem z toho vybral část kódu:
Snad jsem se trefil.
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() {
initCamera();
}
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_UXGA;//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 loop() {
takePhoto();
delay(60000);
}
void takePhoto() {
camera_fb_t * fb = NULL;
// Take Picture with Camera
fb = esp_camera_fb_get();
if(!fb) {
Serial.println("Camera capture failed");
return;
}
esp_camera_fb_return(fb);
}
P. Q. M.
Re: ESP32 CAM Foto uložené v bufferu
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(115200);
initCamera();
}
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_UXGA;//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 loop() {
takePhoto();
//Serial.print(fb->len);
delay(60000);
}
void takePhoto() {
camera_fb_t * fb = NULL;
// Take Picture with Camera
fb = esp_camera_fb_get();
//Serial.print(fb->len);
if(!fb) {
Serial.println("Camera capture failed");
return;
}
esp_camera_fb_return(fb);
}
- SkullKeep
- Příspěvky: 291
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP32 CAM Foto uložené v bufferu
Co zkusit zmenšit rozlišení kamery.
a
na
a
Podle mne jde i o to jestli máš stejný noul nebo jinačí verzi. A taky jde o to jestli máš na HDD knihovnu esp_camera.h.
Nebo jestli jsem neudělal chybu při zkrácení a nechybí tam tyto řádky:
těsně po #include "esp_camera.h". Jinak s toutu funkcí nemám vlastní zkušenosti a jenom jsem to z toho vytáhl.
Kód: Vybrat vše
config.frame_size = FRAMESIZE_UXGA;//FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
Kód: Vybrat vše
config.frame_size = FRAMESIZE_UXGA;
Kód: Vybrat vše
config.frame_size = FRAMESIZE_VGA;//FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
Kód: Vybrat vše
config.frame_size = FRAMESIZE_VGA;
Nebo jestli jsem neudělal chybu při zkrácení a nechybí tam tyto řádky:
Kód: Vybrat vše
#include "driver/rtc_io.h"
#include "time.h"
P. Q. M.
Re: ESP32 CAM Foto uložené v bufferu
Abych to vysvětlil ten program co mám výše ten odkaz tak jsem si to upravil na mou WiFI a FTP server a mě to funguje to jsem dělal ten projekt před časem, ale když ten program začnu upravovat - mažu WIFI a tak dále o čem jsem přesvětčen že to nesouvisí abych jen zůstalo to co potřebuji tak to hází chyby, modul ESP32 CAM na čem to zkouším tak mám prověřen že tam není chyba je to pro mne záhada díky
Re: ESP32 CAM Foto uložené v bufferu
Já už jsem s toho s toho zoufalý a nevím si rady můžete mi s tohoto zdrojáku vytáhnout jen tu část která udělá snímek protože tento celý program na tom modulu funguje díky
Kód: Vybrat vše
/*
* ESP32cam_ftp
* Blog: http://www.gsampallo.com/blog/?p=686
* Twitter: @gsampallo.com
*/
#include "esp_camera.h"
#include "soc/soc.h" // Disable brownour problems
#include "soc/rtc_cntl_reg.h" // Disable brownour problems
#include "driver/rtc_io.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include "ESP32_FTPClient.h"
#include <NTPClient.h> //For request date and time
#include <WiFiUdp.h>
#include "time.h"
unsigned long TimeStamp;
const int interval = 1;// minuty
const unsigned long SamplingTime = 60000 * interval;
char ftp_server[] = "xxxxxxxxxxxxxxxx";
char ftp_user[] = "xxxxxxxxxxxxxxxx";
char ftp_pass[] = "xxxxxxxx";
char ftp_path[] = "/xxxxxxxxxxxxxxxxx";
const char* WIFI_SSID = "xxxxxxxx";
const char* WIFI_PASS = "xxxxxxx";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", (3600), 60000);
ESP32_FTPClient ftp (ftp_server,ftp_user,ftp_pass, 5000, 2);
// 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() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
Serial.begin(115200);
WiFi.begin(WIFI_SSID, WIFI_PASS);
Serial.println("Connecting Wifi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
initCamera();
timeClient.begin();
timeClient.update();
Serial.println(timeClient.getFormattedTime());
ftp.OpenConnection();
}
void loop() {
// if ((millis() > SamplingTime) && ((millis() - SamplingTime) > TimeStamp) && (WiFi.status() == WL_CONNECTED)) {
timeClient.update();
takePhoto();
delay(1000);
//}
}
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_UXGA;//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() {
camera_fb_t * fb = NULL;
// Take Picture with Camera
fb = esp_camera_fb_get();
Serial.print("Velikost obrazu: ");
Serial.println(fb->len);
if(!fb) {
Serial.println("Camera capture failed");
return;
}
/*
* Upload to ftp server
*/
ftp.ChangeWorkDir(ftp_path);
ftp.InitFile("Type I");
String nombreArchivo = "picture.jpg";
// timeClient.getFormattedTime()+".jpg"; // AAAAMMDD_HHMMSS.jpg
Serial.println("Nahravani "+nombreArchivo);
int str_len = nombreArchivo.length() + 1;
char char_array[str_len];
nombreArchivo.toCharArray(char_array, str_len);
ftp.NewFile(char_array);
ftp.WriteData( fb->buf, fb->len );
ftp.CloseFile();
/*
* Free
*/
esp_camera_fb_return(fb);
}
- SkullKeep
- Příspěvky: 291
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP32 CAM Foto uložené v bufferu
Zkus toto jestli bude fungovat:
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() {
initCamera();
}
void loop() {
takePhoto();
delay(1000);
//}
}
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_UXGA;//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() {
camera_fb_t * fb = NULL;
// Take Picture with Camera
fb = esp_camera_fb_get();
Serial.print("Velikost obrazu: ");
Serial.println(fb->len);
if(!fb) {
Serial.println("Camera capture failed");
return;
}
/*
* Free buffer cam
*/
esp_camera_fb_return(fb);
}
P. Q. M.
Re: ESP32 CAM Foto uložené v bufferu
Už to nepadá ale nevypisuje se na seriový monitor nic viz
jak by to mělo dělat díky
edit beru zpět už to funguje chybělo to to
jsi jednička palec nahoru
Kód: Vybrat vše
Serial.print("Velikost obrazu: ");
Serial.println(fb->len);
edit beru zpět už to funguje chybělo to to
Kód: Vybrat vše
Serial.begin(115200);
Re: ESP32 CAM Foto uložené v bufferu
Tak je to díky
- SkullKeep
- Příspěvky: 291
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: ESP32 CAM Foto uložené v bufferu
Rád jsem pomohl. Kdyby bylo něco podobného třeba jsem tu na fóru.
P. Q. M.
Kdo je online
Uživatelé prohlížející si toto fórum: gilhad a 14 hostů