added camera module info

pull/21/merge
Miroslav Pivovarsky 2024-06-01 14:38:31 +02:00
parent 55caed062c
commit cee7ebc8ae
3 changed files with 54 additions and 9 deletions

View File

@ -6,6 +6,9 @@
@author Miroslav Pivovarsky
Contact: miroslav.pivovarsky@gmail.com
https://github.com/espressif/esp32-camera
@bug: no know bug
*/
#include "camera.h"
@ -49,6 +52,7 @@ void Camera::Init() {
InitCameraModule();
ApplyCameraCfg();
GetCameraModel();
}
/**
@ -80,7 +84,7 @@ void Camera::InitCameraModule() {
CameraConfig.pin_sccb_scl = SIOC_GPIO_NUM;
CameraConfig.pin_pwdn = PWDN_GPIO_NUM;
CameraConfig.pin_reset = RESET_GPIO_NUM;
CameraConfig.xclk_freq_hz = 16500000; // or 3000000; 16500000; 20000000
CameraConfig.xclk_freq_hz = 20000000; // or 3000000; 16500000; 20000000
CameraConfig.pixel_format = PIXFORMAT_JPEG; /* YUV422,GRAYSCALE,RGB565,JPEG */
/* OV2640
@ -91,12 +95,16 @@ void Camera::InitCameraModule() {
FRAMESIZE_XGA (1024 x 768)
FRAMESIZE_SXGA (1280 x 1024)
FRAMESIZE_UXGA (1600 x 1200)
CAMERA_GRAB_WHEN_EMPTY - Fills buffers when they are empty. Less resources but first 'fb_count' frames might be old
CAMERA_GRAB_LATEST - Except when 1 frame buffer is used, queue will always contain the last 'fb_count' frames
*/
CameraConfig.frame_size = TFrameSize; /* FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA */
CameraConfig.jpeg_quality = PhotoQuality; /* 10-63 lower number means higher quality */
CameraConfig.fb_count = 1; /* picture frame buffer alocation */
CameraConfig.grab_mode = CAMERA_GRAB_LATEST; /* CAMERA_GRAB_WHEN_EMPTY or CAMERA_GRAB_LATEST */
//CameraConfig.fb_location = CAMERA_FB_IN_PSRAM; /* CAMERA_FB_IN_PSRAM or CAMERA_FB_IN_DRAM */
if (CameraConfig.fb_location == CAMERA_FB_IN_DRAM) {
log->AddEvent(LogLevel_Verbose, F("Camera frame buffer location: DRAM"));
@ -187,6 +195,11 @@ framesize_t Camera::TransformFrameSizeDataType(uint8_t i_data) {
return ret;
}
/**
@brief Function set photo sending status
@param bool i_data - true = on, false = off
@return none
*/
void Camera::SetPhotoSending(bool i_data) {
PhotoSending = i_data;
}
@ -228,7 +241,7 @@ void Camera::ApplyCameraCfg() {
log->AddEvent(LogLevel_Info, F("Set camera CFG"));
/* sensor configuration */
sensor_t* sensor = esp_camera_sensor_get();
sensor = esp_camera_sensor_get();
sensor->set_brightness(sensor, brightness); // -2 to 2
sensor->set_contrast(sensor, contrast); // -2 to 2
sensor->set_saturation(sensor, saturation); // -2 to 2
@ -268,6 +281,34 @@ void Camera::ReinitCameraModule() {
ApplyCameraCfg();
}
/**
@brief Function for get camera model and type
@param void
@return none
*/
void Camera::GetCameraModel() {
log->AddEvent(LogLevel_Info, F("Get camera model and type"));
if (sensor == NULL) {
log->AddEvent(LogLevel_Error, F("Camera sensor is NULL"));
return;
}
camera_sensor_info_t *info = esp_camera_sensor_get_info(&sensor->id);
if (info == NULL) {
log->AddEvent(LogLevel_Error, F("Camera sensor info is NULL"));
return;
}
CameraType = (camera_pid_t) sensor->id.PID;
CameraName = info->name;
log->AddEvent(LogLevel_Info, F("Camera type: "), String(CameraType));
log->AddEvent(LogLevel_Info, F("Camera name: "), String(CameraName));
log->AddEvent(LogLevel_Info, F("Camera model: "), String(info->model));
log->AddEvent(LogLevel_Info, F("Camera PID: "), String(info->pid));
log->AddEvent(LogLevel_Info, F("Camera MAX framesize: "), String(info->max_size));
log->AddEvent(LogLevel_Info, F("Camera support jpeg: "), String(info->support_jpeg));
}
/**
@brief Capture Photo and Save it to string array
@param none

View File

@ -68,6 +68,7 @@ private:
/* OV2640 camera module pinout and cfg*/
camera_config_t CameraConfig; ///< camera configuration
camera_fb_t *FrameBuffer; ///< frame buffer
sensor_t* sensor; ///< sensor
String Photo; ///< photo in string format
bool StreamOnOff; ///< stream on/off
SemaphoreHandle_t frameBufferSemaphore; ///< semaphore for frame buffer
@ -75,6 +76,8 @@ private:
uint16_t StreamAverageSize; ///< stream average size
PhotoExifData_t PhotoExifData; ///< photo exif data
uint8_t CameraCaptureFailedCounter; ///< camera capture failed counter
camera_pid_t CameraType; ///< camera type
String CameraName; ///< camera name
Configuration *config; ///< pointer to Configuration object
Logs *log; ///< pointer to Logs object
@ -88,6 +91,7 @@ public:
void ApplyCameraCfg();
void LoadCameraCfgFromEeprom();
void ReinitCameraModule();
void GetCameraModel();
void CapturePhoto();
void CaptureStream(camera_fb_t *);
void CaptureReturnFrameBuffer();

View File

@ -14,7 +14,7 @@
#define _MCU_CFG_H_
/* ---------------- BASIC MCU CFG --------------*/
#define SW_VERSION "1.0.3-rc2" ///< SW version
#define SW_VERSION "1.0.3" ///< SW version
#define SW_BUILD __DATE__ " " __TIME__ ///< build number
#define CONSOLE_VERBOSE_DEBUG false ///< enable/disable verbose debug log level for console
#define DEVICE_HOSTNAME "Prusa-ESP32cam" ///< device hostname