Hallöchen,
ich arbeite schon seit mehreren Tagen mit der ESP32-CAM.
Ein Problem das mir aufgefallen ist, ist, das die Bilder auf der microSD Karte immer grün sind.
Wenn ich das Beispielprogramm CameraWebServer verwende sind die Bilder normal unverfärbt. Ich habe auch ein anderes Programm geschrieben um die Kamerabilder auf dem Display ILI9341 anzuzeigen, auch das hat ohne Probleme funktioniert.
Der Fehler tritt anscheinend nur in diesem Programm mit microSD-Speicherung auf:
#include "esp_camera.h"
#include "SD_MMC.h"
// Kamera-Pin-Konfiguration
#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() {
Serial.begin(115200);
// Kamera-Konfiguration
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_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
// Kamera initialisieren
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Kamera Initialisierung fehlgeschlagen Fehler NR: 0x%x", err);
return;
}
// SD-Karte mounten
if(!SD_MMC.begin()){
Serial.println("SD-Karte mounten fehlgeschlagen");
return;
}
// Foto aufnehmen
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Fotografieren fehlgeschlagen");
return;
}
// Foto speichern
File file = SD_MMC.open("/bild.jpg", FILE_WRITE);
if(!file){
Serial.println("Datei öffnen fehlgeschlagen");
} else {
file.write(fb->buf, fb->len);
Serial.println("Bild gespeichert: /bild.jpg");
}
file.close();
esp_camera_fb_return(fb);
}
void loop() {
// Nichts zu tun
}
Ich habe schon verschiedene Kameraeinstellungen durchprobiert, die SD Karte frisch formatiert (keine Schnellformatierung) und verschiedene Sketches ausprobiert.
MfG spaten