From 30d506576ff8a1be8df40f645e823583ee91f1a5 Mon Sep 17 00:00:00 2001 From: Rene Zeldenthuis Date: Mon, 31 Oct 2022 22:29:52 +0100 Subject: [PATCH] Added flash LED static setting --- html/index.html | 6 +++++- include/html_data.h | 2 +- include/settings.h | 3 ++- src/main.cpp | 17 +++++++++++++++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/html/index.html b/html/index.html index 3f88b6f..63ab219 100644 --- a/html/index.html +++ b/html/index.html @@ -149,7 +149,11 @@
JPEG quality:
-
{{JpegQuality}} (0-100)
+
{{JpegQuality}} (1-100)
+
+
+
Flash LED intensity:
+
{{FlashLedIntensity}} (0-100)
{{#CameraInitialized}} "; +constexpr char file_data_index_html[] = "{{AppTitle}} v{{AppVersion}}

{{ThingName}}


{{#ConfigChanged}} {{/ConfigChanged}}
ESP32
CPU model:
{{ChipModel}} rev. {{ChipRevision}}
CPU speed:
{{CpuFreqMHz}} Mhz
CPU cores:
{{CpuCores}}
RAM size:
{{HeapSize}}
PSRAM size:
{{PsRamSize}}
Flash size:
{{FlashSize}}
Diagnostics
Uptime:
{{Uptime}}
RTSP sessions:
{{NumRTSPSessions}}
Free heap:
{{FreeHeap}}
Max free block:
{{MaxAllocHeap}}
Network
Host name:
{{HostName}}
Mac address:
{{MacAddress}}
Wifi mode:
{{WifiMode}}
Access point:
{{AccessPoint}}
Signal strength:
{{SignalStrength}} dbm
IPv4 address:
{{IpV4}}
IPv6 address:
{{IpV6}}
{{#NetworkState.ApMode}} {{/NetworkState.ApMode}} {{#NetworkState.OnLine}} {{/NetworkState.OnLine}}
Settings
Camera type:
{{CameraType}}
Frame rate:
{{FrameDuration}} ms ({{FrameFrequency}} f/s)
Frame size:
{{FrameSize}}
Frame buffer location:
{{FrameBufferLocation}}
Frame buffers:
{{FrameBuffers}}
JPEG quality:
{{JpegQuality}} (1-100)
Flash LED intensity:
{{FlashLedIntensity}} (0-100)
{{#CameraInitialized}} {{/CameraInitialized}} {{^CameraInitialized}} {{/CameraInitialized}}
Camera stream

The camera stream can be found at the following location: rtsp://{{HostName}}:{{RtspPort}}/mjpeg/1

"; constexpr char file_data_restart_html[] = "{{AppTitle}} v{{AppVersion}}

{{ThingName}}


Restart

The device is restarting.


In some cases, the device requires a hard reset (power cycle).

If this page takes longer than a minute, consider performing a power cycle.

Restarting...
"; diff --git a/include/settings.h b/include/settings.h index 4f98553..6328bc2 100644 --- a/include/settings.h +++ b/include/settings.h @@ -5,7 +5,7 @@ #define WIFI_SSID "ESP32CAM-RTSP" #define WIFI_PASSWORD nullptr -#define CONFIG_VERSION "1.1" +#define CONFIG_VERSION "1.2" #define OTA_PASSWORD "ESP32CAM-RTSP" @@ -15,3 +15,4 @@ #define DEFAULT_FRAME_BUFFERS "2" #define DEFAULT_FRAME_SIZE "SVGA (800x600)" #define DEFAULT_JPEG_QUALITY "12" +#define DEFAULT_LIGHT_INTENSITY "5" \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index e70dca3..809f6e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,6 +20,7 @@ char frame_duration_val[6]; char frame_size_val[sizeof(frame_size_entry_t)]; char frame_buffers_val[3]; char jpeg_quality_val[4]; +char flash_led_intensity_val[4]; auto config_group_stream_settings = iotwebconf::ParameterGroup("settings", "Streaming settings"); auto config_camera_config = iotwebconf::SelectParameter("Camera config", "config", camera_config_val, sizeof(camera_config_val), (const char *)camera_configs, (const char *)camera_configs, sizeof(camera_configs) / sizeof(camera_configs[0]), sizeof(camera_configs[0]), DEFAULT_CAMERA_CONFIG); @@ -27,6 +28,7 @@ auto config_frame_rate = iotwebconf::NumberParameter("Frame duration (ms)", "fd" auto config_frame_size = iotwebconf::SelectParameter("Frame size", "fs", frame_size_val, sizeof(frame_size_val), (const char *)frame_sizes, (const char *)frame_sizes, sizeof(frame_sizes) / sizeof(frame_sizes[0]), sizeof(frame_sizes[0]), DEFAULT_FRAME_SIZE); auto config_frame_buffers = iotwebconf::NumberParameter("Frame buffers", "fb", frame_buffers_val, sizeof(frame_buffers_val), DEFAULT_FRAME_BUFFERS, nullptr, "min=\"1\" max=\"16\""); auto config_jpg_quality = iotwebconf::NumberParameter("JPEG quality", "q", jpeg_quality_val, sizeof(jpeg_quality_val), DEFAULT_JPEG_QUALITY, nullptr, "min=\"1\" max=\"100\""); +auto config_flash_led_intensity = iotwebconf::NumberParameter("Flash LED intensity", "li", flash_led_intensity_val, sizeof(flash_led_intensity_val), DEFAULT_LIGHT_INTENSITY, nullptr, "min=\"0\" max=\"100\""); // Camera OV2640 cam; @@ -108,6 +110,7 @@ void handle_root() {"CameraInitialized", String(camera_init_result == ESP_OK)}, {"CameraInitResult", "0x" + String(camera_init_result, 16)}, {"CameraInitResultText", esp_err_to_name(camera_init_result)}, + {"FlashLedIntensity", flash_led_intensity_val}, // RTSP {"RtspPort", String(RTSP_PORT)}}; @@ -167,6 +170,9 @@ void handle_snapshot() void on_config_saved() { log_v("on_config_saved"); + // Set flash led intensity + analogWrite(LED_FLASH, atoi(flash_led_intensity_val)); + config_changed = true; } @@ -211,8 +217,10 @@ void start_rtsp_server() void on_connected() { log_v("on_connected"); - // Turn LED off (has inverted logic GPIO33) + // Turn LED off (has inverted logic GPIO33) => red LED off => connected digitalWrite(LED_BUILTIN, true); + // Set flash led intensity + analogWrite(LED_FLASH, atoi(flash_led_intensity_val)); // Start (OTA) Over The Air programming when connected ArduinoOTA.begin(); // Start the RTSP Server @@ -225,9 +233,13 @@ void setup() WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); pinMode(LED_BUILTIN, OUTPUT); - // Turn LED on (has inverted logic GPIO33) + // Turn LED on (has inverted logic GPIO33) => red LED on => not connected digitalWrite(LED_BUILTIN, false); + pinMode(LED_FLASH, OUTPUT); + // Turn flash led off + analogWrite(LED_FLASH, 0); + #ifdef CORE_DEBUG_LEVEL Serial.begin(115200); Serial.setDebugOutput(true); @@ -242,6 +254,7 @@ void setup() config_group_stream_settings.addItem(&config_frame_size); config_group_stream_settings.addItem(&config_frame_buffers); config_group_stream_settings.addItem(&config_jpg_quality); + config_group_stream_settings.addItem(&config_flash_led_intensity); iotWebConf.addParameterGroup(&config_group_stream_settings); iotWebConf.getApTimeoutParameter()->visible = true; iotWebConf.setConfigSavedCallback(on_config_saved);