diff --git a/.gitignore b/.gitignore index 9c2f8d7..21f60c1 100644 --- a/.gitignore +++ b/.gitignore @@ -82,11 +82,11 @@ sdkconfig ### VisualStudioCode ### .vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -!.vscode/*.code-snippets +# !.vscode/settings.json +##!.vscode/tasks.json +# !.vscode/launch.json +# !.vscode/extensions.json +# !.vscode/*.code-snippets # Local History for Visual Studio Code .history/ diff --git a/bootloader_components/boot_hooks.c b/bootloader_components/boot_hooks.c index 6ed84f6..b13d3f8 100644 --- a/bootloader_components/boot_hooks.c +++ b/bootloader_components/boot_hooks.c @@ -1,6 +1,6 @@ // source: https://github.com/espressif/esp-iot-solution/blob/4730d91db70df7e6e0a3191d725ab1c5f98ff9ce/examples/usb/device/usb_webcam/bootloader_components/boot_hooks/boot_hooks.c -#ifdef CONFIG_WIRED_MODE +#ifdef CONFIG_GENERAL_WIRED_MODE #include "esp_log.h" #include "soc/rtc_cntl_struct.h" #include "soc/usb_serial_jtag_reg.h" diff --git a/components/CameraManager/CameraManager/CameraManager.cpp b/components/CameraManager/CameraManager/CameraManager.cpp index 1774395..f31601b 100644 --- a/components/CameraManager/CameraManager/CameraManager.cpp +++ b/components/CameraManager/CameraManager/CameraManager.cpp @@ -18,8 +18,8 @@ void CameraManager::setupCameraPinout() // 10000000 stable // 16500000 optimal freq on ESP32-CAM (default) // 20000000 max freq on ESP32-CAM - // 24000000 optimal freq on ESP32-S3 - int xclk_freq_hz = DEFAULT_XCLK_FREQ_HZ; + // 24000000 optimal freq on ESP32-S3 // 23MHz same fps + int xclk_freq_hz = CONFIG_CAMERA_WIFI_XCLK_FREQ; #if CONFIG_CAMERA_MODULE_ESP_EYE /* IO13, IO14 is designed for JTAG by default, @@ -48,8 +48,8 @@ void CameraManager::setupCameraPinout() ESP_LOGI(CAMERA_MANAGER_TAG, "CAM_BOARD"); #endif -#if CONFIG_WIRED_MODE - xclk_freq_hz = USB_DEFAULT_XCLK_FREQ_HZ; +#if CONFIG_GENERAL_WIRED_MODE + xclk_freq_hz = CONFIG_CAMERA_USB_XCLK_FREQ; #endif config = { @@ -71,8 +71,7 @@ void CameraManager::setupCameraPinout() .pin_href = CONFIG_HREF_GPIO_NUM, // CAM_PIN_HREF, .pin_pclk = CONFIG_PCLK_GPIO_NUM, // CAM_PIN_PCLK, - // XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental) - .xclk_freq_hz = xclk_freq_hz, // 20000000, + .xclk_freq_hz = xclk_freq_hz, // Set in config .ledc_timer = LEDC_TIMER_0, .ledc_channel = LEDC_CHANNEL_0, @@ -80,10 +79,10 @@ void CameraManager::setupCameraPinout() .pixel_format = PIXFORMAT_JPEG, // YUV422,GRAYSCALE,RGB565,JPEG .frame_size = FRAMESIZE_240X240, // QQVGA-UXGA, For ESP32, do not use sizes above QVGA when not JPEG. The performance of the ESP32-S series has improved a lot, but JPEG mode always gives better frame rates. - .jpeg_quality = 10, // 0-63, for OV series camera sensors, lower number means higher quality - .fb_count = 2, // Use 2 for streaming to balance memory and performance - .fb_location = CAMERA_FB_IN_PSRAM, // Use PSRAM for frame buffers - .grab_mode = CAMERA_GRAB_LATEST, // Always grab the latest frame for streaming + .jpeg_quality = 7, // 0-63, for OV series camera sensors, lower number means higher quality // Below 6 stability problems + .fb_count = 2, // When jpeg mode is used, if fb_count more than one, the driver will work in continuous mode. + .fb_location = CAMERA_FB_IN_DRAM, + .grab_mode = CAMERA_GRAB_WHEN_EMPTY, }; } @@ -95,7 +94,7 @@ void CameraManager::setupBasicResolution() ESP_LOGE(CAMERA_MANAGER_TAG, "PSRAM not initialized!"); ESP_LOGD(CAMERA_MANAGER_TAG, "Setting fb_location to CAMERA_FB_IN_DRAM with lower picture quality"); config.fb_location = CAMERA_FB_IN_DRAM; - config.jpeg_quality = 9; + config.jpeg_quality = 7; config.fb_count = 2; return; } @@ -197,7 +196,7 @@ bool CameraManager::setupCamera() return false; } -#if CONFIG_WIRED_MODE +#if CONFIG_GENERAL_WIRED_MODE const auto temp_sensor = esp_camera_sensor_get(); // Thanks to lick_it, we discovered that OV5640 likes to overheat when diff --git a/components/CameraManager/CameraManager/CameraManager.hpp b/components/CameraManager/CameraManager/CameraManager.hpp index 3a6a441..c6a909b 100644 --- a/components/CameraManager/CameraManager/CameraManager.hpp +++ b/components/CameraManager/CameraManager/CameraManager.hpp @@ -14,11 +14,7 @@ #include #include -#ifndef DEFAULT_XCLK_FREQ_HZ -#define DEFAULT_XCLK_FREQ_HZ 16500000 -#define USB_DEFAULT_XCLK_FREQ_HZ 20000000 -#define OV5640_XCLK_FREQ_HZ DEFAULT_XCLK_FREQ_HZ -#endif +#define OV5640_XCLK_FREQ_HZ CONFIG_CAMERA_WIFI_XCLK_FREQ class CameraManager { diff --git a/components/LEDManager/LEDManager/LEDManager.cpp b/components/LEDManager/LEDManager/LEDManager.cpp index f80d434..97ad6e0 100644 --- a/components/LEDManager/LEDManager/LEDManager.cpp +++ b/components/LEDManager/LEDManager/LEDManager.cpp @@ -78,32 +78,35 @@ void LEDManager::setup() { gpio_set_direction(blink_led_pin, GPIO_MODE_OUTPUT); this->toggleLED(LED_OFF); -#ifdef CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL - ESP_LOGD(LED_MANAGER_TAG, "Setting up illuminator led."); - const int freq = 5000; - const auto resolution = LEDC_TIMER_8_BIT; - const int dutyCycle = 255; +#ifdef CONFIG_LED_EXTERNAL_CONTROL + ESP_LOGD(LED_MANAGER_TAG, "Setting up illuminator led."); + const int freq = CONFIG_LED_EXTERNAL_PWM_FREQ; + const auto resolution = LEDC_TIMER_8_BIT; + const int dutyCycle = (CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE * 255) / 100; - ledc_timer_config_t ledc_timer = { - .speed_mode = LEDC_LOW_SPEED_MODE, - .duty_resolution = resolution, - .timer_num = LEDC_TIMER_0, - .freq_hz = freq, - .clk_cfg = LEDC_AUTO_CLK}; + ledc_timer_config_t ledc_timer = { + .speed_mode = LEDC_LOW_SPEED_MODE, + .duty_resolution = resolution, + .timer_num = LEDC_TIMER_0, + .freq_hz = freq, + .clk_cfg = LEDC_AUTO_CLK + }; - ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer)); + ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer)); - ledc_channel_config_t ledc_channel = { - .gpio_num = this->illumninator_led_pin, - .speed_mode = LEDC_LOW_SPEED_MODE, - .channel = LEDC_CHANNEL_0, - .intr_type = LEDC_INTR_DISABLE, - .timer_sel = LEDC_TIMER_0, - .duty = dutyCycle, - .hpoint = 0}; + ledc_channel_config_t ledc_channel = { + .gpio_num = this->illumninator_led_pin, + .speed_mode = LEDC_LOW_SPEED_MODE, + .channel = LEDC_CHANNEL_0, + .intr_type = LEDC_INTR_DISABLE, + .timer_sel = LEDC_TIMER_0, + .duty = dutyCycle, + .hpoint = 0 + }; - ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel)); + ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel)); #endif + ESP_LOGD(LED_MANAGER_TAG, "Done."); } diff --git a/components/LEDManager/LEDManager/LEDManager.hpp b/components/LEDManager/LEDManager/LEDManager.hpp index 1df8dbb..af92387 100644 --- a/components/LEDManager/LEDManager/LEDManager.hpp +++ b/components/LEDManager/LEDManager/LEDManager.hpp @@ -6,7 +6,7 @@ #include "freertos/FreeRTOS.h" #include "freertos/queue.h" -#ifdef CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL +#ifdef CONFIG_LED_EXTERNAL_CONTROL #include "driver/ledc.h" #endif diff --git a/components/ProjectConfig/ProjectConfig/Models.hpp b/components/ProjectConfig/ProjectConfig/Models.hpp index d2a01c1..85c9b81 100644 --- a/components/ProjectConfig/ProjectConfig/Models.hpp +++ b/components/ProjectConfig/ProjectConfig/Models.hpp @@ -84,7 +84,7 @@ struct MDNSConfig_t : BaseConfigModel { // by default, this will be openiris // but we can override it at compile time - std::string default_hostname = CONFIG_MDNS_HOSTNAME; + std::string default_hostname = CONFIG_WIFI_MDNS_HOSTNAME; if (default_hostname.empty()) { @@ -224,8 +224,8 @@ struct AP_WiFiConfig_t : BaseConfigModel void load() { - this->ssid = this->pref->getString("apSSID", CONFIG_AP_WIFI_SSID); - this->password = this->pref->getString("apPassword", CONFIG_AP_WIFI_PASSWORD); + this->ssid = this->pref->getString("apSSID", CONFIG_WIFI_AP_SSID); + this->password = this->pref->getString("apPassword", CONFIG_WIFI_AP_PASSWORD); }; void save() const { diff --git a/components/UVCStream/UVCStream/UVCStream.cpp b/components/UVCStream/UVCStream/UVCStream.cpp index 2c61d27..38890e2 100644 --- a/components/UVCStream/UVCStream/UVCStream.cpp +++ b/components/UVCStream/UVCStream/UVCStream.cpp @@ -113,9 +113,9 @@ static void UVCStreamHelpers::camera_fb_return_cb(uvc_fb_t *fb, void *cb_ctx) esp_err_t UVCStreamManager::setup() { -#ifndef CONFIG_WIRED_MODE +#ifndef CONFIG_GENERAL_WIRED_MODE ESP_LOGE(UVC_STREAM_TAG, "The board does not support UVC, please, setup WiFi connection."); - return; + return ESP_FAIL; #endif ESP_LOGI(UVC_STREAM_TAG, "Setting up UVC Stream"); diff --git a/components/wifiManager/wifiManager/wifiManager.cpp b/components/wifiManager/wifiManager/wifiManager.cpp index 53b52f5..d7099ed 100644 --- a/components/wifiManager/wifiManager/wifiManager.cpp +++ b/components/wifiManager/wifiManager/wifiManager.cpp @@ -227,8 +227,8 @@ void WiFiManager::SetupAccessPoint() wifi_config_t ap_wifi_config = { .ap = { - .ssid = CONFIG_AP_WIFI_SSID, - .password = CONFIG_AP_WIFI_PASSWORD, + .ssid = CONFIG_WIFI_AP_SSID, + .password = CONFIG_WIFI_AP_PASSWORD, .max_connection = 1, }, diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index 2f95048..10b4d05 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -1,56 +1,104 @@ -menu "OpenIris basic configuration" +menu "ENV_Caps" orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps" - config BLINK_GPIO - int "Blink GPIO number" - range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX - default 8 - help - GPIO number (IOxx) to blink on and off the LED. - Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink. +endmenu - config SUPPORTS_EXTERNAL_LED_CONTROL - bool "Tick if your board supports the control of external IR leds (Project Babble)" - default false - help - GPIO number (IOxx) to the pin controlling the LEDs found on Babble boards. - - config LED_C_PIN - int "Pin number of the pin controlling the external leds (Project Babble)" - range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX - default 1 - help - GPIO number (IOxx) to the pin controlling the LEDs found on Babble boards. - - config BLINK_PERIOD - int "Blink period in ms" - range 10 3600000 - default 1000 - help - Define the blinking period in milliseconds. +menu "OpenIris: General Configuration" - config WIRED_MODE - bool "WIred mode" + config GENERAL_WIRED_MODE + bool "Wired mode" default false - config MDNS_HOSTNAME - string "mDNS name" + config GENERAL_UVC_DELAY + int "UVC delay (s)" + default 30 + range 10 10000 + help + Delay in seconds before the ESP reports itself as a UVC device. + +endmenu + +menu "OpenIris: Camera Configuration" + + config CAMERA_USB_XCLK_FREQ + int "USB XCLK frequency (Hz)" + default 10000000 # should be set in individual board config + range 1 24000000 + help + USB XCLK frequency in Hz. + + config CAMERA_WIFI_XCLK_FREQ + int "WIFI XCLK frequency (Hz)" + default 16500000 + range 1 24000000 + help + WIFI XCLK frequency in Hz. + +endmenu + +menu "OpenIris: WiFi Configuration" + + config WIFI_MDNS_HOSTNAME + string "mDNS hostname" default "openiristracker" config WIFI_SSID - string "WiFi network name" + string "WiFi network name (SSID)" default "" - + config WIFI_PASSWORD string "WiFi password" default "" - config AP_WIFI_SSID - string "AP WiFi network name" + config WIFI_AP_SSID + string "Access Point WiFi network name (SSID)" default "EyeTrackVR" - - config AP_WIFI_PASSWORD - string "AP WiFi password" + + config WIFI_AP_PASSWORD + string "Access Point WiFi password" default "12345678" + endmenu + +menu "OpenIris: LED Configuration" + + config LED_BLINK_GPIO + int "Blink GPIO number" + range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX + default 8 + help + GPIO number (IOxx) used to blink an onboard LED. + Some GPIOs are reserved for other functions (e.g. flash) and cannot be used. + + config LED_EXTERNAL_GPIO + int "GPIO pin controlling external LEDs" + range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX + default 1 + help + GPIO number connected to the control line of the external IR LEDs. + + config LED_EXTERNAL_CONTROL + bool "Board supports external IR LED control" + default false + help + Enable this if your board can control external IR LEDs. + + config LED_EXTERNAL_PWM_FREQ + int "External LED PWM frequency (Hz)" + default 5000 + range 1 40000 + depends on LED_EXTERNAL_CONTROL + help + Frequency of the PWM signal driving the external IR LEDs. + + config LED_EXTERNAL_PWM_DUTY_CYCLE + int "External LED PWM duty cycle (%)" + default 50 + range 0 100 + depends on LED_EXTERNAL_CONTROL + help + Duty cycle of the PWM signal for external IR LEDs, in percent. + 0 means always off, 100 means always on. + +endmenu \ No newline at end of file diff --git a/main/openiris_main.cpp b/main/openiris_main.cpp index 3fdc793..8c908d6 100644 --- a/main/openiris_main.cpp +++ b/main/openiris_main.cpp @@ -22,12 +22,12 @@ #include #include -#ifdef CONFIG_WIRED_MODE +#ifdef CONFIG_GENERAL_WIRED_MODE #include #endif -#define BLINK_GPIO (gpio_num_t) CONFIG_BLINK_GPIO -#define CONFIG_LED_C_PIN_GPIO (gpio_num_t) CONFIG_LED_C_PIN +#define BLINK_GPIO (gpio_num_t) CONFIG_LED_BLINK_GPIO +#define CONFIG_LED_C_PIN_GPIO (gpio_num_t) CONFIG_LED_EXTERNAL_GPIO esp_timer_handle_t timerHandle; QueueHandle_t eventQueue = xQueueCreate(10, sizeof(SystemEvent)); @@ -49,7 +49,7 @@ StreamServer streamServer(80, stateManager); auto *restAPI = new RestAPI("http://0.0.0.0:81", commandManager); -#ifdef CONFIG_WIRED_MODE +#ifdef CONFIG_GENERAL_WIRED_MODE UVCStreamManager uvcStream; #endif @@ -95,7 +95,7 @@ void start_video_streaming(void *arg) if (deviceMode == StreamingMode::UVC) { -#ifdef CONFIG_WIRED_MODE +#ifdef CONFIG_GENERAL_WIRED_MODE ESP_LOGI("[MAIN]", "Starting UVC streaming mode."); ESP_LOGI("[MAIN]", "Initializing UVC hardware..."); esp_err_t ret = uvcStream.setup(); @@ -193,12 +193,12 @@ void startup_timer_callback(void *arg) } else if (deviceMode == StreamingMode::UVC) { -#ifdef CONFIG_WIRED_MODE +#ifdef CONFIG_GENERAL_WIRED_MODE ESP_LOGI("[MAIN]", "Starting UVC streaming automatically"); activate_streaming(serialTaskHandle); #else - ESP_LOGE("[MAIN]", "UVC mode selected but CONFIG_WIRED_MODE not enabled in build!"); - ESP_LOGI("[MAIN]", "Device will stay in setup mode. Enable CONFIG_WIRED_MODE and rebuild."); + ESP_LOGE("[MAIN]", "UVC mode selected but CONFIG_GENERAL_WIRED_MODE not enabled in build!"); + ESP_LOGI("[MAIN]", "Device will stay in setup mode. Enable CONFIG_GENERAL_WIRED_MODE and rebuild."); #endif } else @@ -301,13 +301,15 @@ extern "C" void app_main(void) serialManager->setup(); static TaskHandle_t serialManagerHandle = nullptr; + // Pass address of variable so xTaskCreate() stores the actual task handle xTaskCreate( HandleSerialManagerTask, "HandleSerialManagerTask", 1024 * 6, serialManager, 1, // we only rely on the serial manager during provisioning, we can run it slower - &serialManagerHandle); + &serialManagerHandle + ); wifiManager->Begin(); mdnsManager.start(); @@ -337,9 +339,8 @@ extern "C" void app_main(void) .skip_unhandled_events = false}; ESP_ERROR_CHECK(esp_timer_create(&startup_timer_args, &timerHandle)); - ESP_ERROR_CHECK(esp_timer_start_once(timerHandle, 20000000)); // 20 seconds in microseconds - + ESP_ERROR_CHECK(esp_timer_start_once(timerHandle, CONFIG_GENERAL_UVC_DELAY * 1000000)); ESP_LOGI("[MAIN]", "Started 20-second startup timer"); ESP_LOGI("[MAIN]", "Send any command within 20 seconds to enter heartbeat mode"); setSerialManagerHandle(&serialManagerHandle); -} +} \ No newline at end of file diff --git a/sdkconfig b/sdkconfig index 7d33de9..bbb9dd7 100644 --- a/sdkconfig +++ b/sdkconfig @@ -559,23 +559,47 @@ CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table # -# OpenIris basic configuration +# ENV_Caps # CONFIG_ENV_GPIO_RANGE_MIN=0 CONFIG_ENV_GPIO_RANGE_MAX=48 CONFIG_ENV_GPIO_IN_RANGE_MAX=48 CONFIG_ENV_GPIO_OUT_RANGE_MAX=48 -CONFIG_BLINK_GPIO=38 -CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL=y -CONFIG_LED_C_PIN=1 -CONFIG_BLINK_PERIOD=1000 -CONFIG_WIRED_MODE=y -CONFIG_MDNS_HOSTNAME="openiristracker" +# end of ENV_Caps + +# +# OpenIris: General Configuration +# +CONFIG_GENERAL_WIRED_MODE=y +CONFIG_GENERAL_UVC_DELAY=30 +# end of OpenIris: General Configuration + +# +# OpenIris: Camera Configuration +# +CONFIG_CAMERA_USB_XCLK_FREQ=10000000 +CONFIG_CAMERA_WIFI_XCLK_FREQ=16500000 +# end of OpenIris: Camera Configuration + +# +# OpenIris: WiFi Configuration +# +CONFIG_WIFI_MDNS_HOSTNAME="openiristracker" CONFIG_WIFI_SSID="" CONFIG_WIFI_PASSWORD="" -CONFIG_AP_WIFI_SSID="EyeTrackVR" -CONFIG_AP_WIFI_PASSWORD="12345678" -# end of OpenIris basic configuration +CONFIG_WIFI_AP_SSID="EyeTrackVR" +CONFIG_WIFI_AP_PASSWORD="12345678" +# end of OpenIris: WiFi Configuration + +# +# OpenIris: LED Configuration +# +CONFIG_LED_BLINK_GPIO=8 +CONFIG_LED_EXTERNAL_GPIO=1 +CONFIG_LED_EXTERNAL_CONTROL=y +CONFIG_LED_EXTERNAL_PWM_FREQ=5000 +CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100 +# end of OpenIris: LED Configuration # # Camera sensor pinout configuration @@ -2194,78 +2218,6 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y # CONFIG_WIFI_PROV_STA_FAST_SCAN is not set # end of Wi-Fi Provisioning Manager -# -# CMake Utilities -# -# CONFIG_CU_RELINKER_ENABLE is not set -# CONFIG_CU_DIAGNOSTICS_COLOR_NEVER is not set -CONFIG_CU_DIAGNOSTICS_COLOR_ALWAYS=y -# CONFIG_CU_DIAGNOSTICS_COLOR_AUTO is not set -# CONFIG_CU_GCC_LTO_ENABLE is not set -# CONFIG_CU_GCC_STRING_1BYTE_ALIGN is not set -# end of CMake Utilities - -# -# Camera configuration -# -# CONFIG_OV7670_SUPPORT is not set -# CONFIG_OV7725_SUPPORT is not set -# CONFIG_NT99141_SUPPORT is not set -CONFIG_OV2640_SUPPORT=y -CONFIG_OV3660_SUPPORT=y -CONFIG_OV5640_SUPPORT=y -# CONFIG_GC2145_SUPPORT is not set -# CONFIG_GC032A_SUPPORT is not set -# CONFIG_GC0308_SUPPORT is not set -# CONFIG_BF3005_SUPPORT is not set -# CONFIG_BF20A6_SUPPORT is not set -# CONFIG_SC101IOT_SUPPORT is not set -# CONFIG_SC030IOT_SUPPORT is not set -# CONFIG_SC031GS_SUPPORT is not set -# CONFIG_SCCB_HARDWARE_I2C_PORT0 is not set -CONFIG_SCCB_HARDWARE_I2C_PORT1=y -CONFIG_SCCB_CLK_FREQ=100000 -CONFIG_CAMERA_TASK_STACK_SIZE=30720 -CONFIG_CAMERA_CORE0=y -# CONFIG_CAMERA_CORE1 is not set -# CONFIG_CAMERA_NO_AFFINITY is not set -CONFIG_CAMERA_DMA_BUFFER_SIZE_MAX=32768 -CONFIG_CAMERA_JPEG_MODE_FRAME_SIZE_AUTO=y -# CONFIG_CAMERA_JPEG_MODE_FRAME_SIZE_CUSTOM is not set -# CONFIG_CAMERA_CONVERTER_ENABLED is not set -# CONFIG_LCD_CAM_ISR_IRAM_SAFE is not set -# end of Camera configuration - -# -# mDNS -# -CONFIG_MDNS_MAX_INTERFACES=3 -CONFIG_MDNS_MAX_SERVICES=10 -CONFIG_MDNS_TASK_PRIORITY=1 -CONFIG_MDNS_ACTION_QUEUE_LEN=16 -CONFIG_MDNS_TASK_STACK_SIZE=4096 -# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set -CONFIG_MDNS_TASK_AFFINITY_CPU0=y -# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set -CONFIG_MDNS_TASK_AFFINITY=0x0 -CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 -CONFIG_MDNS_TIMER_PERIOD_MS=100 -# CONFIG_MDNS_NETWORKING_SOCKET is not set -# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set -# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set -CONFIG_MDNS_ENABLE_CONSOLE_CLI=y -# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set -CONFIG_MDNS_MULTIPLE_INSTANCE=y - -# -# MDNS Predefined interfaces -# -CONFIG_MDNS_PREDEF_NETIF_STA=y -CONFIG_MDNS_PREDEF_NETIF_AP=y -CONFIG_MDNS_PREDEF_NETIF_ETH=y -# end of MDNS Predefined interfaces -# end of mDNS - # # USB Device UVC # @@ -2305,7 +2257,7 @@ CONFIG_UVC_CAM1_MULTI_FRAMESIZE=y # CONFIG_UVC_MULTI_FRAME_WIDTH_1=240 CONFIG_UVC_MULTI_FRAME_HEIGHT_1=240 -CONFIG_UVC_MULTI_FRAME_FPS_1=60 +CONFIG_UVC_MULTI_FRAME_FPS_1=90 # end of FRAME_SIZE_1 # @@ -2313,7 +2265,7 @@ CONFIG_UVC_MULTI_FRAME_FPS_1=60 # CONFIG_UVC_MULTI_FRAME_WIDTH_2=240 CONFIG_UVC_MULTI_FRAME_HEIGHT_2=240 -CONFIG_UVC_MULTI_FRAME_FPS_2=60 +CONFIG_UVC_MULTI_FRAME_FPS_2=90 # end of FRAME_SIZE_2 # @@ -2321,7 +2273,7 @@ CONFIG_UVC_MULTI_FRAME_FPS_2=60 # CONFIG_UVC_MULTI_FRAME_WIDTH_3=240 CONFIG_UVC_MULTI_FRAME_HEIGHT_3=240 -CONFIG_UVC_MULTI_FRAME_FPS_3=60 +CONFIG_UVC_MULTI_FRAME_FPS_3=90 # end of FRAME_SIZE_3 # end of UVC_MULTI_FRAME_CONFIG @@ -2334,6 +2286,90 @@ CONFIG_UVC_CAM1_TASK_PRIORITY=3 CONFIG_UVC_CAM1_TASK_CORE=-1 # end of UVC Task Config # end of USB Device UVC + +# +# CMake Utilities +# +# CONFIG_CU_RELINKER_ENABLE is not set +# CONFIG_CU_DIAGNOSTICS_COLOR_NEVER is not set +CONFIG_CU_DIAGNOSTICS_COLOR_ALWAYS=y +# CONFIG_CU_DIAGNOSTICS_COLOR_AUTO is not set +# CONFIG_CU_GCC_LTO_ENABLE is not set +# CONFIG_CU_GCC_STRING_1BYTE_ALIGN is not set +# end of CMake Utilities + +# +# Camera configuration +# +# CONFIG_OV7670_SUPPORT is not set +# CONFIG_OV7725_SUPPORT is not set +# CONFIG_NT99141_SUPPORT is not set +CONFIG_OV2640_SUPPORT=y +CONFIG_OV3660_SUPPORT=y +CONFIG_OV5640_SUPPORT=y +# CONFIG_GC2145_SUPPORT is not set +# CONFIG_GC032A_SUPPORT is not set +# CONFIG_GC0308_SUPPORT is not set +# CONFIG_BF3005_SUPPORT is not set +# CONFIG_BF20A6_SUPPORT is not set +# CONFIG_SC101IOT_SUPPORT is not set +# CONFIG_SC030IOT_SUPPORT is not set +# CONFIG_SC031GS_SUPPORT is not set +CONFIG_MEGA_CCM_SUPPORT=y +# CONFIG_SCCB_HARDWARE_I2C_PORT0 is not set +CONFIG_SCCB_HARDWARE_I2C_PORT1=y +CONFIG_SCCB_CLK_FREQ=100000 +CONFIG_CAMERA_TASK_STACK_SIZE=30720 +CONFIG_CAMERA_CORE0=y +# CONFIG_CAMERA_CORE1 is not set +# CONFIG_CAMERA_NO_AFFINITY is not set +CONFIG_CAMERA_DMA_BUFFER_SIZE_MAX=32768 +CONFIG_CAMERA_JPEG_MODE_FRAME_SIZE_AUTO=y +# CONFIG_CAMERA_JPEG_MODE_FRAME_SIZE_CUSTOM is not set +# CONFIG_CAMERA_CONVERTER_ENABLED is not set +# CONFIG_LCD_CAM_ISR_IRAM_SAFE is not set +# end of Camera configuration + +# +# mDNS +# +CONFIG_MDNS_MAX_INTERFACES=3 +CONFIG_MDNS_MAX_SERVICES=10 +CONFIG_MDNS_TASK_PRIORITY=1 +CONFIG_MDNS_ACTION_QUEUE_LEN=16 +CONFIG_MDNS_TASK_STACK_SIZE=4096 +# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_MDNS_TASK_AFFINITY_CPU0=y +# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set +CONFIG_MDNS_TASK_AFFINITY=0x0 + +# +# MDNS Memory Configuration +# +# CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM is not set +CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y +# CONFIG_MDNS_MEMORY_ALLOC_SPIRAM is not set +CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y +# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set +# end of MDNS Memory Configuration + +CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 +CONFIG_MDNS_TIMER_PERIOD_MS=100 +# CONFIG_MDNS_NETWORKING_SOCKET is not set +# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set +# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set +CONFIG_MDNS_ENABLE_CONSOLE_CLI=y +# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set +CONFIG_MDNS_MULTIPLE_INSTANCE=y + +# +# MDNS Predefined interfaces +# +CONFIG_MDNS_PREDEF_NETIF_STA=y +CONFIG_MDNS_PREDEF_NETIF_AP=y +CONFIG_MDNS_PREDEF_NETIF_ETH=y +# end of MDNS Predefined interfaces +# end of mDNS # end of Component config # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set diff --git a/sdkconfig.base_defaults b/sdkconfig.base_defaults index c4a9dfd..5553cc8 100644 --- a/sdkconfig.base_defaults +++ b/sdkconfig.base_defaults @@ -536,25 +536,6 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table -# -# OpenIris basic configuration -# -CONFIG_ENV_GPIO_RANGE_MIN=0 -CONFIG_ENV_GPIO_RANGE_MAX=48 -CONFIG_ENV_GPIO_IN_RANGE_MAX=48 -CONFIG_ENV_GPIO_OUT_RANGE_MAX=48 -CONFIG_BLINK_GPIO=38 -CONFIG_BLINK_PERIOD=1000 -CONFIG_WIRED_MODE=y -CONFIG_MDNS_HOSTNAME="openiristracker" -CONFIG_WIFI_SSID="" -CONFIG_WIFI_PASSWORD="" -CONFIG_AP_WIFI_SSID="EyeTrackVR" -CONFIG_AP_WIFI_PASSWORD="12345678" -# CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL is not set -CONFIG_LED_C_PIN=1 -# end of OpenIris basic configuration - # # Camera sensor pinout configuration # @@ -2204,7 +2185,7 @@ CONFIG_UVC_CAM1_MULTI_FRAMESIZE=y # CONFIG_UVC_MULTI_FRAME_WIDTH_1=240 CONFIG_UVC_MULTI_FRAME_HEIGHT_1=240 -CONFIG_UVC_MULTI_FRAME_FPS_1=60 +CONFIG_UVC_MULTI_FRAME_FPS_1=90 # end of FRAME_SIZE_1 # @@ -2212,7 +2193,7 @@ CONFIG_UVC_MULTI_FRAME_FPS_1=60 # CONFIG_UVC_MULTI_FRAME_WIDTH_2=240 CONFIG_UVC_MULTI_FRAME_HEIGHT_2=240 -CONFIG_UVC_MULTI_FRAME_FPS_2=60 +CONFIG_UVC_MULTI_FRAME_FPS_2=90 # end of FRAME_SIZE_2 # @@ -2220,7 +2201,7 @@ CONFIG_UVC_MULTI_FRAME_FPS_2=60 # CONFIG_UVC_MULTI_FRAME_WIDTH_3=240 CONFIG_UVC_MULTI_FRAME_HEIGHT_3=240 -CONFIG_UVC_MULTI_FRAME_FPS_3=60 +CONFIG_UVC_MULTI_FRAME_FPS_3=90 # end of FRAME_SIZE_3 # end of UVC_MULTI_FRAME_CONFIG diff --git a/sdkconfig.board.facefocusvr_eye b/sdkconfig.board.facefocusvr_eye new file mode 100644 index 0000000..0ee0a7e --- /dev/null +++ b/sdkconfig.board.facefocusvr_eye @@ -0,0 +1,62 @@ +CONFIG_BLINK_LED_GPIO=y +CONFIG_BLINK_GPIO=21 +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_SPIRAM_MODE_OCT=y +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="8MB" +# Camera sensor pinout configuration +CONFIG_CAMERA_MODULE_NAME="FaceFocusVR_Face" +CONFIG_PWDN_GPIO_NUM=-1 +CONFIG_RESET_GPIO_NUM=-1 +CONFIG_XCLK_GPIO_NUM=10 +CONFIG_SIOD_GPIO_NUM=40 +CONFIG_SIOC_GPIO_NUM=39 +CONFIG_Y9_GPIO_NUM=48 +CONFIG_Y8_GPIO_NUM=11 +CONFIG_Y7_GPIO_NUM=12 +CONFIG_Y6_GPIO_NUM=14 +CONFIG_Y5_GPIO_NUM=16 +CONFIG_Y4_GPIO_NUM=18 +CONFIG_Y3_GPIO_NUM=17 +CONFIG_Y2_GPIO_NUM=15 +CONFIG_VSYNC_GPIO_NUM=38 +CONFIG_HREF_GPIO_NUM=47 +CONFIG_PCLK_GPIO_NUM=13 +# end of Camera sensor pinout configuration +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y +CONFIG_SPIRAM_CLK_IO=30 +CONFIG_SPIRAM_CS_IO=26 +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +CONFIG_SPIRAM_SPEED_80M=y +# CONFIG_SPIRAM_SPEED_40M is not set +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +# CONFIG_SPIRAM_SPEED_120M is not set +CONFIG_SPIRAM_SPEED=80 +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_LED_EXTERNAL_CONTROL=y +CONFIG_LED_EXTERNAL_GPIO=9 +CONFIG_LED_EXTERNAL_PWM_FREQ=20000 +CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=50 +CONFIG_CAMERA_USB_XCLK_FREQ=23000000 +CONFIG_GENERAL_WIRED_MODE=y \ No newline at end of file diff --git a/sdkconfig.board.facefocusvr_face b/sdkconfig.board.facefocusvr_face new file mode 100644 index 0000000..5006bae --- /dev/null +++ b/sdkconfig.board.facefocusvr_face @@ -0,0 +1,62 @@ +CONFIG_BLINK_LED_GPIO=y +CONFIG_BLINK_GPIO=21 +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_SPIRAM_MODE_OCT=y +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="8MB" +# Camera sensor pinout configuration +CONFIG_CAMERA_MODULE_NAME="FaceFocusVR_Face" +CONFIG_PWDN_GPIO_NUM=-1 +CONFIG_RESET_GPIO_NUM=-1 +CONFIG_XCLK_GPIO_NUM=10 +CONFIG_SIOD_GPIO_NUM=40 +CONFIG_SIOC_GPIO_NUM=39 +CONFIG_Y9_GPIO_NUM=48 +CONFIG_Y8_GPIO_NUM=11 +CONFIG_Y7_GPIO_NUM=12 +CONFIG_Y6_GPIO_NUM=14 +CONFIG_Y5_GPIO_NUM=16 +CONFIG_Y4_GPIO_NUM=18 +CONFIG_Y3_GPIO_NUM=17 +CONFIG_Y2_GPIO_NUM=15 +CONFIG_VSYNC_GPIO_NUM=38 +CONFIG_HREF_GPIO_NUM=47 +CONFIG_PCLK_GPIO_NUM=13 +# end of Camera sensor pinout configuration +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y +CONFIG_SPIRAM_CLK_IO=30 +CONFIG_SPIRAM_CS_IO=26 +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +CONFIG_SPIRAM_SPEED_80M=y +# CONFIG_SPIRAM_SPEED_40M is not set +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +# CONFIG_SPIRAM_SPEED_120M is not set +CONFIG_SPIRAM_SPEED=80 +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_LED_EXTERNAL_CONTROL=y +CONFIG_LED_EXTERNAL_GPIO=9 +CONFIG_LED_EXTERNAL_PWM_FREQ=20000 +CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100 +CONFIG_CAMERA_USB_XCLK_FREQ=23000000 +CONFIG_GENERAL_WIRED_MODE=y \ No newline at end of file diff --git a/sdkconfig.board.project_babble b/sdkconfig.board.project_babble index 2b6ad55..47b59a9 100644 --- a/sdkconfig.board.project_babble +++ b/sdkconfig.board.project_babble @@ -46,4 +46,9 @@ CONFIG_SPIRAM_CS_IO=26 # CONFIG_SPIRAM_RODATA is not set # CONFIG_SPIRAM_SPEED_120M is not set CONFIG_SPIRAM_SPEED_80M=y -CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL=y \ No newline at end of file +CONFIG_LED_EXTERNAL_CONTROL=y +CONFIG_LED_EXTERNAL_PWM_FREQ=5000 +CONFIG_LED_EXTERNAL_PWM_DUTY_CYCLE=100 +CONFIG_LED_EXTERNAL_GPIO=1 +CONFIG_CAMERA_USB_XCLK_FREQ=23000000 # NOT TESTED +CONFIG_GENERAL_WIRED_MODE=y \ No newline at end of file diff --git a/sdkconfig.board.xiao-esp32s3 b/sdkconfig.board.xiao-esp32s3 index b44f93f..8c11ad3 100644 --- a/sdkconfig.board.xiao-esp32s3 +++ b/sdkconfig.board.xiao-esp32s3 @@ -54,4 +54,6 @@ CONFIG_SPIRAM_SPEED_80M=y # CONFIG_SPIRAM_SPEED_120M is not set CONFIG_SPIRAM_SPEED=80 CONFIG_SPIRAM_SPEED_80M=y -# CONFIG_SUPPORTS_EXTERNAL_LED_CONTROL is not set \ No newline at end of file +# CONFIG_LED_EXTERNAL_CONTROL is not set +CONFIG_CAMERA_USB_XCLK_FREQ=23000000 +CONFIG_GENERAL_WIRED_MODE=y \ No newline at end of file diff --git a/tools/switchBoardType.py b/tools/switchBoardType.py index b60f5c6..997650c 100644 --- a/tools/switchBoardType.py +++ b/tools/switchBoardType.py @@ -10,7 +10,9 @@ ENDC = '\033[0m' sdkconfig_defaults = "sdkconfig.base_defaults" supported_boards = [ "xiao-esp32s3", - "project_babble" + "project_babble", + "facefocusvr_face", + "facefocusvr_eye" ] parser = argparse.ArgumentParser()