From 74bf57f13b1d847cdad995ffe2c89bdc6e6d8e4d Mon Sep 17 00:00:00 2001 From: Dmytro Korniienko Date: Mon, 23 May 2022 14:24:28 +0300 Subject: [PATCH 1/3] Update camera example for support LED Intensity --- .../CameraWebServer/CameraWebServer.ino | 40 ++++++++++--------- .../Camera/CameraWebServer/app_httpd.cpp | 22 ++++++++++ .../examples/Camera/CameraWebServer/board.h | 17 ++++++++ 3 files changed, 60 insertions(+), 19 deletions(-) create mode 100644 libraries/ESP32/examples/Camera/CameraWebServer/board.h diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino b/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino index 0e268b4fefa..88efd00d180 100644 --- a/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino +++ b/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino @@ -1,6 +1,5 @@ #include "esp_camera.h" #include - // // WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality // Ensure ESP32 Wrover Module or other board with PSRAM is selected @@ -10,26 +9,21 @@ // Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15 // seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well -// =================== -// Select camera model -// =================== -//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM -//#define CAMERA_MODEL_ESP_EYE // Has PSRAM -//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM -//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM -//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM -//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM -//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM -//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM -#define CAMERA_MODEL_AI_THINKER // Has PSRAM -//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM -// ** Espressif Internal Boards ** -//#define CAMERA_MODEL_ESP32_CAM_BOARD -//#define CAMERA_MODEL_ESP32S2_CAM_BOARD -//#define CAMERA_MODEL_ESP32S3_CAM_LCD - +#include "board.h" // Select camera model here (moved since dependencies) #include "camera_pins.h" +#ifdef CAMERA_MODEL_AI_THINKER +#ifndef CONFIG_LED_ILLUMINATOR_ENABLED +#define CONFIG_LED_ILLUMINATOR_ENABLED 1 +#endif +#include "soc/soc.h" +#include "soc/rtc_cntl_reg.h" +#endif + +#if defined(CONFIG_LED_ILLUMINATOR_ENABLED) +void ledc_setup(); +#endif + // =========================== // Enter your WiFi credentials // =========================== @@ -43,6 +37,10 @@ void setup() { Serial.setDebugOutput(true); Serial.println(); +#ifdef CAMERA_MODEL_AI_THINKER + WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector +#endif + camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; @@ -139,6 +137,10 @@ void setup() { Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); + +#if defined(CONFIG_LED_ILLUMINATOR_ENABLED) + ledc_setup(); +#endif } void loop() { diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp b/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp index d0a0fd59432..abb3130c0f9 100644 --- a/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp +++ b/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp @@ -17,6 +17,21 @@ #include "img_converters.h" #include "fb_gfx.h" #include "driver/ledc.h" + +#include "board.h" + +#if defined(CAMERA_MODEL_AI_THINKER) +#ifndef CONFIG_LED_ILLUMINATOR_ENABLED +#define CONFIG_LED_ILLUMINATOR_ENABLED 1 +#endif +#define CONFIG_LED_MAX_INTENSITY 255 +#define CONFIG_LED_LEDC_CHANNEL LEDC_CHANNEL_0 +#endif + +#ifdef CONFIG_LED_ILLUMINATOR_ENABLED +#include "esp32-hal-ledc.h" +#endif + #include "sdkconfig.h" #include "camera_index.h" @@ -279,6 +294,13 @@ static int run_face_recognition(fb_data_t *fb, std::list * #endif #ifdef CONFIG_LED_ILLUMINATOR_ENABLED +void ledc_setup() +{ + // PWM + ledcSetup(LEDC_CHANNEL_0, 4000, LEDC_TIMER_8_BIT); + ledcAttachPin(GPIO_NUM_4, LEDC_CHANNEL_0); // GPIO_NUM_4 = 4 +} + void enable_led(bool en) { // Turn LED On or Off int duty = en ? led_duty : 0; diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/board.h b/libraries/ESP32/examples/Camera/CameraWebServer/board.h new file mode 100644 index 00000000000..46d59dab5da --- /dev/null +++ b/libraries/ESP32/examples/Camera/CameraWebServer/board.h @@ -0,0 +1,17 @@ +// =================== +// Select camera model +// =================== +//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM +//#define CAMERA_MODEL_ESP_EYE // Has PSRAM +//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM +//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM +//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM +//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM +//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM +//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM +#define CAMERA_MODEL_AI_THINKER // Has PSRAM +//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM +// ** Espressif Internal Boards ** +//#define CAMERA_MODEL_ESP32_CAM_BOARD +//#define CAMERA_MODEL_ESP32S2_CAM_BOARD +//#define CAMERA_MODEL_ESP32S3_CAM_LCD From f5dffd332a0a0dff7c2bc6bb4b4b1826b4e0ed8c Mon Sep 17 00:00:00 2001 From: Dmytro Korniienko Date: Wed, 25 May 2022 14:40:23 +0300 Subject: [PATCH 2/3] Revert "Update camera example for support LED Intensity" This reverts commit 74bf57f13b1d847cdad995ffe2c89bdc6e6d8e4d. --- .../CameraWebServer/CameraWebServer.ino | 40 +++++++++---------- .../Camera/CameraWebServer/app_httpd.cpp | 22 ---------- .../examples/Camera/CameraWebServer/board.h | 17 -------- 3 files changed, 19 insertions(+), 60 deletions(-) delete mode 100644 libraries/ESP32/examples/Camera/CameraWebServer/board.h diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino b/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino index 88efd00d180..0e268b4fefa 100644 --- a/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino +++ b/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino @@ -1,5 +1,6 @@ #include "esp_camera.h" #include + // // WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality // Ensure ESP32 Wrover Module or other board with PSRAM is selected @@ -9,20 +10,25 @@ // Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15 // seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well -#include "board.h" // Select camera model here (moved since dependencies) -#include "camera_pins.h" - -#ifdef CAMERA_MODEL_AI_THINKER -#ifndef CONFIG_LED_ILLUMINATOR_ENABLED -#define CONFIG_LED_ILLUMINATOR_ENABLED 1 -#endif -#include "soc/soc.h" -#include "soc/rtc_cntl_reg.h" -#endif +// =================== +// Select camera model +// =================== +//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM +//#define CAMERA_MODEL_ESP_EYE // Has PSRAM +//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM +//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM +//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM +//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM +//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM +//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM +#define CAMERA_MODEL_AI_THINKER // Has PSRAM +//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM +// ** Espressif Internal Boards ** +//#define CAMERA_MODEL_ESP32_CAM_BOARD +//#define CAMERA_MODEL_ESP32S2_CAM_BOARD +//#define CAMERA_MODEL_ESP32S3_CAM_LCD -#if defined(CONFIG_LED_ILLUMINATOR_ENABLED) -void ledc_setup(); -#endif +#include "camera_pins.h" // =========================== // Enter your WiFi credentials @@ -37,10 +43,6 @@ void setup() { Serial.setDebugOutput(true); Serial.println(); -#ifdef CAMERA_MODEL_AI_THINKER - WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector -#endif - camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; @@ -137,10 +139,6 @@ void setup() { Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); - -#if defined(CONFIG_LED_ILLUMINATOR_ENABLED) - ledc_setup(); -#endif } void loop() { diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp b/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp index abb3130c0f9..d0a0fd59432 100644 --- a/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp +++ b/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp @@ -17,21 +17,6 @@ #include "img_converters.h" #include "fb_gfx.h" #include "driver/ledc.h" - -#include "board.h" - -#if defined(CAMERA_MODEL_AI_THINKER) -#ifndef CONFIG_LED_ILLUMINATOR_ENABLED -#define CONFIG_LED_ILLUMINATOR_ENABLED 1 -#endif -#define CONFIG_LED_MAX_INTENSITY 255 -#define CONFIG_LED_LEDC_CHANNEL LEDC_CHANNEL_0 -#endif - -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED -#include "esp32-hal-ledc.h" -#endif - #include "sdkconfig.h" #include "camera_index.h" @@ -294,13 +279,6 @@ static int run_face_recognition(fb_data_t *fb, std::list * #endif #ifdef CONFIG_LED_ILLUMINATOR_ENABLED -void ledc_setup() -{ - // PWM - ledcSetup(LEDC_CHANNEL_0, 4000, LEDC_TIMER_8_BIT); - ledcAttachPin(GPIO_NUM_4, LEDC_CHANNEL_0); // GPIO_NUM_4 = 4 -} - void enable_led(bool en) { // Turn LED On or Off int duty = en ? led_duty : 0; diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/board.h b/libraries/ESP32/examples/Camera/CameraWebServer/board.h deleted file mode 100644 index 46d59dab5da..00000000000 --- a/libraries/ESP32/examples/Camera/CameraWebServer/board.h +++ /dev/null @@ -1,17 +0,0 @@ -// =================== -// Select camera model -// =================== -//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM -//#define CAMERA_MODEL_ESP_EYE // Has PSRAM -//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM -//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM -//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM -//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM -//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM -//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM -#define CAMERA_MODEL_AI_THINKER // Has PSRAM -//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM -// ** Espressif Internal Boards ** -//#define CAMERA_MODEL_ESP32_CAM_BOARD -//#define CAMERA_MODEL_ESP32S2_CAM_BOARD -//#define CAMERA_MODEL_ESP32S3_CAM_LCD From 0aeed97c53dd5514543e4c64215a3c1c0e5106bf Mon Sep 17 00:00:00 2001 From: Dmytro Korniienko Date: Wed, 25 May 2022 14:44:46 +0300 Subject: [PATCH 3/3] fix --- .../CameraWebServer/CameraWebServer.ino | 3 +++ .../Camera/CameraWebServer/app_httpd.cpp | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino b/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino index 0e268b4fefa..a8ca5f63756 100644 --- a/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino +++ b/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino @@ -37,6 +37,7 @@ const char* ssid = "**********"; const char* password = "**********"; void startCameraServer(); +void ledc_setup(); void setup() { Serial.begin(115200); @@ -139,6 +140,8 @@ void setup() { Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); + + ledc_setup(); // uncomment CONFIG_LED_ILLUMINATOR_ENABLED in app_httpd.cpp if you need this } void loop() { diff --git a/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp b/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp index d0a0fd59432..d003c6933a5 100644 --- a/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp +++ b/libraries/ESP32/examples/Camera/CameraWebServer/app_httpd.cpp @@ -20,6 +20,17 @@ #include "sdkconfig.h" #include "camera_index.h" +//#define CONFIG_LED_ILLUMINATOR_ENABLED 1 +#ifdef CONFIG_LED_ILLUMINATOR_ENABLED +#define FLASH_LED_GPIO GPIO_NUM_4 +#define CONFIG_LED_MAX_INTENSITY 255 +#define CONFIG_LED_LEDC_CHANNEL LEDC_CHANNEL_0 +#endif + +#ifdef CONFIG_LED_ILLUMINATOR_ENABLED +#include "esp32-hal-ledc.h" +#endif + #if defined(ARDUINO_ARCH_ESP32) && defined(CONFIG_ARDUHAL_ESP_LOG) #include "esp32-hal-log.h" #define TAG "" @@ -1304,3 +1315,14 @@ void startCameraServer() httpd_register_uri_handler(stream_httpd, &stream_uri); } } + +void ledc_setup() +{ +#ifdef CONFIG_LED_ILLUMINATOR_ENABLED + // PWM + ledcSetup(LEDC_CHANNEL_0, 4000, LEDC_TIMER_8_BIT); + ledcAttachPin(FLASH_LED_GPIO, LEDC_CHANNEL_0); +#else + ESP_LOGI(TAG, "Flash led illumination is not configured"); +#endif +}