├── .gitignore ├── esp_idf_esp32s3 ├── .gitignore ├── main │ ├── wifi.h │ ├── CMakeLists.txt │ ├── http.h │ ├── joystick.h │ ├── ULN2003.h │ ├── main.cpp │ ├── joystick.cpp │ ├── http.cpp │ ├── ULN2003.cpp │ └── wifi.cpp ├── test │ ├── test_readme.md │ └── joystick_motor.cpp ├── CMakeLists.txt ├── .devcontainer │ ├── devcontainer.json │ └── Dockerfile ├── README_hardware_zh_tw.md ├── README_hardware.md └── sdkconfig ├── server ├── index.html ├── templates │ ├── index.html │ └── server-view.html └── server.js ├── package.json ├── client ├── open-cam │ ├── index.html │ ├── style.css │ └── script.js └── server-view │ └── script.js ├── CODE_OF_CONDUCT.md ├── README_zh_tw.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | cert.pem 3 | key.pem 4 | /.vscode 5 | -------------------------------------------------------------------------------- /esp_idf_esp32s3/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | main/wifi_config.h 3 | /.vscode -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/wifi.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | void wifi_init_sta(); -------------------------------------------------------------------------------- /esp_idf_esp32s3/test/test_readme.md: -------------------------------------------------------------------------------- 1 | ### test/scripts 用法 2 | 使用方法:ctrl+a, ctrl+c 貼到main.cpp, build and run -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS "main.cpp" "ULN2003.cpp" "joystick.cpp" "wifi.cpp" "http.cpp" 2 | INCLUDE_DIRS "." 3 | REQUIRES driver esp_wifi esp_event nvs_flash esp_adc esp_http_server) -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/http.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "esp_http_server.h" 4 | 5 | httpd_handle_t start_webserver(void); 6 | void stop_webserver(httpd_handle_t server); 7 | 8 | // 宣告馬達控制函數 9 | void rotate_clockwise(); 10 | void rotate_counterclockwise(); -------------------------------------------------------------------------------- /esp_idf_esp32s3/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # For more information about build system see 2 | # https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html 3 | # The following five lines of boilerplate have to be in your project's 4 | # CMakeLists in this exact order for cmake to work correctly 5 | cmake_minimum_required(VERSION 3.16) 6 | 7 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 8 | project(esp-idf-esp32s3) 9 | -------------------------------------------------------------------------------- /server/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Server View 5 | 12 | 13 | 14 |

Server View

15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pet-camera-project", 3 | "version": "1.0.0", 4 | "description": "Real-time Pet Camera", 5 | "main": "server/server.js", 6 | "scripts": { 7 | "start": "node server/server.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "axios": "^1.7.9", 14 | "express": "^4.18.2", 15 | "ip": "^2.0.1", 16 | "ws": "^8.14.2" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pet Camera Server 5 | 6 | 7 |

Pet Camera Server

8 |

Welcome to the Pet Camera Server. Use the links below to access the different functionalities:

9 | 13 | 14 | -------------------------------------------------------------------------------- /client/open-cam/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Open Camera 5 | 6 | 7 | 8 |
9 |

Open Camera

10 |
11 | 12 | 13 |
14 |

Connecting...

15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/joystick.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "driver/gpio.h" 4 | #include "esp_adc/adc_oneshot.h" 5 | 6 | // 搖桿控制閾值 (根據實際情況調整) 7 | #define JOYSTICK_THRESHOLD 500 8 | 9 | class Joystick 10 | { 11 | public: 12 | Joystick(adc_unit_t adc_unit, adc_channel_t vrx_channel, adc_channel_t vry_channel, gpio_num_t sw_pin); 13 | ~Joystick(); 14 | 15 | void init(); 16 | void read(); 17 | int getVRxValue() const; 18 | int getVRyValue() const; 19 | bool isSWPressed() const; 20 | void resetSWPressed(); 21 | 22 | private: 23 | adc_oneshot_unit_handle_t adc_handle; 24 | adc_unit_t adc_unit; 25 | adc_channel_t VRx_channel; 26 | adc_channel_t VRy_channel; 27 | gpio_num_t SW_pin; 28 | int VRx_value; 29 | int VRy_value; 30 | bool SW_pressed; 31 | 32 | static void IRAM_ATTR joystick_sw_isr_handler(void *arg); 33 | }; -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/ULN2003.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "driver/gpio.h" 3 | 4 | class ULN2003 5 | { 6 | public: 7 | enum Mode 8 | { 9 | HALF_STEP, 10 | FULL_STEP, 11 | }; 12 | 13 | ULN2003(Mode m, gpio_num_t in1, gpio_num_t in2, gpio_num_t in3, gpio_num_t in4); 14 | ~ULN2003(); 15 | 16 | void init(); 17 | void setSpeed(int speed_ms); 18 | void rotate(int angle); 19 | void step(int direction); 20 | double getStepsPerRevolution() const; 21 | int getCurrentStep() const; 22 | void resetStep(); 23 | void setStep(int step); 24 | 25 | protected: 26 | Mode mode; 27 | gpio_num_t IN1, IN2, IN3, IN4; 28 | double stepsPerRevolution; 29 | int freqSpeed; 30 | int currentStep; 31 | 32 | private: 33 | static const int motorSequenceHalf[8][4]; 34 | static const int motorSequenceFull[4][4]; 35 | static const char *TAG; 36 | }; -------------------------------------------------------------------------------- /client/open-cam/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: sans-serif; 3 | background-color: #f2f2f2; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | min-height: 100vh; 8 | margin: 0; 9 | } 10 | 11 | .container { 12 | background-color: #fff; 13 | border-radius: 10px; 14 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); 15 | padding: 20px; 16 | text-align: center; 17 | max-width: 680px; 18 | width: 95%; 19 | } 20 | 21 | h1 { 22 | color: #333; 23 | margin-bottom: 20px; 24 | } 25 | 26 | .video-wrapper { 27 | position: relative; 28 | width: 100%; 29 | max-width: 640px; 30 | height: auto; 31 | margin: 0 auto; 32 | } 33 | 34 | #localVideo { 35 | transform: scaleX(-1); 36 | width: 100%; 37 | height: auto; 38 | background-color: #000; /* Prevent white flash before video loads */ 39 | } 40 | 41 | #hiddenCanvas { 42 | display: none; 43 | } 44 | 45 | #status { 46 | margin-top: 10px; 47 | font-size: 14px; 48 | color: #555; 49 | } -------------------------------------------------------------------------------- /esp_idf_esp32s3/.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ESP-IDF QEMU", 3 | "build": { 4 | "dockerfile": "Dockerfile" 5 | }, 6 | "customizations": { 7 | "vscode": { 8 | "settings": { 9 | "terminal.integrated.defaultProfile.linux": "bash", 10 | "idf.espIdfPath": "/opt/esp/idf", 11 | "idf.customExtraPaths": "", 12 | "idf.pythonBinPath": "/opt/esp/python_env/idf5.4_py3.12_env/bin/python", 13 | "idf.toolsPath": "/opt/esp", 14 | "idf.gitPath": "/usr/bin/git" 15 | }, 16 | "extensions": [ 17 | "espressif.esp-idf-extension" 18 | ] 19 | }, 20 | "codespaces": { 21 | "settings": { 22 | "terminal.integrated.defaultProfile.linux": "bash", 23 | "idf.espIdfPath": "/opt/esp/idf", 24 | "idf.customExtraPaths": "", 25 | "idf.pythonBinPath": "/opt/esp/python_env/idf5.4_py3.12_env/bin/python", 26 | "idf.toolsPath": "/opt/esp", 27 | "idf.gitPath": "/usr/bin/git" 28 | }, 29 | "extensions": [ 30 | "espressif.esp-idf-extension", 31 | "espressif.esp-idf-web" 32 | ] 33 | } 34 | }, 35 | "runArgs": ["--privileged"] 36 | } -------------------------------------------------------------------------------- /esp_idf_esp32s3/.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM espressif/idf 2 | 3 | ARG DEBIAN_FRONTEND=nointeractive 4 | ARG CONTAINER_USER=esp 5 | ARG USER_UID=1050 6 | ARG USER_GID=$USER_UID 7 | 8 | RUN apt-get update \ 9 | && apt install -y -q \ 10 | cmake \ 11 | git \ 12 | libglib2.0-0 \ 13 | libnuma1 \ 14 | libpixman-1-0 \ 15 | && rm -rf /var/lib/apt/lists/* 16 | 17 | # QEMU 18 | ENV QEMU_REL=esp_develop_8.2.0_20240122 19 | ENV QEMU_SHA256=e7c72ef5705ad1444d391711088c8717fc89f42e9bf6d1487f9c2a326b8cfa83 20 | ENV QEMU_DIST=qemu-xtensa-softmmu-${QEMU_REL}-x86_64-linux-gnu.tar.xz 21 | ENV QEMU_URL=https://github.com/espressif/qemu/releases/download/esp-develop-8.2.0-20240122/${QEMU_DIST} 22 | 23 | ENV LC_ALL=C.UTF-8 24 | ENV LANG=C.UTF-8 25 | 26 | RUN wget --no-verbose ${QEMU_URL} \ 27 | && echo "${QEMU_SHA256} *${QEMU_DIST}" | sha256sum --check --strict - \ 28 | && tar -xf $QEMU_DIST -C /opt \ 29 | && rm ${QEMU_DIST} 30 | 31 | ENV PATH=/opt/qemu/bin:${PATH} 32 | 33 | RUN groupadd --gid $USER_GID $CONTAINER_USER \ 34 | && adduser --uid $USER_UID --gid $USER_GID --disabled-password --gecos "" ${CONTAINER_USER} \ 35 | && usermod -a -G root $CONTAINER_USER && usermod -a -G dialout $CONTAINER_USER 36 | 37 | RUN chmod -R 775 /opt/esp/python_env/ 38 | 39 | USER ${CONTAINER_USER} 40 | ENV USER=${CONTAINER_USER} 41 | WORKDIR /home/${CONTAINER_USER} 42 | 43 | RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc 44 | 45 | ENTRYPOINT [ "/opt/esp/entrypoint.sh" ] 46 | 47 | CMD ["/bin/bash", "-c"] -------------------------------------------------------------------------------- /esp_idf_esp32s3/test/joystick_motor.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "freertos/FreeRTOS.h" 3 | #include "freertos/task.h" 4 | #include "esp_log.h" 5 | #include "ULN2003.h" 6 | #include "joystick.h" 7 | 8 | // 定義步進電機引腳 9 | #define IN1 GPIO_NUM_15 10 | #define IN2 GPIO_NUM_16 11 | #define IN3 GPIO_NUM_17 12 | #define IN4 GPIO_NUM_18 13 | 14 | // 建立 ULN2003 物件,使用全步進模式 15 | ULN2003 stepper(ULN2003::FULL_STEP, IN1, IN2, IN3, IN4); 16 | // 建立 Joystick 物件, 17 | // ADC1_CHANNEL_0 對應 GPIO1, ADC1_CHANNEL_1 對應 GPIO2, 因板子而異 18 | Joystick joystick(ADC_UNIT_1, ADC_CHANNEL_0, ADC_CHANNEL_1, GPIO_NUM_4); 19 | // 標籤用於日誌輸出 20 | static const char *TAG = "main"; 21 | 22 | // void joystickAndMotorTask(void *pvParameters); 23 | 24 | extern "C" void app_main(void) 25 | { 26 | 27 | // 初始化步進電機 28 | stepper.init(); 29 | 30 | // 設定速度 (延遲時間 5ms) 31 | stepper.setSpeed(5); 32 | 33 | // 初始化搖桿 34 | joystick.init(); 35 | 36 | while (1) 37 | { 38 | // 讀取搖桿數值 39 | joystick.read(); 40 | 41 | ESP_LOGI(TAG, "VRx: %d, VRy: %d, SW: %s", joystick.getVRxValue(), joystick.getVRyValue(), joystick.isSWPressed() ? "Pressed" : "Released"); 42 | 43 | // 根據搖桿值控制步進電機 44 | if (joystick.getVRxValue() > (4095 - JOYSTICK_THRESHOLD)) 45 | { 46 | ESP_LOGI(TAG, "順時針旋轉"); 47 | stepper.rotate(5); // 旋轉小角度,根據實際情況調整 48 | } 49 | else if (joystick.getVRxValue() < JOYSTICK_THRESHOLD) 50 | { 51 | ESP_LOGI(TAG, "逆時針旋轉"); 52 | stepper.rotate(-5); // 旋轉小角度,根據實際情況調整 53 | } 54 | 55 | // 處理搖桿按鈕按下事件 56 | if (joystick.isSWPressed()) 57 | { 58 | ESP_LOGI(TAG, "搖桿按鈕按下"); 59 | 60 | joystick.resetSWPressed(); // 重置按鈕狀態否則會一直觸發 61 | } 62 | 63 | vTaskDelay(pdMS_TO_TICKS(50)); // 調整延遲時間,根據實際情況調整 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "freertos/FreeRTOS.h" 3 | #include "freertos/task.h" 4 | #include "esp_log.h" 5 | #include "ULN2003.h" 6 | #include "joystick.h" 7 | #include "wifi.h" 8 | 9 | // 定義步進電機引腳 10 | #define IN1 GPIO_NUM_15 11 | #define IN2 GPIO_NUM_16 12 | #define IN3 GPIO_NUM_17 13 | #define IN4 GPIO_NUM_18 14 | 15 | // 建立 ULN2003 物件,使用全步進模式 16 | ULN2003 stepper(ULN2003::FULL_STEP, IN1, IN2, IN3, IN4); 17 | // 建立 Joystick 物件, 18 | // ADC1_CHANNEL_0 對應 GPIO1, ADC1_CHANNEL_1 對應 GPIO2, 因板子而異 19 | Joystick joystick(ADC_UNIT_1, ADC_CHANNEL_0, ADC_CHANNEL_1, GPIO_NUM_4); 20 | // 標籤用於日誌輸出 21 | static const char *TAG = "main"; 22 | 23 | // 馬達控制函數 24 | void rotate_clockwise() { 25 | ESP_LOGI(TAG, "順時針旋轉"); 26 | stepper.rotate(15); // 旋轉角度,根據實際情況調整 27 | } 28 | 29 | void rotate_counterclockwise() { 30 | ESP_LOGI(TAG, "逆時針旋轉"); 31 | stepper.rotate(-15); // 旋轉角度,根據實際情況調整 32 | } 33 | 34 | extern "C" void app_main(void) 35 | { 36 | // 初始化 Wi-Fi 37 | wifi_init_sta(); 38 | 39 | // 初始化步進電機 40 | stepper.init(); 41 | 42 | // 設定速度 (延遲時間 5ms) 43 | stepper.setSpeed(5); 44 | 45 | // 初始化搖桿 46 | joystick.init(); 47 | 48 | while (1) 49 | { 50 | // 讀取搖桿數值 51 | joystick.read(); 52 | 53 | // ESP_LOGI(TAG, "VRx: %d, VRy: %d, SW: %s", joystick.getVRxValue(), joystick.getVRyValue(), joystick.isSWPressed() ? "Pressed" : "Released"); 54 | 55 | // 根據搖桿值控制步進電機 56 | if (joystick.getVRxValue() > (4095 - JOYSTICK_THRESHOLD)) 57 | { 58 | ESP_LOGI(TAG, "順時針旋轉"); 59 | stepper.rotate(5); // 旋轉小角度,根據實際情況調整 60 | } 61 | else if (joystick.getVRxValue() < JOYSTICK_THRESHOLD) 62 | { 63 | ESP_LOGI(TAG, "逆時針旋轉"); 64 | stepper.rotate(-5); // 旋轉小角度,根據實際情況調整 65 | } 66 | 67 | // 處理搖桿按鈕按下事件 68 | if (joystick.isSWPressed()) 69 | { 70 | ESP_LOGI(TAG, "搖桿按鈕按下"); 71 | 72 | joystick.resetSWPressed(); // 重置按鈕狀態否則會一直觸發 73 | } 74 | 75 | vTaskDelay(pdMS_TO_TICKS(50)); // 調整延遲時間,根據實際情況調整 76 | } 77 | } -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/joystick.cpp: -------------------------------------------------------------------------------- 1 | #include "joystick.h" 2 | #include "esp_log.h" 3 | 4 | static const char *TAG = "joystick"; 5 | 6 | Joystick::Joystick(adc_unit_t adc_unit, adc_channel_t vrx_channel, adc_channel_t vry_channel, gpio_num_t sw_pin) 7 | : adc_unit(adc_unit), VRx_channel(vrx_channel), VRy_channel(vry_channel), SW_pin(sw_pin), VRx_value(0), VRy_value(0), SW_pressed(false) 8 | { 9 | // Initialize ADC unit 10 | adc_oneshot_unit_init_cfg_t init_config = { 11 | .unit_id = adc_unit, 12 | }; 13 | ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config, &adc_handle)); 14 | } 15 | 16 | Joystick::~Joystick() 17 | { 18 | // 解除安裝 GPIO 中斷服務 19 | gpio_isr_handler_remove(SW_pin); 20 | // 刪除 ADC unit 21 | ESP_ERROR_CHECK(adc_oneshot_del_unit(adc_handle)); 22 | } 23 | 24 | void Joystick::init() 25 | { 26 | // 設定 ADC 通道 27 | adc_oneshot_chan_cfg_t config = { 28 | .atten = ADC_ATTEN_DB_12, 29 | .bitwidth = ADC_BITWIDTH_DEFAULT, 30 | }; 31 | ESP_ERROR_CHECK(adc_oneshot_config_channel(adc_handle, VRx_channel, &config)); 32 | ESP_ERROR_CHECK(adc_oneshot_config_channel(adc_handle, VRy_channel, &config)); 33 | 34 | // 初始化搖桿按鈕 GPIO 35 | gpio_config_t io_conf = {}; 36 | io_conf.intr_type = GPIO_INTR_NEGEDGE; 37 | io_conf.mode = GPIO_MODE_INPUT; 38 | io_conf.pin_bit_mask = (1ULL << SW_pin); 39 | io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; 40 | io_conf.pull_up_en = GPIO_PULLUP_ENABLE; 41 | gpio_config(&io_conf); 42 | 43 | // 安裝 GPIO 中斷服務 (只安裝一次) 44 | static bool isr_service_installed = false; 45 | if (!isr_service_installed) 46 | { 47 | gpio_install_isr_service(0); 48 | isr_service_installed = true; 49 | } 50 | 51 | // 掛載搖桿按鈕中斷服務程序 52 | gpio_isr_handler_add(SW_pin, joystick_sw_isr_handler, (void *)this); // 傳入 this 指標 53 | } 54 | 55 | void Joystick::read() 56 | { 57 | // 讀取搖桿 X 軸和 Y 軸的值 58 | ESP_ERROR_CHECK(adc_oneshot_read(adc_handle, VRx_channel, &VRx_value)); 59 | ESP_ERROR_CHECK(adc_oneshot_read(adc_handle, VRy_channel, &VRy_value)); 60 | } 61 | 62 | int Joystick::getVRxValue() const 63 | { 64 | return VRx_value; 65 | } 66 | 67 | int Joystick::getVRyValue() const 68 | { 69 | return VRy_value; 70 | } 71 | 72 | bool Joystick::isSWPressed() const 73 | { 74 | return SW_pressed; 75 | } 76 | 77 | void IRAM_ATTR Joystick::joystick_sw_isr_handler(void *arg) 78 | { 79 | Joystick *joystick = (Joystick *)arg; // 取得 Joystick 物件指標 80 | joystick->SW_pressed = true; // 設定按鈕狀態 81 | } 82 | 83 | void Joystick::resetSWPressed() 84 | { 85 | SW_pressed = false; 86 | ESP_LOGI(TAG, "搖桿按鈕已重置"); 87 | } -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/http.cpp: -------------------------------------------------------------------------------- 1 | #include "http.h" 2 | #include "esp_log.h" 3 | 4 | static const char *TAG = "http_server"; 5 | 6 | // 宣告馬達控制函數 (讓 http.cpp 知道這些函數的存在) 7 | extern void rotate_clockwise(); 8 | extern void rotate_counterclockwise(); 9 | 10 | /* HTTP GET 處理器 - 用於測試與 ESP32 的連線 11 | * 當 Node.js 伺服器發送 GET 請求到 /test 路徑時,此函數會被調用。 12 | * 它會返回一個表示連線成功的訊息。 13 | */ 14 | static esp_err_t http_test_handler(httpd_req_t *req) 15 | { 16 | httpd_resp_set_hdr(req, "Connection", "close"); 17 | const char resp[] = "Connection test successful!"; 18 | httpd_resp_send(req, resp, HTTPD_RESP_USE_STRLEN); 19 | return ESP_OK; 20 | } 21 | 22 | /* HTTP POST 處理器 - 用於接收來自 Node.js 伺服器的控制指令 23 | * 當 Node.js 伺服器發送 POST 請求到 /message 路徑時,此函數會被調用。 24 | * 它會解析請求內容,並根據內容控制步進電機。 25 | */ 26 | static esp_err_t http_post_handler(httpd_req_t *req) 27 | { 28 | char content[100]; 29 | size_t recv_size = sizeof(content); 30 | 31 | int ret = httpd_req_recv(req, content, recv_size); 32 | if (ret <= 0) { /* 0 return value indicates connection closed */ 33 | /* Check if timeout occurred */ 34 | if (ret == HTTPD_SOCK_ERR_TIMEOUT) { 35 | /* In case of timeout one can choose to retry sending this response */ 36 | httpd_resp_send_408(req); 37 | } 38 | return ESP_FAIL; 39 | } 40 | 41 | // 打印接收到的訊息 42 | content[ret] = '\0'; // 確保字串正確結尾 43 | ESP_LOGI(TAG, "Received message: %s", content); 44 | 45 | // 根據接收到的訊息控制步進電機 46 | if (strcmp(content, "clockwise") == 0) { 47 | rotate_clockwise(); 48 | } else if (strcmp(content, "counterclockwise") == 0) { 49 | rotate_counterclockwise(); 50 | } 51 | 52 | // 傳送回應 53 | const char resp[] = "Message received"; 54 | httpd_resp_send(req, resp, HTTPD_RESP_USE_STRLEN); 55 | return ESP_OK; 56 | } 57 | 58 | // 定義 /test 路徑的 URI 處理器 59 | static const httpd_uri_t test = { 60 | .uri = "/test", 61 | .method = HTTP_GET, // 使用 HTTP GET 方法 62 | .handler = http_test_handler, // 指定處理函數為 http_test_handler 63 | .user_ctx = NULL 64 | }; 65 | 66 | // 定義 /message 路徑的 URI 處理器 67 | static const httpd_uri_t post = { 68 | .uri = "/message", 69 | .method = HTTP_POST, 70 | .handler = http_post_handler, 71 | .user_ctx = NULL 72 | }; 73 | 74 | httpd_handle_t start_webserver(void) 75 | { 76 | httpd_handle_t server = NULL; 77 | httpd_config_t config = HTTPD_DEFAULT_CONFIG(); 78 | 79 | // 啟動 httpd server 80 | ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port); 81 | if (httpd_start(&server, &config) == ESP_OK) { 82 | // 設定 URI 處理器 83 | ESP_LOGI(TAG, "Registering URI handlers"); 84 | httpd_register_uri_handler(server, &post); // 註冊 /message 的處理器 85 | httpd_register_uri_handler(server, &test); // 註冊 /test 的處理器 86 | return server; 87 | } 88 | 89 | ESP_LOGI(TAG, "Error starting server!"); 90 | return NULL; 91 | } 92 | 93 | void stop_webserver(httpd_handle_t server) 94 | { 95 | // 停止 httpd server 96 | if (server) { 97 | httpd_stop(server); 98 | } 99 | } -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/ULN2003.cpp: -------------------------------------------------------------------------------- 1 | #include "ULN2003.h" 2 | #include "freertos/FreeRTOS.h" 3 | #include "freertos/task.h" 4 | #include 5 | #include "freertos/FreeRTOSConfig.h" 6 | #include "freertos/portmacro.h" 7 | #include "esp_log.h" 8 | #include "sdkconfig.h" 9 | #include "driver/gpio.h" 10 | 11 | const int ULN2003::motorSequenceHalf[8][4] = { 12 | {1, 0, 0, 0}, 13 | {1, 1, 0, 0}, 14 | {0, 1, 0, 0}, 15 | {0, 1, 1, 0}, 16 | {0, 0, 1, 0}, 17 | {0, 0, 1, 1}, 18 | {0, 0, 0, 1}, 19 | {1, 0, 0, 1} 20 | }; 21 | 22 | const int ULN2003::motorSequenceFull[4][4] = { 23 | {1, 1, 0, 0}, 24 | {0, 1, 1, 0}, 25 | {0, 0, 1, 1}, 26 | {1, 0, 0, 1} 27 | }; 28 | 29 | const char *ULN2003::TAG = "ULN2003"; 30 | 31 | ULN2003::ULN2003(Mode m, gpio_num_t in1, gpio_num_t in2, gpio_num_t in3, gpio_num_t in4) 32 | : mode(m), IN1(in1), IN2(in2), IN3(in3), IN4(in4), currentStep(0) 33 | { 34 | if (mode == HALF_STEP) { 35 | stepsPerRevolution = 4075.7728395061727/8; //28BYJ-48 的半步模式 36 | } else { 37 | stepsPerRevolution = 4075.7728395061727/2; //28BYJ-48 的全步模式 38 | } 39 | freqSpeed = 10; // 預設速度 40 | } 41 | 42 | ULN2003::~ULN2003() 43 | { 44 | } 45 | 46 | void ULN2003::init() 47 | { 48 | gpio_config_t io_conf = {}; 49 | io_conf.intr_type = GPIO_INTR_DISABLE; 50 | io_conf.mode = GPIO_MODE_OUTPUT; 51 | io_conf.pin_bit_mask = (1ULL << IN1) | (1ULL << IN2) | (1ULL << IN3) | (1ULL << IN4); 52 | io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; 53 | io_conf.pull_up_en = GPIO_PULLUP_DISABLE; 54 | gpio_config(&io_conf); 55 | // ESP_LOGI(TAG, "GPIO initialized"); 56 | } 57 | 58 | void ULN2003::setSpeed(int speed_ms) 59 | { 60 | freqSpeed = speed_ms; 61 | } 62 | 63 | void ULN2003::rotate(int angle) 64 | { 65 | int steps = (int)round((double)(angle * stepsPerRevolution) / 360.0); 66 | int direction = (steps > 0) ? 1 : -1; 67 | for (int i = 0; i < abs(steps); i++) { 68 | step(direction); 69 | } 70 | } 71 | 72 | void ULN2003::step(int direction) 73 | { 74 | currentStep += direction; 75 | if (currentStep >= stepsPerRevolution) { 76 | currentStep = 0; 77 | } else if (currentStep < 0) { 78 | currentStep = stepsPerRevolution - 1; 79 | } 80 | 81 | int sequenceIndex; 82 | if (mode == HALF_STEP) 83 | { 84 | sequenceIndex = currentStep % 8; 85 | gpio_set_level(IN1, motorSequenceHalf[sequenceIndex][0]); 86 | gpio_set_level(IN2, motorSequenceHalf[sequenceIndex][1]); 87 | gpio_set_level(IN3, motorSequenceHalf[sequenceIndex][2]); 88 | gpio_set_level(IN4, motorSequenceHalf[sequenceIndex][3]); 89 | } 90 | else 91 | { 92 | sequenceIndex = currentStep % 4; 93 | gpio_set_level(IN1, motorSequenceFull[sequenceIndex][0]); 94 | gpio_set_level(IN2, motorSequenceFull[sequenceIndex][1]); 95 | gpio_set_level(IN3, motorSequenceFull[sequenceIndex][2]); 96 | gpio_set_level(IN4, motorSequenceFull[sequenceIndex][3]); 97 | } 98 | vTaskDelay(pdMS_TO_TICKS(freqSpeed)); 99 | } 100 | 101 | double ULN2003::getStepsPerRevolution() const 102 | { 103 | return stepsPerRevolution; 104 | } 105 | 106 | int ULN2003::getCurrentStep() const 107 | { 108 | return currentStep; 109 | } 110 | 111 | void ULN2003::resetStep() { 112 | currentStep = 0; 113 | } 114 | 115 | void ULN2003::setStep(int step) { 116 | currentStep = step; 117 | } -------------------------------------------------------------------------------- /esp_idf_esp32s3/README_hardware_zh_tw.md: -------------------------------------------------------------------------------- 1 | ## ESP32-S3 Firmware (esp_idf_esp32s3) 2 | 本節說明使用 ESP32-S3 韌體的相關資訊,它負責根據搖桿和遠端網頁介面的輸入控制馬達。 3 | 4 | ## 程式碼 5 | * **main**: 存放主要程式碼 6 | * **http.cpp/http.h**: 處理 HTTP 伺服器相關邏輯。 7 | * **joystick.cpp/joystick.h**: 處理搖桿輸入。 8 | * **main.cpp**: 程式主要進入點。 9 | * **ULN2003.cpp/ULN2003.h**: 控制 28BYJ-48 步進馬達。 10 | * **wifi.cpp/wifi.h**: 處理 Wi-Fi 連線。 11 | * **wifi_config.h**: 存放 Wi-Fi SSID 和密碼 (需自行修改)。 12 | ## 硬體使用 13 | * **ESP32S3 開發板**: 型號:**Goouuu ESP32-S3 N16R8 16M flash/8M PSRAM 雙Type-C USB / W2812 RGB**,用於控制步進馬達和處理 HTTP 請求。 14 | ![Image](https://www.taiwansensor.com.tw/wp-content/uploads/2023/12/O1CN01Zmz8W21kAXm0aySdE_672934643.jpg) 15 | 16 | * **28BYJ-48 步進馬達和ULN2003驅動版**: 用於旋轉。 17 | ![Image](https://m.media-amazon.com/images/I/61Ml9ebd2kL._AC_UF894,1000_QL80_.jpg) 18 | 19 | * **搖桿模組**: 用於控制步進馬達的旋轉方向。 20 | ![Image](https://down-br.img.susercontent.com/file/bcf905ecd9ff177fde7f4fbcafc9c400) 21 | * **電源模組**: 專門用於供應步進馬達,需搭配7-12Vdc電源供應器。 22 | ![Image](https://http2.mlstatic.com/D_613161-MLA47599398871_092021-C.jpg) 23 | 24 | ## 安裝 25 | 26 | 1. **在VS Code安裝 ESP-IDF**: 27 | 請按照 ESP-IDF Extension for VS Code Overview安裝 ESP-IDF 開發環境:[link](https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension) 28 | 29 | 2. **取得專案程式碼**: 30 | ```bash 31 | git clone https://github.com/whiteSHADOW1234/PetCam.git 32 | cd esp_idf_esp32s3 33 | ``` 34 | 35 | 3. **設定 Wi-Fi 資訊**: 36 | 有兩種方法可以設定 Wi-Fi 資訊: 37 | 1. 新增 `main/wifi_config.h` 檔案,將 `EXAMPLE_ESP_WIFI_SSID` 和 `EXAMPLE_ESP_WIFI_PASS` 設定為你的 Wi-Fi SSID 和密碼: 38 | 39 | ```cpp 40 | #ifndef WIFI_CONFIG_H 41 | #define WIFI_CONFIG_H 42 | 43 | #define EXAMPLE_ESP_WIFI_SSID "你的 Wi-Fi SSID" 44 | #define EXAMPLE_ESP_WIFI_PASS "你的 Wi-Fi 密碼" 45 | 46 | #endif 47 | ``` 48 | 2. 在 `main/wifi.cpp` 註解或刪除`#include "wifi_config.h"`,並將 `EXAMPLE_ESP_WIFI_SSID` 和 `EXAMPLE_ESP_WIFI_PASS` 設定為你的 Wi-Fi SSID 和密碼。 49 | 50 | 51 | ## 使用方法 52 | 53 | 1. **設定Espressif Device Target**: 54 | 55 | 在 VS Code 中,按下 `Ctrl+Shift+P`,輸入 `ESP-IDF: Set Espressif Device Target`,選擇 `esp32s3`,並選擇第一個`ESP32-S3 chip (via builtin USB-JTAG)`。 56 | 57 | 2. **設定序列埠**: 58 | 59 | 在 VS Code 中,按下 `Ctrl+Shift+P`,輸入 `ESP-IDF: Select Port to Use (COM, tty, usbserial)`, 60 | 設定為 ESP32S3 開發板的序列埠。 61 | 62 | 3. **編譯、燒錄和監控**: 63 | 64 | 在 VS Code 中,按下 `Ctrl+Shift+P`,輸入 `ESP-IDF: Build, Flash and Start a Monitor on your Device`。 65 | 4. **連接到 Wi-Fi**: 66 | Server-View 的程式會自動和 ESP32S3 連線,按下`左/右轉`按鈕,遠端的步進馬達將會旋轉。 67 | ## 接線 68 | 69 | **28BYJ-48 步進馬達 (使用 ULN2003 驅動):** 70 | 71 | 馬達接上ULN2003驅動器不用特意接線,ULN2003驅動器接上ESP32S3開發板時參照下表。 72 | 73 | | 28BYJ-48 | ULN2003 | ESP32S3/電源模組 | 74 | | -------- | ------- | ---------------- | 75 | | 紅色 | + | 5V(電源模組) | 76 | | 橙色 | IN1 | GPIO15 | 77 | | 黃色 | IN2 | GPIO16 | 78 | | 粉色 | IN3 | GPIO17 | 79 | | 藍色 | IN4 | GPIO18 | 80 | | 黑色 | - | GND(電源模組) | 81 | 82 | **搖桿模組:** 83 | 84 | | 搖桿模組 | ESP32S3 | 85 | | -------- | -------------- | 86 | | VCC | 3.3V | 87 | | GND | GND | 88 | | VRx | GPIO1 (ADC1_0) | 89 | | VRy | GPIO2 (ADC1_1) | 90 | | SW | GPIO4 | 91 | 92 | > [!IMPORTANT] 93 | > 94 | > * ESP32S3 開發板的 GPIO 編號可能因板而異,請參考你的開發板的引腳圖。 95 | > * 搖桿模組的 VRx 和 VRy 連接到支援 ADC 的 GPIO。 96 | 97 | ## 照片 98 | ![Wiring Diagram](https://imgur.com/8PnjpOG.jpg) 99 | ![Hardware Setup](https://imgur.com/C6VxlT2.jpg) 100 | 101 | ## test 資料夾使用方法 102 | 把 `test` 資料夾中的 `*.cpp` 內容複製到 `main.cpp` 檔案中並且編譯執行。 103 | * `joystick_motor.cpp`: 使用搖桿控制步進馬達旋轉方向。 104 | 105 | ## 除錯 106 | 107 | * 如果缺少.h檔案,請確保在`main/CMakeLists.txt`中`REQUIRES`包含了需要的東西。 108 | 109 | -------------------------------------------------------------------------------- /client/server-view/script.js: -------------------------------------------------------------------------------- 1 | const serverAddress = window.location.hostname; 2 | const serverPort = window.location.port; 3 | 4 | // Construct the WebSocket URL (use wss for HTTPS) 5 | const ws = new WebSocket(`wss://${serverAddress}:${serverPort}`); 6 | const remoteVideo = document.getElementById('remoteVideo'); 7 | let peerConnection; 8 | let audioStream; 9 | 10 | const config = { 11 | iceServers: [ 12 | { urls: 'stun:stun.l.google.com:19302' }, 13 | { urls: 'stun:stun1.l.google.com:19302' }, 14 | { urls: 'stun:stun2.l.google.com:19302' }, 15 | { urls: 'stun:stun3.l.google.com:19302' }, 16 | { urls: 'stun:stun4.l.google.com:19302' }, 17 | ] 18 | }; 19 | 20 | function createPeerConnection() { 21 | console.log("Creating RTCPeerConnection"); 22 | try { 23 | peerConnection = new RTCPeerConnection(config); 24 | 25 | // Handle incoming tracks 26 | peerConnection.ontrack = event => { 27 | console.log("Got track", event); 28 | if (event.streams && event.streams[0]) { 29 | console.log("Setting remote stream"); 30 | if (event.track.kind === 'video') { 31 | remoteVideo.srcObject = event.streams[0]; 32 | } 33 | } else { 34 | console.log("Adding track to new MediaStream"); 35 | const inboundStream = new MediaStream([event.track]); 36 | if (event.track.kind === 'video') { 37 | remoteVideo.srcObject = inboundStream; 38 | } 39 | } 40 | }; 41 | 42 | // Handle ICE candidates 43 | peerConnection.onicecandidate = event => { 44 | console.log("ICE candidate:", event.candidate); 45 | if (event.candidate) { 46 | ws.send(JSON.stringify({ type: 'ice_candidate', candidate: event.candidate })); 47 | } 48 | }; 49 | 50 | // Handle connection state changes 51 | peerConnection.onconnectionstatechange = event => { 52 | console.log("Connection state change:", peerConnection.connectionState); 53 | }; 54 | 55 | // Handle ICE gathering state changes 56 | peerConnection.onicegatheringstatechange = event => { 57 | console.log("ICE gathering state change:", peerConnection.iceGatheringState); 58 | }; 59 | 60 | console.log("RTCPeerConnection created successfully"); 61 | } catch (error) { 62 | console.error("Error creating RTCPeerConnection:", error); 63 | } 64 | } 65 | 66 | async function enableAudio() { 67 | try { 68 | console.log("Enabling audio stream"); 69 | audioStream = await navigator.mediaDevices.getUserMedia({ audio: true }); 70 | 71 | // Add audio track to peer connection 72 | audioStream.getTracks().forEach(track => { 73 | console.log("Adding audio track:", track); 74 | peerConnection.addTrack(track, audioStream); 75 | }); 76 | 77 | // Renegotiate the connection 78 | console.log("Renegotiating connection"); 79 | const offer = await peerConnection.createOffer(); 80 | await peerConnection.setLocalDescription(offer); 81 | ws.send(JSON.stringify({ type: 'offer', offer: peerConnection.localDescription })); 82 | 83 | console.log("Audio stream enabled"); 84 | } catch (error) { 85 | console.error('Error accessing microphone:', error); 86 | } 87 | } 88 | 89 | ws.onopen = () => { 90 | console.log('WebSocket connected'); 91 | // Register as a server-view client 92 | ws.send(JSON.stringify({ type: 'register', role: 'server-view' })); 93 | createPeerConnection(); 94 | }; 95 | 96 | ws.onmessage = (event) => { 97 | const data = JSON.parse(event.data); 98 | console.log("Received message:", data); 99 | 100 | if (data.type === 'offer') { 101 | console.log("Got offer"); 102 | peerConnection.setRemoteDescription(new RTCSessionDescription(data.offer)) 103 | .then(() => { 104 | console.log("Creating answer"); 105 | return peerConnection.createAnswer(); 106 | }) 107 | .then(answer => { 108 | console.log("Setting local description"); 109 | return peerConnection.setLocalDescription(answer); 110 | }) 111 | .then(() => { 112 | console.log("Sending answer"); 113 | ws.send(JSON.stringify({ type: 'answer', answer: peerConnection.localDescription })); 114 | }) 115 | .catch(error => { 116 | console.error("Error handling offer:", error); 117 | }); 118 | } else if (data.type === 'ice_candidate') { 119 | if (peerConnection) { 120 | console.log("Adding ICE candidate"); 121 | peerConnection.addIceCandidate(new RTCIceCandidate(data.candidate)) 122 | .catch(error => { 123 | console.error("Error adding ICE candidate:", error); 124 | }); 125 | } 126 | } 127 | }; 128 | 129 | ws.onerror = (error) => { 130 | console.error('WebSocket error:', error); 131 | }; -------------------------------------------------------------------------------- /server/templates/server-view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Server View 6 | 79 | 80 | 81 | 82 |
83 |

Pet Cam View

84 |
85 | 86 |
87 |
88 |
89 | 90 | 91 |
92 |
93 | 94 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | enkaihuang2021@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /client/open-cam/script.js: -------------------------------------------------------------------------------- 1 | const serverAddress = window.location.hostname; 2 | const serverPort = window.location.port; 3 | 4 | // Construct the WebSocket URL (use wss for HTTPS) 5 | const ws = new WebSocket(`wss://${serverAddress}:${serverPort}`); 6 | const videoElement = document.getElementById('localVideo'); 7 | const canvasElement = document.getElementById('hiddenCanvas'); 8 | const canvasCtx = canvasElement.getContext('2d'); 9 | const remoteAudio = document.getElementById('remoteAudio'); // Get the audio element 10 | let localStream; 11 | let peerConnection; 12 | 13 | const config = { 14 | iceServers: [ 15 | { urls: 'stun:stun.l.google.com:19302' }, 16 | { urls: 'stun:stun1.l.google.com:19302' }, 17 | { urls: 'stun:stun2.l.google.com:19302' }, 18 | { urls: 'stun:stun3.l.google.com:19302' }, 19 | { urls: 'stun:stun4.l.google.com:19302' }, 20 | ] 21 | }; 22 | 23 | async function startCamera() { 24 | try { 25 | const devices = await navigator.mediaDevices.enumerateDevices(); 26 | console.log("Available devices:", devices); 27 | 28 | const videoDevices = devices.filter(device => device.kind === 'videoinput'); 29 | 30 | if (videoDevices.length > 0) { 31 | const selectedDeviceId = videoDevices[0].deviceId; 32 | 33 | localStream = await navigator.mediaDevices.getUserMedia({ 34 | video: { deviceId: selectedDeviceId }, 35 | audio: true 36 | }); 37 | 38 | videoElement.srcObject = localStream; 39 | videoElement.muted = true; // Mute the local video element 40 | canvasElement.width = videoElement.videoWidth; 41 | canvasElement.height = videoElement.videoHeight; 42 | drawFlippedVideoToCanvas(); 43 | 44 | } else { 45 | console.error('No video input devices found.'); 46 | } 47 | } catch (error) { 48 | console.error('Error accessing media devices.', error); 49 | } 50 | } 51 | 52 | function createPeerConnection() { 53 | console.log("Creating RTCPeerConnection with config:", config); 54 | try { 55 | peerConnection = new RTCPeerConnection(config); 56 | 57 | // Add local stream's tracks to peer connection 58 | localStream.getTracks().forEach(track => { 59 | console.log("Adding track to peer connection:", track); 60 | peerConnection.addTrack(track, localStream); 61 | }); 62 | 63 | peerConnection.ontrack = event => { 64 | console.log("Got track", event); 65 | if (event.streams && event.streams[0]) { 66 | console.log("Setting remote stream"); 67 | if (event.track.kind === 'audio') { 68 | console.log("Setting remote audio stream"); 69 | remoteAudio.srcObject = event.streams[0]; 70 | } 71 | } else { 72 | console.log("Adding track to new MediaStream"); 73 | const inboundStream = new MediaStream([event.track]); 74 | if (event.track.kind === 'audio') { 75 | console.log("Setting remote audio stream"); 76 | remoteAudio.srcObject = inboundStream; 77 | } 78 | } 79 | }; 80 | 81 | peerConnection.onicecandidate = event => { 82 | console.log("ICE candidate:", event.candidate); 83 | if (event.candidate) { 84 | ws.send(JSON.stringify({ type: 'ice_candidate', candidate: event.candidate })); 85 | } 86 | }; 87 | 88 | peerConnection.onnegotiationneeded = async () => { 89 | console.log("Negotiation needed"); 90 | try { 91 | console.log("Creating offer"); 92 | const offer = await peerConnection.createOffer(); 93 | console.log("Setting local description"); 94 | await peerConnection.setLocalDescription(offer); 95 | console.log("Sending offer"); 96 | ws.send(JSON.stringify({ type: 'offer', offer: peerConnection.localDescription })); 97 | } catch (error) { 98 | console.error("Error creating offer:", error); 99 | } 100 | }; 101 | 102 | console.log("RTCPeerConnection created successfully"); 103 | } catch (error) { 104 | console.error("Failed to create RTCPeerConnection:", error); 105 | return; 106 | } 107 | } 108 | 109 | function drawFlippedVideoToCanvas() { 110 | canvasCtx.translate(canvasElement.width, 0); 111 | canvasCtx.scale(-1, 1); 112 | canvasCtx.drawImage(videoElement, 0, 0, canvasElement.width, canvasElement.height); 113 | requestAnimationFrame(drawFlippedVideoToCanvas); 114 | } 115 | 116 | ws.onopen = () => { 117 | console.log('WebSocket connected'); 118 | ws.send(JSON.stringify({ type: 'register', role: 'open-cam' })); 119 | startCamera(); 120 | // Create peer connection after starting camera and registering 121 | setTimeout(createPeerConnection, 1000); 122 | }; 123 | 124 | ws.onmessage = (event) => { 125 | const data = JSON.parse(event.data); 126 | console.log("Received message:", data); 127 | 128 | if (data.type === 'answer') { 129 | console.log("Got answer"); 130 | peerConnection.setRemoteDescription(new RTCSessionDescription(data.answer)) 131 | .catch(error => console.error("Error setting remote description:", error)); 132 | } else if (data.type === 'ice_candidate') { 133 | if (peerConnection) { 134 | console.log("Adding ICE candidate"); 135 | peerConnection.addIceCandidate(new RTCIceCandidate(data.candidate)) 136 | .catch(error => console.error("Error adding ICE candidate:", error)); 137 | } 138 | } 139 | }; 140 | 141 | ws.onerror = (error) => { 142 | console.error('WebSocket error:', error); 143 | }; -------------------------------------------------------------------------------- /esp_idf_esp32s3/main/wifi.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "freertos/FreeRTOS.h" 3 | #include "freertos/task.h" 4 | #include "freertos/event_groups.h" 5 | #include "esp_system.h" 6 | #include "esp_wifi.h" 7 | #include "esp_event.h" 8 | #include "esp_log.h" 9 | #include "nvs_flash.h" 10 | 11 | #include "lwip/err.h" 12 | #include "lwip/sys.h" 13 | 14 | #include "http.h" 15 | 16 | // 如果不打算在 main/wifi_config.h 中而是在這裡設定 Wi-Fi SSID 和密碼,請註解掉下面這行。 17 | #include "wifi_config.h" 18 | 19 | // 請根據實際情況修改 Wi-Fi SSID 和密碼 20 | #ifndef WIFI_CONFIG_H 21 | #define WIFI_CONFIG_H 22 | 23 | #define EXAMPLE_ESP_WIFI_SSID "YOUR_WIFI_SSID" // 你的 Wi-Fi 名稱 24 | #define EXAMPLE_ESP_WIFI_PASS "YOUR_WIFI_PASSWORD" // 你的 Wi-Fi 密碼 25 | 26 | #endif 27 | #define EXAMPLE_ESP_MAXIMUM_RETRY 10 28 | 29 | // --- 靜態 IP 設定 --- 30 | #define EXAMPLE_ESP_WIFI_IP_ADDR ESP_IP4TOADDR(192, 168, 31, 168) // 靜態 IP 位址 31 | #define EXAMPLE_ESP_WIFI_GW_ADDR ESP_IP4TOADDR(192, 168, 31, 1) // 閘道器 IP 位址 32 | #define EXAMPLE_ESP_WIFI_NETMASK ESP_IP4TOADDR(255, 255, 255, 0) // 子網路遮罩 33 | // ------------------------ 34 | 35 | /* FreeRTOS event group to signal when we are connected*/ 36 | static EventGroupHandle_t s_wifi_event_group; 37 | 38 | /* The event group allows multiple bits for each event, but we only care about two events: 39 | * - we are connected to the AP with an IP 40 | * - we failed to connect after the maximum amount of retries */ 41 | #define WIFI_CONNECTED_BIT BIT0 42 | #define WIFI_FAIL_BIT BIT1 43 | 44 | static const char *TAG = "wifi station"; 45 | 46 | static int s_retry_num = 0; 47 | 48 | static void event_handler(void* arg, esp_event_base_t event_base, 49 | int32_t event_id, void* event_data) 50 | { 51 | if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { 52 | esp_wifi_connect(); 53 | } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { 54 | if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) { 55 | esp_wifi_connect(); 56 | s_retry_num++; 57 | ESP_LOGI(TAG, "retry to connect to the AP"); 58 | } else { 59 | xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); 60 | } 61 | ESP_LOGI(TAG,"connect to the AP fail"); 62 | } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { 63 | ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; 64 | ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip)); 65 | s_retry_num = 0; 66 | xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); 67 | } 68 | } 69 | 70 | // 宣告 start_webserver 函數 71 | httpd_handle_t start_webserver(void); 72 | 73 | void wifi_init_sta() 74 | { 75 | // Initialize NVS 76 | esp_err_t ret = nvs_flash_init(); 77 | if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { 78 | ESP_ERROR_CHECK(nvs_flash_erase()); 79 | ret = nvs_flash_init(); 80 | } 81 | ESP_ERROR_CHECK(ret); 82 | 83 | s_wifi_event_group = xEventGroupCreate(); 84 | 85 | ESP_ERROR_CHECK(esp_netif_init()); 86 | 87 | ESP_ERROR_CHECK(esp_event_loop_create_default()); 88 | // --- 原本的預設 Wi-Fi station 建立方式 --- 89 | // esp_netif_create_default_wifi_sta(); 90 | 91 | // --- 靜態 IP 設定 --- 92 | esp_netif_t *esp_netif = esp_netif_create_default_wifi_sta(); // 建立預設的 Wi-Fi station 網路介面 93 | 94 | // 設定靜態 IP 位址 95 | esp_netif_ip_info_t ip_info; 96 | ip_info.ip.addr = EXAMPLE_ESP_WIFI_IP_ADDR; 97 | ip_info.gw.addr = EXAMPLE_ESP_WIFI_GW_ADDR; 98 | ip_info.netmask.addr = EXAMPLE_ESP_WIFI_NETMASK; 99 | esp_netif_dhcpc_stop(esp_netif); // 停止 DHCP 客戶端 100 | esp_netif_set_ip_info(esp_netif, &ip_info); // 設定靜態 IP 101 | 102 | wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); 103 | ESP_ERROR_CHECK(esp_wifi_init(&cfg)); 104 | 105 | esp_event_handler_instance_t instance_any_id; 106 | esp_event_handler_instance_t instance_got_ip; 107 | ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, 108 | ESP_EVENT_ANY_ID, 109 | &event_handler, 110 | NULL, 111 | &instance_any_id)); 112 | ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, 113 | IP_EVENT_STA_GOT_IP, 114 | &event_handler, 115 | NULL, 116 | &instance_got_ip)); 117 | 118 | wifi_config_t wifi_config = { 119 | .sta = { 120 | .ssid = EXAMPLE_ESP_WIFI_SSID, 121 | .password = EXAMPLE_ESP_WIFI_PASS, 122 | /* Setting a password implies station will connect to all security modes including WEP/WPA. 123 | * However these modes are deprecated and not advisable to be used. Incase your Access point 124 | * doesn't support WPA2, these mode can be enabled by commenting below line */ 125 | .threshold{.authmode = WIFI_AUTH_WPA2_PSK}, 126 | 127 | .pmf_cfg = { 128 | .capable = true, 129 | .required = false 130 | }, 131 | }, 132 | }; 133 | ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); 134 | ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); 135 | ESP_ERROR_CHECK(esp_wifi_start() ); 136 | 137 | ESP_LOGI(TAG, "wifi_init_sta finished."); 138 | 139 | /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum 140 | * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ 141 | EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group, 142 | WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, 143 | pdFALSE, 144 | pdFALSE, 145 | portMAX_DELAY); 146 | 147 | /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually 148 | * happened. */ 149 | if (bits & WIFI_CONNECTED_BIT) { 150 | ESP_LOGI(TAG, "connected to ap SSID:%s password:%s", 151 | EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS); 152 | 153 | // 啟動 HTTP 伺服器 154 | httpd_handle_t server = start_webserver(); 155 | } else if (bits & WIFI_FAIL_BIT) { 156 | ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s", 157 | EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS); 158 | } else { 159 | ESP_LOGE(TAG, "UNEXPECTED EVENT"); 160 | } 161 | } -------------------------------------------------------------------------------- /server/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const https = require('https'); 3 | const WebSocket = require('ws'); 4 | const path = require('path'); 5 | const ip = require('ip'); 6 | const os = require('os'); 7 | const fs = require('fs'); 8 | const axios = require('axios'); 9 | 10 | const app = express(); 11 | 12 | // --- HTTPS Setup --- 13 | const options = { 14 | key: fs.readFileSync(path.join(__dirname, 'key.pem')), 15 | cert: fs.readFileSync(path.join(__dirname, 'cert.pem')) 16 | }; 17 | const server = https.createServer(options, app); 18 | const wss = new WebSocket.Server({ server }); 19 | 20 | // --- Client Tracking --- 21 | let openCamClient = null; 22 | let serverViewClients = []; // Array to store connected server-view clients 23 | 24 | // --- WebSocket Connection Handling --- 25 | wss.on('connection', (ws, req) => { 26 | const clientIp = req.socket.remoteAddress; 27 | console.log(`Client connected from IP: ${clientIp}`); 28 | 29 | ws.on('message', (message) => { 30 | const data = JSON.parse(message); 31 | console.log(`Received message from ${clientIp}:`, data); 32 | 33 | if (data.type === 'register') { 34 | if (data.role === 'open-cam') { 35 | openCamClient = ws; 36 | console.log(`Registered open-cam client from IP: ${clientIp}`); 37 | } else if (data.role === 'server-view') { 38 | serverViewClients.push(ws); 39 | console.log(`Registered server-view client from IP: ${clientIp}`); 40 | } 41 | } else if (data.type === 'offer' && openCamClient === ws) { 42 | // Relay offer to the server-view clients 43 | console.log('Relaying offer to server-view clients'); 44 | serverViewClients.forEach(client => { 45 | if (client.readyState === WebSocket.OPEN) { 46 | client.send(JSON.stringify(data)); 47 | } 48 | }); 49 | } else if (data.type === 'answer' && serverViewClients.includes(ws)) { 50 | // Relay answer to open-cam client 51 | console.log('Relaying answer to open-cam client'); 52 | if (openCamClient && openCamClient.readyState === WebSocket.OPEN) { 53 | openCamClient.send(JSON.stringify(data)); 54 | } 55 | } else if (data.type === 'ice_candidate') { 56 | // Relay ICE candidates to the appropriate client (either open-cam or server-view) 57 | if (openCamClient === ws) { 58 | console.log('Relaying ICE candidate to server-view clients'); 59 | serverViewClients.forEach(client => { 60 | if (client.readyState === WebSocket.OPEN) { 61 | client.send(JSON.stringify(data)); 62 | } 63 | }); 64 | } else if (serverViewClients.includes(ws)) { 65 | console.log('Relaying ICE candidate to open-cam client'); 66 | if (openCamClient && openCamClient.readyState === WebSocket.OPEN) { 67 | openCamClient.send(JSON.stringify(data)); 68 | } 69 | } 70 | } 71 | }); 72 | 73 | ws.on('close', () => { 74 | console.log(`Client disconnected: ${clientIp}`); 75 | if (ws === openCamClient) { 76 | openCamClient = null; 77 | } 78 | serverViewClients = serverViewClients.filter(client => client !== ws); 79 | }); 80 | }); 81 | 82 | // --- Serve Static Files --- 83 | app.use('/client', express.static(path.join(__dirname, '../client'))); 84 | 85 | // --- Route Handlers --- 86 | app.get('/', (req, res) => { 87 | res.sendFile(path.join(__dirname, 'templates', 'index.html')); // Serve the landing page 88 | }); 89 | 90 | app.get('/client/open-cam', (req, res) => { 91 | res.sendFile(path.join(__dirname, '../client/open-cam/index.html')); 92 | }); 93 | 94 | app.get('/server-view', (req, res) => { 95 | res.sendFile(path.join(__dirname, 'templates', 'server-view.html')); // Serve the server view page 96 | }); 97 | 98 | // --- Function to Get All Accessible IP Addresses --- 99 | function getNetworkInterfaces() { 100 | const interfaces = os.networkInterfaces(); 101 | const ipAddresses = []; 102 | 103 | for (const interfaceName in interfaces) { 104 | const iface = interfaces[interfaceName]; 105 | for (const alias of iface) { 106 | if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) { 107 | ipAddresses.push({ 108 | name: interfaceName, 109 | address: alias.address 110 | }); 111 | } 112 | } 113 | } 114 | 115 | return ipAddresses; 116 | } 117 | 118 | // --- Control Motor via ESP32 --- 119 | app.post('/control-motor', (req, res) => { 120 | const esp32Ip = req.query.ip; 121 | const direction = req.query.direction; // 取得 direction 參數 122 | 123 | let message = ''; 124 | if (direction === 'clockwise') { 125 | message = 'clockwise'; 126 | } else if (direction === 'counterclockwise') { 127 | message = 'counterclockwise'; 128 | } else { 129 | res.status(400).send('Invalid direction'); 130 | return; 131 | } 132 | 133 | axios.post(`http://${esp32Ip}/message`, message) 134 | .then(response => { 135 | console.log('Motor control command sent to ESP32', response.data); 136 | res.send('Motor control command sent to ESP32'); 137 | }) 138 | .catch(error => { 139 | console.error('Error sending command to ESP32', error); 140 | res.status(500).send('Error sending command to ESP32'); 141 | }); 142 | }); 143 | 144 | // 新增的 /test 路由,用於測試與 ESP32 的連線 145 | app.get('/test', (req, res) => { 146 | const esp32Ip = req.query.ip; 147 | if (!esp32Ip) { 148 | return res.status(400).send('ESP32 IP is required'); 149 | } 150 | 151 | axios.get(`http://${esp32Ip}/test`) 152 | .then(response => { 153 | console.log('ESP32 test successful:', response.data); 154 | res.send(response.data); // 將 ESP32 的回應傳回給客戶端 155 | }) 156 | .catch(error => { 157 | console.error('ESP32 test failed:', error); 158 | res.status(500).send('ESP32 test failed'); 159 | }); 160 | }); 161 | 162 | // --- Start the Server --- 163 | const PORT = process.env.PORT || 5000; 164 | const HOST = '0.0.0.0'; 165 | 166 | server.listen(PORT, HOST, () => { 167 | const ipAddresses = getNetworkInterfaces(); 168 | 169 | ipAddresses.forEach(interface => { 170 | if (interface.name === 'Wi-Fi') { 171 | console.log(`- Open Cam: https://${interface.address}:${PORT}/client/open-cam`); 172 | } else if (interface.name === 'Ethernet') { 173 | console.log(`- Server View: https://${interface.address}:${PORT}/server-view`); 174 | } 175 | }); 176 | 177 | }); -------------------------------------------------------------------------------- /esp_idf_esp32s3/README_hardware.md: -------------------------------------------------------------------------------- 1 | ## ESP32-S3 Firmware (esp_idf_esp32s3) 2 | 3 | This section describes the firmware for the ESP32-S3, which handles motor control based on joystick input and provides a web interface for remote operation. 4 | 5 | ### Code Structure (`esp_idf_esp32s3/main`) 6 | 7 | * **`http.cpp/http.h`:** Implements the HTTP server logic for receiving control commands. 8 | * **`joystick.cpp/joystick.h`:** Handles reading and interpreting input from the joystick module. 9 | * **`main.cpp`:** Main program entry point. Initializes Wi-Fi, sets up the HTTP server, and coordinates motor control based on joystick input. 10 | * **`ULN2003.cpp/ULN2003.h`:** Provides functions to control the 28BYJ-48 stepper motor via the ULN2003 driver board. 11 | * **`wifi.cpp/wifi.h`:** Manages the Wi-Fi connection to your local network. 12 | * **`wifi_config.h`:** Contains Wi-Fi SSID and password. **You need to modify this file with your network credentials.** 13 | 14 | ### Hardware Setup 15 | 16 | * **ESP32-S3 Development Board:** 17 | * Model: **Goouuu ESP32-S3 N16R8** (16MB flash/8MB PSRAM, dual Type-C USB, W2812 RGB). 18 | * This board controls the stepper motor and handles HTTP requests for remote control. 19 | ![Image Source](https://www.taiwansensor.com.tw/wp-content/uploads/2023/12/O1CN01Zmz8W21kAXm0aySdE_672934643.jpg) 20 | * **28BYJ-48 Stepper Motor with ULN2003 Driver Board:** 21 | * Used for panning the camera. 22 | ![Image Source](https://m.media-amazon.com/images/I/61Ml9ebd2kL._AC_UF894,1000_QL80_.jpg) 23 | * **Joystick Module:** 24 | * Provides analog input for controlling the stepper motor's rotation. 25 | ![Image Source](https://down-br.img.susercontent.com/file/bcf905ecd9ff177fde7f4fbcafc9c400) 26 | * **Power Supply Module:** 27 | * Provides a dedicated power supply for the stepper motor (requires a 7-12V DC power adapter). 28 | ![Image Source](https://http2.mlstatic.com/D_613161-MLA47599398871_092021-C.jpg) 29 | 30 | ### Installation 31 | 32 | 1. **Install the ESP-IDF Extension in VS Code:** 33 | * Follow the instructions in the "ESP-IDF Extension for VS Code Overview" to set up the ESP-IDF development environment: [link](https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension) 34 | 35 | 2. **Obtain the Project Code:** 36 | ```bash 37 | git clone https://github.com/whiteSHADOW1234/PetCam.git 38 | cd esp_idf_esp32s3 39 | ``` 40 | 41 | 3. **Configure Wi-Fi Credentials:** 42 | 43 | You have two options for configuring the Wi-Fi credentials: 44 | 45 | * **Option 1: Create `main/wifi_config.h`:** 46 | 1. Create a new file named `wifi_config.h` inside the `esp_idf_esp32s3/main` directory. 47 | 2. Add the following content to `wifi_config.h`, replacing `"YOUR_WIFI_SSID"` and `"YOUR_WIFI_PASSWORD"` with your actual Wi-Fi SSID and password: 48 | 49 | ```c 50 | #ifndef WIFI_CONFIG_H 51 | #define WIFI_CONFIG_H 52 | 53 | #define EXAMPLE_ESP_WIFI_SSID "YOUR_WIFI_SSID" 54 | #define EXAMPLE_ESP_WIFI_PASS "YOUR_WIFI_PASSWORD" 55 | 56 | #endif 57 | ``` 58 | 59 | * **Option 2: Modify `main/wifi.cpp`:** 60 | 1. Directly edit the `esp_idf_esp32s3/main/wifi.cpp` file. 61 | 2. Comment out or delete the line: `#include "wifi_config.h"`. 62 | 3. Modify the `EXAMPLE_ESP_WIFI_SSID` and `EXAMPLE_ESP_WIFI_PASS` definitions within `wifi.cpp` to your actual Wi-Fi credentials. 63 | 64 | ### Usage 65 | 66 | 1. **Set Espressif Device Target:** 67 | * In VS Code, press `Ctrl+Shift+P` (or `Cmd+Shift+P` on macOS). 68 | * Type `ESP-IDF: Set Espressif Device Target` and press Enter. 69 | * Select `esp32s3` and then choose the first option, `ESP32-S3 chip (via builtin USB-JTAG)`. 70 | 71 | 2. **Select Serial Port:** 72 | * In VS Code, press `Ctrl+Shift+P`. 73 | * Type `ESP-IDF: Select Port to Use (COM, tty, usbserial)` and press Enter. 74 | * Choose the serial port that corresponds to your ESP32-S3 development board. 75 | 76 | 3. **Build, Flash, and Monitor:** 77 | * In VS Code, press `Ctrl+Shift+P`. 78 | * Type `ESP-IDF: Build, Flash and Start a Monitor on your Device` and press Enter. 79 | * This will build the firmware, flash it to your ESP32-S3, and open the serial monitor to view the output. 80 | 81 | 4. **Connect to Wi-Fi:** 82 | * The ESP32-S3 will attempt to connect to the Wi-Fi network you configured. 83 | * The serial monitor will display the ESP32-S3's assigned IP address. 84 | * Use the `turn right`/`turn left` buttons in the `server-view` page to send control commands to the ESP32. 85 | 86 | ### Wiring 87 | 88 | **28BYJ-48 Stepper Motor (with ULN2003 Driver):** 89 | 90 | * Connect the motor to the ULN2003 driver board (no special wiring needed on this connection). 91 | * Connect the ULN2003 driver board to the ESP32-S3 and power module as shown below: 92 | 93 | | 28BYJ-48 Motor | ULN2003 Driver Board | ESP32-S3 / Power Module | 94 | | :------------ | :----------------- | :---------------------- | 95 | | Red | + | 5V (Power Module) | 96 | | Orange | IN1 | GPIO15 | 97 | | Yellow | IN2 | GPIO16 | 98 | | Pink | IN3 | GPIO17 | 99 | | Blue | IN4 | GPIO18 | 100 | | Black | - | GND (Power Module) | 101 | 102 | **Joystick Module:** 103 | 104 | | Joystick Module | ESP32-S3 | 105 | | :-------------- | :------------ | 106 | | VCC | 3.3V | 107 | | GND | GND | 108 | | VRx | GPIO1 (ADC1_0) | 109 | | VRy | GPIO2 (ADC1_1) | 110 | | SW | GPIO4 | 111 | 112 | 113 | > [!IMPORTANT] 114 | > 115 | > * The specific GPIO numbers used on the ESP32-S3 might vary depending on your development board. **Always consult your board's pinout diagram to confirm the correct pins.** 116 | > * The joystick module's VRx and VRy pins should be connected to GPIOs that support ADC (Analog-to-Digital Conversion). 117 | 118 | ### Photos 119 | ![Wiring Diagram](https://imgur.com/8PnjpOG.jpg) 120 | ![Hardware Setup](https://imgur.com/C6VxlT2.jpg) 121 | 122 | ### `test` Folder Usage 123 | 124 | The `esp_idf_esp32s3/test` folder contains example code for testing individual components: 125 | 126 | * **`joystick_motor.cpp`:** Demonstrates how to control the stepper motor using the joystick. 127 | 128 | **To use a test file:** 129 | 130 | 1. Copy the contents of the desired `.cpp` file (e.g., `joystick_motor.cpp`) from the `test` folder. 131 | 2. Paste the contents into `esp_idf_esp32s3/main/main.cpp`, replacing the existing code. 132 | 3. Build, flash, and monitor the ESP32-S3 using the ESP-IDF extension in VS Code. 133 | 134 | ### Troubleshooting 135 | 136 | * **Missing `.h` files:** If you encounter errors about missing header files (e.g., `.h` files), make sure that the `REQUIRES` section in your `main/CMakeLists.txt` file includes all the necessary components. You might need to add components like `driver`, `esp_http_server`, etc., depending on the code you are using. 137 | 138 | ```cmake 139 | REQUIRES driver esp_http_server ... 140 | ``` 141 | -------------------------------------------------------------------------------- /README_zh_tw.md: -------------------------------------------------------------------------------- 1 | # PetCam:基於 WebRTC 技術的即時寵物攝影機 2 |

3 | English README | 4 | ESP32-S3 Firmware Guide | 5 | ESP32-S3 設定指南 6 |

7 | 此專案實作了一個即時寵物攝影機應用程式,具有以下功能: 8 | 9 | * **Webcam 串流:** 使用 WebRTC 技術,從指定的裝置(例如筆記型電腦或智慧型手機)擷取並串流即時影像。 10 | * **遠端觀看:** 允許您透過區域網路上的任何裝置,使用網頁瀏覽器觀看即時影像串流。 11 | * **遠端平移控制:** 可遠端控制一個平移 (pan) 機制(使用 ESP32-S3、步進馬達和搖桿),以改變攝影機的視角。 12 | * **與寵物對話:** 觀看者可以透過 `server-view` 網頁將聲音傳送到 `open-cam` 裝置,實現與寵物的互動。 13 | * **HTTPS:** 使用 HTTPS 進行安全通訊。 14 | * **閒置智慧型手機再利用:** 此專案提供了一種實用的方法來重新利用許多家庭中閒置的智慧型手機,將其轉變為遠端網路攝影機,從而減少電子垃圾並提供額外價值。 15 | 16 | ## 專案結構 17 | 18 | ``` 19 | pet-camera-project/ 20 | ├── client/ # 客戶端程式碼 (網頁應用程式) 21 | │ └── open-cam/ # 用於架設攝影機的網頁應用程式 22 | │ ├── index.html # open-cam 頁面 HTML 23 | │ ├── script.js # 處理攝影機存取、WebRTC 和串流的 JavaScript 24 | │ └── style.css # open-cam 頁面樣式 25 | │ └── server-view/ 26 | │ └── script.js # 處理 WebRTC 接收邏輯和馬達控制的 JavaScript 27 | ├── esp_idf_esp32s3/ # ESP32-S3 韌體 (馬達控制) 28 | │ ├── .devcontainer/ # 開發容器設定 (用於開發) 29 | │ ├── test/ # 個別元件的測試檔案 30 | │ └── main/ # ESP32-S3 的主要原始碼 31 | │ ├── CMakeLists.txt # CMake 建置設定 32 | │ ├── http.cpp/http.h # HTTP 伺服器邏輯 33 | │ ├── joystick.cpp/joystick.h # 搖桿輸入處理 34 | │ ├── main.cpp # 主要程式進入點 35 | │ ├── wifi.cpp/wifi.h # Wi-Fi 連線管理 36 | │ ├── wifi_config.h # Wi-Fi 認證 (請設定此項!) 37 | │ └── ULN2003.cpp/ULN2003.h # 28BYJ-48 步進馬達控制 38 | └── server/ # 伺服器端程式碼 (Node.js) 39 | ├── server.js # 帶有 WebRTC 訊號的 Node.js 伺服器 40 | ├── key.pem # SSL 私鑰 (用於測試的自簽章憑證) 41 | └── cert.pem # SSL 憑證 (用於測試的自簽章憑證) 42 | └── templates/ 43 | ├── index.html # 伺服器登陸頁面 44 | └── server-view.html # 觀看串流和控制攝影機的網頁 45 | ``` 46 | 47 | ## 硬體 48 | 49 | * **Webcam 裝置:** 具有內建或外接網路攝影機的筆記型電腦、電腦或**閒置的智慧型手機**。 50 | * **伺服器:** 一台電腦 (可以與 webcam 裝置相同,以便進行測試) 來執行 Node.js 伺服器。 51 | * **ESP32-S3 開發板:** 52 | * 型號:**Goouuu ESP32-S3 N16R8** (16MB flash/8MB PSRAM, 雙 Type-C USB, W2812 RGB)。 53 | * 用於控制步進馬達和處理馬達控制的 HTTP 請求。 54 | * ![圖片來源](https://www.taiwansensor.com.tw/wp-content/uploads/2023/12/O1CN01Zmz8W21kAXm0aySdE_672934643.jpg) 55 | * **28BYJ-48 步進馬達含 ULN2003 驅動板:** 56 | * 用於平移攝影機。 57 | * ![圖片來源](https://m.media-amazon.com/images/I/61Ml9ebd2kL._AC_UF894,1000_QL80_.jpg) 58 | * **搖桿模組:** 59 | * 用於控制步進馬達的方向。 60 | * ![圖片來源](https://down-br.img.susercontent.com/file/bcf905ecd9ff177fde7f4fbcafc9c400) 61 | * **電源模組:** 62 | * 步進馬達的專用電源 (需要 7-12V 直流電)。 63 | * ![圖片來源](https://http2.mlstatic.com/D_613161-MLA47599398871_092021-C.jpg) 64 | 65 | ## 軟體先決條件 66 | 67 | * **Node.js 和 npm:** 從 [link](https://nodejs.org/) 安裝 Node.js 和 npm。 68 | * **Python 3:** 確保已安裝 Python 3 (可在終端機中執行 `python --version` 或 `python3 --version` 進行確認)。 69 | * **OpenSSL:** 您將需要 OpenSSL 來產生自簽章憑證以用於 HTTPS。它通常預先安裝在 Linux 和 macOS 上。對於 Windows,它通常與 Git for Windows 一起安裝,或者您可以單獨安裝它。使用 `openssl version` 驗證安裝。 70 | * **VS Code 與 ESP-IDF 擴充套件:** 按照此處的說明安裝適用於 VS Code 的 ESP-IDF 擴充套件:[link](https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension) 71 | * **Git:** 安裝 Git 進行版本控制: [link](https://git-scm.com/) 72 | * **網頁瀏覽器:** 支援 WebRTC 的現代網頁瀏覽器 (例如 Brave, Firefox 或 Edge, **但不是 Chrome**). 73 | 74 | ## 安裝和設定 75 | 76 | **1. 取得專案:** 77 | 78 | ```bash 79 | git clone https://github.com/whiteSHADOW1234/PetCam.git 80 | cd PetCam 81 | ``` 82 | 83 | **2. 伺服器設定:** 84 | 85 | * **安裝 Node.js 依賴套件:** 86 | ```bash 87 | npm install # 在 PetCam 資料夾下執行此命令 88 | ``` 89 | 90 | * **產生自簽章憑證:** 91 | * 在 `server` 目錄中執行以下指令,**將 `192.168.1.10` 替換為您伺服器的實際 LAN IP 位址**: 92 | 93 | ```bash 94 | openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj "/C=US/ST=CA/L=San Francisco/O=MyOrg/CN=192.168.1.10" -addext "subjectAltName=IP:192.168.1.10,DNS:localhost,IP:127.0.0.1" -addext "extendedKeyUsage=serverAuth" 95 | ``` 96 | 97 | **3. ESP32-S3 設定 (馬達控制):** 98 | 99 | * **設定 Wi-Fi:** 100 | * **選項 1:`wifi_config.h`:** 101 | * 在 `esp_idf_esp32s3/main` 目錄中建立名為 `wifi_config.h` 的檔案。 102 | * 新增以下內容,將預留位置替換為您實際的 Wi-Fi 認證: 103 | 104 | ```c 105 | #ifndef WIFI_CONFIG_H 106 | #define WIFI_CONFIG_H 107 | 108 | #define EXAMPLE_ESP_WIFI_SSID "您的 Wi-Fi SSID" 109 | #define EXAMPLE_ESP_WIFI_PASS "您的 Wi-Fi 密碼" 110 | 111 | #endif 112 | ``` 113 | 114 | * **選項 2:修改 `wifi.cpp`:** 115 | * 直接編輯 `esp_idf_esp32s3/main/wifi.cpp` 檔案。 116 | * 註解掉或刪除 `#include "wifi_config.h"` 這一行。 117 | * 將 `wifi.cpp` 中的 `EXAMPLE_ESP_WIFI_SSID` 和 `EXAMPLE_ESP_WIFI_PASS` 常數設定為您的 Wi-Fi 認證。 118 | 119 | * **建置和燒錄韌體:** 120 | 1. **設定 Espressif 裝置目標:** 121 | * 在 VS Code 中,按下 `Ctrl+Shift+P` (或 macOS 上的 `Cmd+Shift+P`)。 122 | * 輸入 `ESP-IDF: Set Espressif Device Target` 並按下 Enter。 123 | * 選擇 `esp32s3` 並選擇第一個選項:`ESP32-S3 chip (via builtin USB-JTAG)`。 124 | 2. **設定序列埠:** 125 | * 按下 `Ctrl+Shift+P` (或 `Cmd+Shift+P`)。 126 | * 輸入 `ESP-IDF: Select Port to Use` 並按下 Enter。 127 | * 選擇與您的 ESP32-S3 開發板相對應的序列埠。 128 | 3. **建置、燒錄和監控:** 129 | * 按下 `Ctrl+Shift+P` (或 `Cmd+Shift+P`)。 130 | * 輸入 `ESP-IDF: Build, Flash and Start a Monitor on your Device` 並按下 Enter。 131 | * 這將建置韌體、將其燒錄到 ESP32-S3,並開啟序列埠監控器以檢視輸出。 132 | 133 | **4. 接線:** 134 | 135 | * **28BYJ-48 步進馬達 (使用 ULN2003 驅動器):** 136 | 137 | | 28BYJ-48 | ULN2003 | ESP32-S3/電源模組 | 138 | | -------- | ------- | ---------------------- | 139 | | 紅色 | + | 5V (電源模組) | 140 | | 橙色 | IN1 | GPIO15 | 141 | | 黃色 | IN2 | GPIO16 | 142 | | 粉色 | IN3 | GPIO17 | 143 | | 藍色 | IN4 | GPIO18 | 144 | | 黑色 | - | GND (電源模組) | 145 | 146 | * **搖桿模組:** 147 | 148 | | 搖桿模組 | ESP32-S3 | 149 | | -------- | -------- | 150 | | VCC | 3.3V | 151 | | GND | GND | 152 | | VRx | GPIO1 | 153 | | VRy | GPIO2 | 154 | | SW | GPIO4 | 155 | 156 | **注意:** 157 | 158 | * ESP32-S3 開發板的特定 GPIO 編號可能會有所不同。請參閱您開發板的引腳圖。 159 | * 確保搖桿的 VRx 和 VRy 引腳連接到支援 ADC (類比數位轉換器) 的 GPIO 引腳。 160 | 161 | ## 執行應用程式 162 | 163 | 1. **啟動伺服器:** 164 | 165 | ```bash 166 | node start # 在 PetCam 資料夾下執行此命令 167 | ``` 168 | 169 | 伺服器主控台將輸出可存取的 URL,包括 `open-cam` 和 `server-view` 的 LAN IP 位址。 170 | 171 | 2. **開啟 Open-Cam 網站 (Webcam 用戶端):** 172 | 173 | * 在配備網路攝影機的裝置 (筆記型電腦、電腦或智慧型手機) 上開啟網頁瀏覽器。 174 | * 前往 `https://:5000/client/open-cam`,將 `` 替換為伺服器主控台輸出中列出的其中一個 IP 位址。 175 | * 出現提示時,請授予網站存取您的攝影機和麥克風的權限。 176 | 177 | 3. **開啟 Server-View 網站:** 178 | 179 | * 在您區域網路上的任何裝置開啟另一個網頁瀏覽器。 180 | * 前往 `https://:5000/server-view`,將 `` 替換為伺服器的 LAN IP 位址。 181 | * 您應該會看到來自 `open-cam` 裝置的影像串流。 182 | 183 | 4. **控制馬達:** 184 | * 使用連接到 ESP32-S3 的搖桿來控制步進馬達的方向。 185 | * 點擊 `server-view` 頁面上的「Talk to Pet」按鈕,即可將音訊從觀看者傳輸到 `open-cam` 裝置。 186 | 187 | ## 疑難排解 188 | 189 | * **Open-Cam 上攝影機未啟動:** 190 | * 檢查瀏覽器和作業系統的攝影機和麥克風存取權限。 191 | * 確認 `client/open-cam/script.js` 中的 `serverAddress` 是否正確。 192 | * 查看瀏覽器的開發人員主控台 (F12) 中是否有錯誤。 193 | * 確保沒有其他應用程式正在使用攝影機。 194 | * 嘗試使用不同的瀏覽器或裝置。 195 | 196 | * **Server-View 上沒有影像:** 197 | * 檢查伺服器、`open-cam` 和 `server-view` 的主控台記錄檔中是否有錯誤。 198 | * 使用瀏覽器開發人員工具中的「網路」頁籤檢查 `open-cam` 和 `server-view` 之間是否正在交換 `offer`、`answer` 和 `ICE` 候選訊息 (WebRTC)。 199 | * 確認 `server-view` 上的 `RTCPeerConnection` 已建立,並且 `ontrack` 事件正在觸發。 200 | 201 | * **馬達沒有反應:** 202 | * 檢查 ESP32-S3、馬達驅動器和搖桿之間的接線。 203 | * 確認 ESP32-S3 已連接到您的 Wi-Fi 網路。 204 | * 使用 VS Code 中的序列埠監控器查看 ESP32-S3 是否正在接收指令。 205 | 206 | * **伺服器無法存取:** 207 | * 仔細檢查您伺服器的 LAN IP 位址。 208 | * 確保伺服器正在執行並監聽連接埠 5000。 209 | * 檢查您的防火牆設定 (允許連接埠 5000)。 210 | 211 | * **SSL 錯誤:** 212 | * 如果您看到 SSL 錯誤,這是因為您正在使用自簽章憑證。在開發期間,您需要在瀏覽器中新增一個臨時例外以繼續。**在生產環境中,請使用來自受信任憑證授權單位 (CA) 的有效憑證。** 213 | 214 | * **重新整理:** 如果您對程式碼進行了變更,請重新啟動伺服器並強制重新整理 (Ctrl+Shift+R 或 Cmd+Shift+R) 網頁瀏覽器中的網頁。 215 | 216 | ## `esp_idf_esp32s3/test` 資料夾用法 217 | 218 | `test` 資料夾包含用於測試個別元件的程式碼: 219 | 220 | * **`joystick_motor.cpp`:** 測試使用搖桿控制步進馬達。 221 | 222 | **要使用測試檔案:** 223 | 224 | 1. 將 `test` 資料夾中 `.cpp` 檔案的內容複製到 `esp_idf_esp32s3/main/main.cpp`。 225 | 2. 使用 VS Code 中的 ESP-IDF 擴充套件建置、燒錄並監控 ESP32-S3。 226 | 227 | ## 重要注意事項 228 | 229 | * **閒置智慧型手機再利用:** 此專案提供了一個很好的方式來利用舊的或閒置的智慧型手機作為網路攝影機,從而減少資源浪費並賦予它們新的用途。 230 | * **HTTPS:** 大多數瀏覽器都需要使用 HTTPS 才能存取 `getUserMedia`。自簽章憑證僅適用於開發用途。 231 | * **效能:** 此專案使用 WebRTC 進行更高效的影像串流。 232 | * **音訊:** 此專案中的音訊是從 `server-view` 到 `open-cam` 的單向傳輸。實作雙向音訊需要進一步開發。 233 | * **延展性:** 對於大量的客戶端,您將需要一個更具延展性的解決方案,可能需要使用媒體伺服器。 234 | * **安全性:** 對於生產環境,請使用來自受信任憑證授權單位的有效 SSL 憑證,並實施適當的安全措施。 235 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PetCam: Your Remote Real-time Pet Monitoring Solution 2 |

3 | 中文 README | 4 | ESP32-S3 Firmware Guide | 5 | ESP32-S3 設定指南 6 |

7 | 8 | This project implements a real-time pet camera application with the following features: 9 | 10 | * **Webcam Streaming:** Captures and streams live video from a designated webcam-equipped device using WebRTC. 11 | * **Remote Viewing:** Allows you to view the live stream from any device on your local network through a web browser. 12 | * **Remote Pan Control:** Enables remote control of a pan mechanism (using an ESP32-S3, stepper motor, and joystick) to change the camera's viewing direction. 13 | * **Talk to Pet:** Functionality to enable the viewer to transmit their voice to the pet through the webcam device. 14 | * **HTTPS:** Uses HTTPS to ensure secure communication. 15 | * **Repurpose Unused Smartphones:** With the increasing number of unused smartphones in many households, this project provides a practical way to repurpose these devices as remote webcams, reducing electronic waste and providing added value. 16 | 17 | ## Project Structure 18 | 19 | ``` 20 | pet-camera-project/ 21 | ├── client/ # Client-side code (web applications) 22 | │ └── open-cam/ # Web application for the camera device 23 | │ ├── index.html # HTML for the open-cam page 24 | │ ├── script.js # JS for camera access, WebRTC, and streaming 25 | │ └── style.css # CSS for open-cam page styling 26 | │ └── server-view/ 27 | │ └── script.js # JS for WebRTC receiving logic and motor control 28 | ├── esp_idf_esp32s3/ # ESP32-S3 firmware (motor control) 29 | │ ├── .devcontainer/ # Dev container configuration (for development) 30 | │ ├── test/ # Test files for individual components 31 | │ └── main/ # Main source code for ESP32-S3 32 | │ ├── CMakeLists.txt # CMake build configuration 33 | │ ├── http.cpp/http.h # HTTP server logic 34 | │ ├── joystick.cpp/joystick.h # Joystick input handling 35 | │ ├── main.cpp # Main program entry point 36 | │ ├── wifi.cpp/wifi.h # Wi-Fi connection management 37 | │ ├── wifi_config.h # Wi-Fi credentials (configure this!) 38 | │ └── ULN2003.cpp/ULN2003.h # 28BYJ-48 stepper motor control 39 | └── server/ # Server-side code (Node.js) 40 | ├── server.js # Node.js server with WebRTC signaling 41 | ├── key.pem # SSL private key (self-signed for testing) 42 | └── cert.pem # SSL certificate (self-signed for testing) 43 | └── templates/ 44 | ├── index.html # Server landing page 45 | └── server-view.html # Web page to view stream and control camera 46 | ``` 47 | 48 | ## Hardware 49 | 50 | * **Webcam Device:** A laptop or computer with a built-in or connected webcam. 51 | * **Server:** A computer (can be the same as the webcam device for testing) to run the Node.js server. 52 | * **ESP32-S3 Development Board:** 53 | * Model: **Goouuu ESP32-S3 N16R8** (16MB flash/8MB PSRAM, dual Type-C USB, W2812 RGB). 54 | * Used for controlling the stepper motor and handling HTTP requests for motor control. 55 | ![Image Source](https://www.taiwansensor.com.tw/wp-content/uploads/2023/12/O1CN01Zmz8W21kAXm0aySdE_672934643.jpg) 56 | * **28BYJ-48 Stepper Motor with ULN2003 Driver Board:** 57 | * Used for panning the camera. 58 | ![Image Source](https://m.media-amazon.com/images/I/61Ml9ebd2kL._AC_UF894,1000_QL80_.jpg) 59 | * **Joystick Module:** 60 | * Used to control the direction of the stepper motor. 61 | ![Image Source](https://down-br.img.susercontent.com/file/bcf905ecd9ff177fde7f4fbcafc9c400) 62 | * **Power Supply Module:** 63 | * Dedicated power supply for the stepper motor (requires 7-12V DC). 64 | ![Image Source](https://http2.mlstatic.com/D_613161-MLA47599398871_092021-C.jpg) 65 | 66 | ## Software Prerequisites 67 | 68 | * **Node.js and npm:** Install Node.js and npm from [link](https://nodejs.org/). 69 | * **OpenSSL:** Used to generate a self-signed certificate. Usually pre-installed on Linux/macOS. For Windows, it can be installed with Git for Windows or separately. Verify with `openssl version`. 70 | * **VS Code with ESP-IDF Extension:** Follow the instructions here to install the ESP-IDF extension for VS Code: [link](https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension) 71 | * **Git:** Install Git for version control: [link](https://git-scm.com/) 72 | * **Web Browser:** A modern web browser with WebRTC support (e.g., Brave, Firefox, or Edge, **but not Chrome**). 73 | 74 | ## Installation and Setup 75 | 76 | **1. Clone the Repository:** 77 | 78 | ```bash 79 | git clone https://github.com/whiteSHADOW1234/PetCam.git 80 | cd PetCam 81 | ``` 82 | 83 | **2. Server Setup:** 84 | 85 | * **Install Node.js Dependencies:** 86 | ```bash 87 | npm install # Execute this command in the `PetCam` directory 88 | ``` 89 | 90 | * **Generate Self-Signed Certificate:** 91 | * Run this command in the `server` directory, **replacing `192.168.1.10` with your server's actual LAN IP address**: 92 | 93 | ```bash 94 | openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj "/C=US/ST=CA/L=San Francisco/O=MyOrg/CN=192.168.1.10" -addext "subjectAltName=IP:192.168.1.10,DNS:localhost,IP:127.0.0.1" -addext "extendedKeyUsage=serverAuth" 95 | ``` 96 | 97 | **3. ESP32-S3 Setup (Motor Control):** 98 | 99 | * **Configure Wi-Fi:** 100 | * **Option 1: `wifi_config.h`:** 101 | * Create a file named `wifi_config.h` inside the `esp_idf_esp32s3/main` directory. 102 | * Add the following content, replacing placeholders with your actual Wi-Fi credentials: 103 | 104 | ```c 105 | #ifndef WIFI_CONFIG_H 106 | #define WIFI_CONFIG_H 107 | 108 | #define EXAMPLE_ESP_WIFI_SSID "YOUR_WIFI_SSID" 109 | #define EXAMPLE_ESP_WIFI_PASS "YOUR_WIFI_PASSWORD" 110 | 111 | #endif 112 | ``` 113 | 114 | * **Option 2: Modify `wifi.cpp`:** 115 | * Directly edit the `esp_idf_esp32s3/main/wifi.cpp` file. 116 | * Comment out or remove the line `#include "wifi_config.h"`. 117 | * Set the `EXAMPLE_ESP_WIFI_SSID` and `EXAMPLE_ESP_WIFI_PASS` defines within `wifi.cpp` to your Wi-Fi credentials. 118 | 119 | * **Build and Flash the Firmware:** 120 | 1. **Set Espressif Device Target:** 121 | * In VS Code, press `Ctrl+Shift+P` (or `Cmd+Shift+P` on macOS). 122 | * Type `ESP-IDF: Set Espressif Device Target` and press Enter. 123 | * Select `esp32s3` and choose the first option: `ESP32-S3 chip (via builtin USB-JTAG)`. 124 | 2. **Set Serial Port:** 125 | * Press `Ctrl+Shift+P` (or `Cmd+Shift+P`). 126 | * Type `ESP-IDF: Select Port to Use` and press Enter. 127 | * Select the serial port corresponding to your ESP32-S3 board. 128 | 3. **Build, Flash, and Monitor:** 129 | * Press `Ctrl+Shift+P` (or `Cmd+Shift+P`). 130 | * Type `ESP-IDF: Build, Flash and Start a Monitor on your Device` and press Enter. 131 | * This will build the firmware, flash it to the ESP32-S3, and open the serial monitor to view output. 132 | 133 | **4. Wiring:** 134 | 135 | * **28BYJ-48 Stepper Motor (using ULN2003 driver):** 136 | 137 | | 28BYJ-48 | ULN2003 | ESP32-S3/Power Module | 138 | | -------- | ------- | ---------------------- | 139 | | Red | + | 5V (Power Module) | 140 | | Orange | IN1 | GPIO15 | 141 | | Yellow | IN2 | GPIO16 | 142 | | Pink | IN3 | GPIO17 | 143 | | Blue | IN4 | GPIO18 | 144 | | Black | - | GND (Power Module) | 145 | 146 | * **Joystick Module:** 147 | 148 | | Joystick | ESP32-S3 | 149 | | -------- | -------- | 150 | | VCC | 3.3V | 151 | | GND | GND | 152 | | VRx | GPIO1 | 153 | | VRy | GPIO2 | 154 | | SW | GPIO4 | 155 | 156 | **Note:** 157 | 158 | * The specific GPIO numbers for the ESP32-S3 might vary depending on the development board you are using. Refer to your board's pinout diagram. 159 | * Make sure the VRx and VRy pins of the joystick are connected to GPIO pins that support ADC (Analog-to-Digital Conversion). 160 | 161 | ## Running the Application 162 | 163 | 1. **Start the Server:** 164 | 165 | ```bash 166 | npm start # execute this command in the `PetCam` directory 167 | ``` 168 | 169 | The server console will output the accessible URLs, including the LAN IP addresses for `open-cam` and `server-view`. 170 | 171 | 2. **Access Open-Cam (Webcam Client):** 172 | 173 | * Open a web browser on the device with the webcam. 174 | * Go to `https://:5000/client/open-cam`, replacing `` with one of the server's LAN IP addresses listed in the console output. 175 | * Grant the website permission to access your camera and microphone when prompted. 176 | 177 | 3. **Access Server-View:** 178 | 179 | * Open a web browser on any device on your LAN. 180 | * Go to `https://:5000/server-view`, replacing `` with the server's LAN IP address. 181 | * You should see the video stream from the `open-cam` device. 182 | 183 | 4. **Controlling the Motor:** 184 | * Use the joystick connected to the ESP32-S3 to control the direction of the stepper motor. 185 | * Click the "Talk to Pet" button on the `server-view` page to enable audio from the viewer to the `open-cam` device. 186 | 187 | ## Troubleshooting 188 | 189 | * **Camera Not Starting on Open-Cam:** 190 | * Check browser and OS permissions for camera and microphone access. 191 | * Verify that the `serverAddress` in `client/open-cam/script.js` is correct. 192 | * Look for errors in the browser's developer console (F12). 193 | * Ensure no other applications are using the camera. 194 | * Try a different browser or device. 195 | 196 | * **No Video on Server-View:** 197 | * Examine the console logs on the server, `open-cam`, and `server-view` for errors. 198 | * Check the "Network" tab in the `server-view` browser's developer tools to see if the offer, answer, and ICE candidates are being exchanged. 199 | * Verify that the `RTCPeerConnection` on `server-view` is established and the `ontrack` event is firing. 200 | 201 | * **Motor Not Responding:** 202 | * Check the wiring between the ESP32-S3, motor driver, and joystick. 203 | * Verify that the ESP32-S3 is connected to your Wi-Fi network. 204 | * Use the serial monitor in VS Code to see if the ESP32-S3 is receiving commands. 205 | 206 | * **Server Not Accessible:** 207 | * Double-check your server's LAN IP address. 208 | * Make sure the server is running and listening on port 5000. 209 | * Check your firewall settings (allow port 5000). 210 | 211 | * **SSL Errors:** 212 | * If you see SSL errors, it's because you're using a self-signed certificate. You'll need to add a temporary exception in your browser to proceed during development. **For production, use a valid certificate from a trusted Certificate Authority.** 213 | 214 | * **Refresh:** If you make changes to the code, restart the server and hard refresh (Ctrl+Shift+R or Cmd+Shift+R) the web pages. 215 | 216 | ## `esp_idf_esp32s3/test` Folder Usage 217 | 218 | The `test` folder contains code for testing individual components: 219 | 220 | * **`joystick_motor.cpp`:** Tests joystick control of the stepper motor. 221 | 222 | **To use a test file:** 223 | 224 | 1. Copy the contents of the `.cpp` file from the `test` folder into `esp_idf_esp32s3/main/main.cpp`. 225 | 2. Build, flash, and monitor the ESP32-S3 using the ESP-IDF extension in VS Code. 226 | 227 | ## Important Notes 228 | 229 | * **Repurposing Smartphones:** This project provides a great way to utilize old or unused smartphones as webcams, reducing electronic waste and giving them a new purpose. 230 | * **HTTPS:** HTTPS is required for accessing `getUserMedia` in most browsers. The self-signed certificate is for development only. 231 | * **Performance:** This project uses a simple WebRTC implementation for testing. Performance might be limited, especially with multiple clients. Consider using a dedicated media server for production. 232 | * **Audio:** The audio in this project is unidirectional from the `server-view` to the `open-cam`. Implementing bi-directional audio requires further development. 233 | * **Scalability:** For a large number of clients, you'll need a more scalable solution, potentially involving a media server. 234 | -------------------------------------------------------------------------------- /esp_idf_esp32s3/sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file. DO NOT EDIT. 3 | # Espressif IoT Development Framework (ESP-IDF) 5.3.2 Project Configuration 4 | # 5 | CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 6 | CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 7 | CONFIG_SOC_ADC_SUPPORTED=y 8 | CONFIG_SOC_UART_SUPPORTED=y 9 | CONFIG_SOC_PCNT_SUPPORTED=y 10 | CONFIG_SOC_PHY_SUPPORTED=y 11 | CONFIG_SOC_WIFI_SUPPORTED=y 12 | CONFIG_SOC_TWAI_SUPPORTED=y 13 | CONFIG_SOC_GDMA_SUPPORTED=y 14 | CONFIG_SOC_AHB_GDMA_SUPPORTED=y 15 | CONFIG_SOC_GPTIMER_SUPPORTED=y 16 | CONFIG_SOC_LCDCAM_SUPPORTED=y 17 | CONFIG_SOC_LCDCAM_I80_LCD_SUPPORTED=y 18 | CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED=y 19 | CONFIG_SOC_MCPWM_SUPPORTED=y 20 | CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y 21 | CONFIG_SOC_CACHE_SUPPORT_WRAP=y 22 | CONFIG_SOC_ULP_SUPPORTED=y 23 | CONFIG_SOC_ULP_FSM_SUPPORTED=y 24 | CONFIG_SOC_RISCV_COPROC_SUPPORTED=y 25 | CONFIG_SOC_BT_SUPPORTED=y 26 | CONFIG_SOC_USB_OTG_SUPPORTED=y 27 | CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y 28 | CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y 29 | CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y 30 | CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y 31 | CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y 32 | CONFIG_SOC_EFUSE_SUPPORTED=y 33 | CONFIG_SOC_SDMMC_HOST_SUPPORTED=y 34 | CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y 35 | CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y 36 | CONFIG_SOC_RTC_MEM_SUPPORTED=y 37 | CONFIG_SOC_PSRAM_DMA_CAPABLE=y 38 | CONFIG_SOC_XT_WDT_SUPPORTED=y 39 | CONFIG_SOC_I2S_SUPPORTED=y 40 | CONFIG_SOC_RMT_SUPPORTED=y 41 | CONFIG_SOC_SDM_SUPPORTED=y 42 | CONFIG_SOC_GPSPI_SUPPORTED=y 43 | CONFIG_SOC_LEDC_SUPPORTED=y 44 | CONFIG_SOC_I2C_SUPPORTED=y 45 | CONFIG_SOC_SYSTIMER_SUPPORTED=y 46 | CONFIG_SOC_SUPPORT_COEXISTENCE=y 47 | CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y 48 | CONFIG_SOC_AES_SUPPORTED=y 49 | CONFIG_SOC_MPI_SUPPORTED=y 50 | CONFIG_SOC_SHA_SUPPORTED=y 51 | CONFIG_SOC_HMAC_SUPPORTED=y 52 | CONFIG_SOC_DIG_SIGN_SUPPORTED=y 53 | CONFIG_SOC_FLASH_ENC_SUPPORTED=y 54 | CONFIG_SOC_SECURE_BOOT_SUPPORTED=y 55 | CONFIG_SOC_MEMPROT_SUPPORTED=y 56 | CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y 57 | CONFIG_SOC_BOD_SUPPORTED=y 58 | CONFIG_SOC_CLK_TREE_SUPPORTED=y 59 | CONFIG_SOC_MPU_SUPPORTED=y 60 | CONFIG_SOC_WDT_SUPPORTED=y 61 | CONFIG_SOC_SPI_FLASH_SUPPORTED=y 62 | CONFIG_SOC_RNG_SUPPORTED=y 63 | CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y 64 | CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y 65 | CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y 66 | CONFIG_SOC_PM_SUPPORTED=y 67 | CONFIG_SOC_XTAL_SUPPORT_40M=y 68 | CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y 69 | CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y 70 | CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y 71 | CONFIG_SOC_ADC_ARBITER_SUPPORTED=y 72 | CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y 73 | CONFIG_SOC_ADC_MONITOR_SUPPORTED=y 74 | CONFIG_SOC_ADC_DMA_SUPPORTED=y 75 | CONFIG_SOC_ADC_PERIPH_NUM=2 76 | CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 77 | CONFIG_SOC_ADC_ATTEN_NUM=4 78 | CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 79 | CONFIG_SOC_ADC_PATT_LEN_MAX=24 80 | CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 81 | CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 82 | CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 83 | CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 84 | CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 85 | CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 86 | CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 87 | CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 88 | CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 89 | CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 90 | CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y 91 | CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y 92 | CONFIG_SOC_ADC_SHARED_POWER=y 93 | CONFIG_SOC_APB_BACKUP_DMA=y 94 | CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y 95 | CONFIG_SOC_CACHE_WRITEBACK_SUPPORTED=y 96 | CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y 97 | CONFIG_SOC_CPU_CORES_NUM=2 98 | CONFIG_SOC_CPU_INTR_NUM=32 99 | CONFIG_SOC_CPU_HAS_FPU=y 100 | CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y 101 | CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 102 | CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 103 | CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 104 | CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 105 | CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 106 | CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 107 | CONFIG_SOC_AHB_GDMA_VERSION=1 108 | CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1 109 | CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5 110 | CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=5 111 | CONFIG_SOC_AHB_GDMA_SUPPORT_PSRAM=y 112 | CONFIG_SOC_GPIO_PORT=1 113 | CONFIG_SOC_GPIO_PIN_COUNT=49 114 | CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y 115 | CONFIG_SOC_GPIO_FILTER_CLK_SUPPORT_APB=y 116 | CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y 117 | CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y 118 | CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF 119 | CONFIG_SOC_GPIO_IN_RANGE_MAX=48 120 | CONFIG_SOC_GPIO_OUT_RANGE_MAX=48 121 | CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x0001FFFFFC000000 122 | CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y 123 | CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 124 | CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y 125 | CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 126 | CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 127 | CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y 128 | CONFIG_SOC_I2C_NUM=2 129 | CONFIG_SOC_HP_I2C_NUM=2 130 | CONFIG_SOC_I2C_FIFO_LEN=32 131 | CONFIG_SOC_I2C_CMD_REG_NUM=8 132 | CONFIG_SOC_I2C_SUPPORT_SLAVE=y 133 | CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y 134 | CONFIG_SOC_I2C_SUPPORT_XTAL=y 135 | CONFIG_SOC_I2C_SUPPORT_RTC=y 136 | CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y 137 | CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y 138 | CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y 139 | CONFIG_SOC_I2S_NUM=2 140 | CONFIG_SOC_I2S_HW_VERSION_2=y 141 | CONFIG_SOC_I2S_SUPPORTS_XTAL=y 142 | CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y 143 | CONFIG_SOC_I2S_SUPPORTS_PCM=y 144 | CONFIG_SOC_I2S_SUPPORTS_PDM=y 145 | CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y 146 | CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 147 | CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y 148 | CONFIG_SOC_I2S_PDM_MAX_RX_LINES=4 149 | CONFIG_SOC_I2S_SUPPORTS_TDM=y 150 | CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y 151 | CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y 152 | CONFIG_SOC_LEDC_CHANNEL_NUM=8 153 | CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=14 154 | CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y 155 | CONFIG_SOC_MCPWM_GROUPS=2 156 | CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 157 | CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 158 | CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 159 | CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 160 | CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 161 | CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 162 | CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y 163 | CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 164 | CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 165 | CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y 166 | CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 167 | CONFIG_SOC_MMU_PERIPH_NUM=1 168 | CONFIG_SOC_PCNT_GROUPS=1 169 | CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 170 | CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 171 | CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 172 | CONFIG_SOC_RMT_GROUPS=1 173 | CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4 174 | CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4 175 | CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 176 | CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 177 | CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y 178 | CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y 179 | CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y 180 | CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y 181 | CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y 182 | CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y 183 | CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y 184 | CONFIG_SOC_RMT_SUPPORT_XTAL=y 185 | CONFIG_SOC_RMT_SUPPORT_RC_FAST=y 186 | CONFIG_SOC_RMT_SUPPORT_APB=y 187 | CONFIG_SOC_RMT_SUPPORT_DMA=y 188 | CONFIG_SOC_LCD_I80_SUPPORTED=y 189 | CONFIG_SOC_LCD_RGB_SUPPORTED=y 190 | CONFIG_SOC_LCD_I80_BUSES=1 191 | CONFIG_SOC_LCD_RGB_PANELS=1 192 | CONFIG_SOC_LCD_I80_BUS_WIDTH=16 193 | CONFIG_SOC_LCD_RGB_DATA_WIDTH=16 194 | CONFIG_SOC_LCD_SUPPORT_RGB_YUV_CONV=y 195 | CONFIG_SOC_LCDCAM_I80_NUM_BUSES=1 196 | CONFIG_SOC_LCDCAM_I80_BUS_WIDTH=16 197 | CONFIG_SOC_LCDCAM_RGB_NUM_PANELS=1 198 | CONFIG_SOC_LCDCAM_RGB_DATA_WIDTH=16 199 | CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128 200 | CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549 201 | CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128 202 | CONFIG_SOC_RTCIO_PIN_COUNT=22 203 | CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y 204 | CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y 205 | CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y 206 | CONFIG_SOC_SDM_GROUPS=y 207 | CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 208 | CONFIG_SOC_SDM_CLK_SUPPORT_APB=y 209 | CONFIG_SOC_SPI_PERIPH_NUM=3 210 | CONFIG_SOC_SPI_MAX_CS_NUM=6 211 | CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 212 | CONFIG_SOC_SPI_SUPPORT_DDRCLK=y 213 | CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y 214 | CONFIG_SOC_SPI_SUPPORT_CD_SIG=y 215 | CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y 216 | CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y 217 | CONFIG_SOC_SPI_SUPPORT_CLK_APB=y 218 | CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y 219 | CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y 220 | CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y 221 | CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 222 | CONFIG_SOC_SPI_SUPPORT_OCT=y 223 | CONFIG_SOC_SPI_SCT_SUPPORTED=y 224 | CONFIG_SOC_SPI_SCT_REG_NUM=14 225 | CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y 226 | CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA 227 | CONFIG_SOC_MEMSPI_SRC_FREQ_120M=y 228 | CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y 229 | CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y 230 | CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y 231 | CONFIG_SOC_SPIRAM_SUPPORTED=y 232 | CONFIG_SOC_SPIRAM_XIP_SUPPORTED=y 233 | CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 234 | CONFIG_SOC_SYSTIMER_ALARM_NUM=3 235 | CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 236 | CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 237 | CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y 238 | CONFIG_SOC_SYSTIMER_INT_LEVEL=y 239 | CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y 240 | CONFIG_SOC_TIMER_GROUPS=2 241 | CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 242 | CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 243 | CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y 244 | CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y 245 | CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 246 | CONFIG_SOC_TOUCH_SENSOR_VERSION=2 247 | CONFIG_SOC_TOUCH_SENSOR_NUM=15 248 | CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y 249 | CONFIG_SOC_TOUCH_SUPPORT_WATERPROOF=y 250 | CONFIG_SOC_TOUCH_SUPPORT_PROX_SENSING=y 251 | CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3 252 | CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y 253 | CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 254 | CONFIG_SOC_TWAI_CONTROLLER_NUM=1 255 | CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y 256 | CONFIG_SOC_TWAI_BRP_MIN=2 257 | CONFIG_SOC_TWAI_BRP_MAX=16384 258 | CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y 259 | CONFIG_SOC_UART_NUM=3 260 | CONFIG_SOC_UART_HP_NUM=3 261 | CONFIG_SOC_UART_FIFO_LEN=128 262 | CONFIG_SOC_UART_BITRATE_MAX=5000000 263 | CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y 264 | CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y 265 | CONFIG_SOC_UART_SUPPORT_APB_CLK=y 266 | CONFIG_SOC_UART_SUPPORT_RTC_CLK=y 267 | CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y 268 | CONFIG_SOC_USB_OTG_PERIPH_NUM=1 269 | CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 270 | CONFIG_SOC_SHA_SUPPORT_DMA=y 271 | CONFIG_SOC_SHA_SUPPORT_RESUME=y 272 | CONFIG_SOC_SHA_GDMA=y 273 | CONFIG_SOC_SHA_SUPPORT_SHA1=y 274 | CONFIG_SOC_SHA_SUPPORT_SHA224=y 275 | CONFIG_SOC_SHA_SUPPORT_SHA256=y 276 | CONFIG_SOC_SHA_SUPPORT_SHA384=y 277 | CONFIG_SOC_SHA_SUPPORT_SHA512=y 278 | CONFIG_SOC_SHA_SUPPORT_SHA512_224=y 279 | CONFIG_SOC_SHA_SUPPORT_SHA512_256=y 280 | CONFIG_SOC_SHA_SUPPORT_SHA512_T=y 281 | CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 282 | CONFIG_SOC_MPI_OPERATIONS_NUM=3 283 | CONFIG_SOC_RSA_MAX_BIT_LEN=4096 284 | CONFIG_SOC_AES_SUPPORT_DMA=y 285 | CONFIG_SOC_AES_GDMA=y 286 | CONFIG_SOC_AES_SUPPORT_AES_128=y 287 | CONFIG_SOC_AES_SUPPORT_AES_256=y 288 | CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y 289 | CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y 290 | CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y 291 | CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y 292 | CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y 293 | CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y 294 | CONFIG_SOC_PM_SUPPORT_CPU_PD=y 295 | CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y 296 | CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y 297 | CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y 298 | CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y 299 | CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y 300 | CONFIG_SOC_PM_SUPPORT_MODEM_PD=y 301 | CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y 302 | CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y 303 | CONFIG_SOC_PM_CPU_RETENTION_BY_RTCCNTL=y 304 | CONFIG_SOC_PM_MODEM_RETENTION_BY_BACKUPDMA=y 305 | CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y 306 | CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y 307 | CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y 308 | CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y 309 | CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y 310 | CONFIG_SOC_EFUSE_DIS_DOWNLOAD_DCACHE=y 311 | CONFIG_SOC_EFUSE_HARD_DIS_JTAG=y 312 | CONFIG_SOC_EFUSE_DIS_USB_JTAG=y 313 | CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y 314 | CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y 315 | CONFIG_SOC_EFUSE_DIS_ICACHE=y 316 | CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y 317 | CONFIG_SOC_SECURE_BOOT_V2_RSA=y 318 | CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 319 | CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y 320 | CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y 321 | CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 322 | CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y 323 | CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y 324 | CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y 325 | CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y 326 | CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16 327 | CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256 328 | CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 329 | CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192 330 | CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 331 | CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y 332 | CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y 333 | CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y 334 | CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y 335 | CONFIG_SOC_SPI_MEM_SUPPORT_OPI_MODE=y 336 | CONFIG_SOC_SPI_MEM_SUPPORT_TIMING_TUNING=y 337 | CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y 338 | CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y 339 | CONFIG_SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY=y 340 | CONFIG_SOC_MEMSPI_CORE_CLK_SHARED_WITH_PSRAM=y 341 | CONFIG_SOC_SPI_MEM_SUPPORT_CACHE_32BIT_ADDR_MAP=y 342 | CONFIG_SOC_COEX_HW_PTI=y 343 | CONFIG_SOC_EXTERNAL_COEX_LEADER_TX_LINE=y 344 | CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y 345 | CONFIG_SOC_SDMMC_NUM_SLOTS=2 346 | CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y 347 | CONFIG_SOC_SDMMC_DELAY_PHASE_NUM=4 348 | CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y 349 | CONFIG_SOC_WIFI_HW_TSF=y 350 | CONFIG_SOC_WIFI_FTM_SUPPORT=y 351 | CONFIG_SOC_WIFI_GCMP_SUPPORT=y 352 | CONFIG_SOC_WIFI_WAPI_SUPPORT=y 353 | CONFIG_SOC_WIFI_CSI_SUPPORT=y 354 | CONFIG_SOC_WIFI_MESH_SUPPORT=y 355 | CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y 356 | CONFIG_SOC_WIFI_PHY_NEEDS_USB_WORKAROUND=y 357 | CONFIG_SOC_BLE_SUPPORTED=y 358 | CONFIG_SOC_BLE_MESH_SUPPORTED=y 359 | CONFIG_SOC_BLE_50_SUPPORTED=y 360 | CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y 361 | CONFIG_SOC_BLUFI_SUPPORTED=y 362 | CONFIG_SOC_ULP_HAS_ADC=y 363 | CONFIG_SOC_PHY_COMBO_MODULE=y 364 | CONFIG_IDF_CMAKE=y 365 | CONFIG_IDF_TOOLCHAIN="gcc" 366 | CONFIG_IDF_TARGET_ARCH_XTENSA=y 367 | CONFIG_IDF_TARGET_ARCH="xtensa" 368 | CONFIG_IDF_TARGET="esp32s3" 369 | CONFIG_IDF_INIT_VERSION="5.3.2" 370 | CONFIG_IDF_TARGET_ESP32S3=y 371 | CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009 372 | 373 | # 374 | # Build type 375 | # 376 | CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y 377 | # CONFIG_APP_BUILD_TYPE_RAM is not set 378 | CONFIG_APP_BUILD_GENERATE_BINARIES=y 379 | CONFIG_APP_BUILD_BOOTLOADER=y 380 | CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y 381 | # CONFIG_APP_REPRODUCIBLE_BUILD is not set 382 | # CONFIG_APP_NO_BLOBS is not set 383 | # end of Build type 384 | 385 | # 386 | # Bootloader config 387 | # 388 | 389 | # 390 | # Bootloader manager 391 | # 392 | CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y 393 | CONFIG_BOOTLOADER_PROJECT_VER=1 394 | # end of Bootloader manager 395 | 396 | CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 397 | CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y 398 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set 399 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set 400 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set 401 | # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set 402 | # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set 403 | # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set 404 | CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y 405 | # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set 406 | # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set 407 | CONFIG_BOOTLOADER_LOG_LEVEL=3 408 | 409 | # 410 | # Serial Flash Configurations 411 | # 412 | # CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set 413 | CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y 414 | # end of Serial Flash Configurations 415 | 416 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y 417 | # CONFIG_BOOTLOADER_FACTORY_RESET is not set 418 | # CONFIG_BOOTLOADER_APP_TEST is not set 419 | CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y 420 | CONFIG_BOOTLOADER_WDT_ENABLE=y 421 | # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set 422 | CONFIG_BOOTLOADER_WDT_TIME_MS=9000 423 | # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set 424 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set 425 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set 426 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set 427 | CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 428 | # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set 429 | # end of Bootloader config 430 | 431 | # 432 | # Security features 433 | # 434 | CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y 435 | CONFIG_SECURE_BOOT_V2_PREFERRED=y 436 | # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set 437 | # CONFIG_SECURE_BOOT is not set 438 | # CONFIG_SECURE_FLASH_ENC_ENABLED is not set 439 | CONFIG_SECURE_ROM_DL_MODE_ENABLED=y 440 | # end of Security features 441 | 442 | # 443 | # Application manager 444 | # 445 | CONFIG_APP_COMPILE_TIME_DATE=y 446 | # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set 447 | # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set 448 | # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set 449 | CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 450 | # end of Application manager 451 | 452 | CONFIG_ESP_ROM_HAS_CRC_LE=y 453 | CONFIG_ESP_ROM_HAS_CRC_BE=y 454 | CONFIG_ESP_ROM_HAS_MZ_CRC32=y 455 | CONFIG_ESP_ROM_HAS_JPEG_DECODE=y 456 | CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y 457 | CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y 458 | CONFIG_ESP_ROM_USB_OTG_NUM=3 459 | CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4 460 | CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y 461 | CONFIG_ESP_ROM_HAS_ENCRYPTED_WRITES_USING_LEGACY_DRV=y 462 | CONFIG_ESP_ROM_GET_CLK_FREQ=y 463 | CONFIG_ESP_ROM_HAS_HAL_WDT=y 464 | CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y 465 | CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y 466 | CONFIG_ESP_ROM_HAS_SPI_FLASH=y 467 | CONFIG_ESP_ROM_HAS_ETS_PRINTF_BUG=y 468 | CONFIG_ESP_ROM_HAS_NEWLIB=y 469 | CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y 470 | CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y 471 | CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y 472 | CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y 473 | CONFIG_ESP_ROM_HAS_FLASH_COUNT_PAGES_BUG=y 474 | CONFIG_ESP_ROM_HAS_CACHE_SUSPEND_WAITI_BUG=y 475 | CONFIG_ESP_ROM_HAS_CACHE_WRITEBACK_BUG=y 476 | CONFIG_ESP_ROM_HAS_SW_FLOAT=y 477 | CONFIG_ESP_ROM_HAS_VERSION=y 478 | CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y 479 | 480 | # 481 | # Boot ROM Behavior 482 | # 483 | CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y 484 | # CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set 485 | # CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set 486 | # CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set 487 | # end of Boot ROM Behavior 488 | 489 | # 490 | # Serial flasher config 491 | # 492 | # CONFIG_ESPTOOLPY_NO_STUB is not set 493 | # CONFIG_ESPTOOLPY_OCT_FLASH is not set 494 | CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=y 495 | # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set 496 | # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set 497 | CONFIG_ESPTOOLPY_FLASHMODE_DIO=y 498 | # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set 499 | CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y 500 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 501 | # CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set 502 | CONFIG_ESPTOOLPY_FLASHFREQ_80M=y 503 | # CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set 504 | # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set 505 | CONFIG_ESPTOOLPY_FLASHFREQ_80M_DEFAULT=y 506 | CONFIG_ESPTOOLPY_FLASHFREQ="80m" 507 | # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set 508 | # CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set 509 | # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set 510 | # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set 511 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y 512 | # CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set 513 | # CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set 514 | # CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set 515 | CONFIG_ESPTOOLPY_FLASHSIZE="16MB" 516 | # CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set 517 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 518 | # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set 519 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 520 | CONFIG_ESPTOOLPY_AFTER_RESET=y 521 | # CONFIG_ESPTOOLPY_AFTER_NORESET is not set 522 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 523 | CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 524 | # end of Serial flasher config 525 | 526 | # 527 | # Partition Table 528 | # 529 | CONFIG_PARTITION_TABLE_SINGLE_APP=y 530 | # CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set 531 | # CONFIG_PARTITION_TABLE_TWO_OTA is not set 532 | # CONFIG_PARTITION_TABLE_CUSTOM is not set 533 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 534 | CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" 535 | CONFIG_PARTITION_TABLE_OFFSET=0x8000 536 | CONFIG_PARTITION_TABLE_MD5=y 537 | # end of Partition Table 538 | 539 | # 540 | # Compiler options 541 | # 542 | CONFIG_COMPILER_OPTIMIZATION_DEBUG=y 543 | # CONFIG_COMPILER_OPTIMIZATION_SIZE is not set 544 | # CONFIG_COMPILER_OPTIMIZATION_PERF is not set 545 | # CONFIG_COMPILER_OPTIMIZATION_NONE is not set 546 | CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y 547 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set 548 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set 549 | CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y 550 | CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 551 | # CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set 552 | CONFIG_COMPILER_HIDE_PATHS_MACROS=y 553 | # CONFIG_COMPILER_CXX_EXCEPTIONS is not set 554 | # CONFIG_COMPILER_CXX_RTTI is not set 555 | CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y 556 | # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set 557 | # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set 558 | # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set 559 | # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set 560 | # CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set 561 | # CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set 562 | # CONFIG_COMPILER_DUMP_RTL_FILES is not set 563 | CONFIG_COMPILER_RT_LIB_GCCLIB=y 564 | CONFIG_COMPILER_RT_LIB_NAME="gcc" 565 | # CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING is not set 566 | CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE=y 567 | # end of Compiler options 568 | 569 | # 570 | # Component config 571 | # 572 | 573 | # 574 | # Application Level Tracing 575 | # 576 | # CONFIG_APPTRACE_DEST_JTAG is not set 577 | CONFIG_APPTRACE_DEST_NONE=y 578 | # CONFIG_APPTRACE_DEST_UART1 is not set 579 | # CONFIG_APPTRACE_DEST_UART2 is not set 580 | # CONFIG_APPTRACE_DEST_USB_CDC is not set 581 | CONFIG_APPTRACE_DEST_UART_NONE=y 582 | CONFIG_APPTRACE_UART_TASK_PRIO=1 583 | CONFIG_APPTRACE_LOCK_ENABLE=y 584 | # end of Application Level Tracing 585 | 586 | # 587 | # Bluetooth 588 | # 589 | # CONFIG_BT_ENABLED is not set 590 | CONFIG_BT_ALARM_MAX_NUM=50 591 | # end of Bluetooth 592 | 593 | # 594 | # Console Library 595 | # 596 | # CONFIG_CONSOLE_SORTED_HELP is not set 597 | # end of Console Library 598 | 599 | # 600 | # Driver Configurations 601 | # 602 | 603 | # 604 | # TWAI Configuration 605 | # 606 | # CONFIG_TWAI_ISR_IN_IRAM is not set 607 | CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y 608 | # end of TWAI Configuration 609 | 610 | # 611 | # Legacy ADC Driver Configuration 612 | # 613 | # CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set 614 | 615 | # 616 | # Legacy ADC Calibration Configuration 617 | # 618 | # CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set 619 | # end of Legacy ADC Calibration Configuration 620 | # end of Legacy ADC Driver Configuration 621 | 622 | # 623 | # Legacy MCPWM Driver Configurations 624 | # 625 | # CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set 626 | # end of Legacy MCPWM Driver Configurations 627 | 628 | # 629 | # Legacy Timer Group Driver Configurations 630 | # 631 | # CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set 632 | # end of Legacy Timer Group Driver Configurations 633 | 634 | # 635 | # Legacy RMT Driver Configurations 636 | # 637 | # CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set 638 | # end of Legacy RMT Driver Configurations 639 | 640 | # 641 | # Legacy I2S Driver Configurations 642 | # 643 | # CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set 644 | # end of Legacy I2S Driver Configurations 645 | 646 | # 647 | # Legacy PCNT Driver Configurations 648 | # 649 | # CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set 650 | # end of Legacy PCNT Driver Configurations 651 | 652 | # 653 | # Legacy SDM Driver Configurations 654 | # 655 | # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set 656 | # end of Legacy SDM Driver Configurations 657 | 658 | # 659 | # Legacy Temperature Sensor Driver Configurations 660 | # 661 | # CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set 662 | # end of Legacy Temperature Sensor Driver Configurations 663 | # end of Driver Configurations 664 | 665 | # 666 | # eFuse Bit Manager 667 | # 668 | # CONFIG_EFUSE_CUSTOM_TABLE is not set 669 | # CONFIG_EFUSE_VIRTUAL is not set 670 | CONFIG_EFUSE_MAX_BLK_LEN=256 671 | # end of eFuse Bit Manager 672 | 673 | # 674 | # ESP-TLS 675 | # 676 | CONFIG_ESP_TLS_USING_MBEDTLS=y 677 | CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y 678 | # CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set 679 | # CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set 680 | # CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set 681 | # CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set 682 | # CONFIG_ESP_TLS_PSK_VERIFICATION is not set 683 | # CONFIG_ESP_TLS_INSECURE is not set 684 | # end of ESP-TLS 685 | 686 | # 687 | # ADC and ADC Calibration 688 | # 689 | # CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set 690 | # CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set 691 | # CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set 692 | # CONFIG_ADC_ENABLE_DEBUG_LOG is not set 693 | # end of ADC and ADC Calibration 694 | 695 | # 696 | # Wireless Coexistence 697 | # 698 | CONFIG_ESP_COEX_ENABLED=y 699 | # CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set 700 | # CONFIG_ESP_COEX_GPIO_DEBUG is not set 701 | # end of Wireless Coexistence 702 | 703 | # 704 | # Common ESP-related 705 | # 706 | CONFIG_ESP_ERR_TO_NAME_LOOKUP=y 707 | # end of Common ESP-related 708 | 709 | # 710 | # ESP-Driver:GPIO Configurations 711 | # 712 | # CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set 713 | # end of ESP-Driver:GPIO Configurations 714 | 715 | # 716 | # ESP-Driver:GPTimer Configurations 717 | # 718 | CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y 719 | # CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set 720 | # CONFIG_GPTIMER_ISR_IRAM_SAFE is not set 721 | # CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set 722 | # end of ESP-Driver:GPTimer Configurations 723 | 724 | # 725 | # ESP-Driver:I2C Configurations 726 | # 727 | # CONFIG_I2C_ISR_IRAM_SAFE is not set 728 | # CONFIG_I2C_ENABLE_DEBUG_LOG is not set 729 | # end of ESP-Driver:I2C Configurations 730 | 731 | # 732 | # ESP-Driver:I2S Configurations 733 | # 734 | # CONFIG_I2S_ISR_IRAM_SAFE is not set 735 | # CONFIG_I2S_ENABLE_DEBUG_LOG is not set 736 | # end of ESP-Driver:I2S Configurations 737 | 738 | # 739 | # ESP-Driver:LEDC Configurations 740 | # 741 | # CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set 742 | # end of ESP-Driver:LEDC Configurations 743 | 744 | # 745 | # ESP-Driver:MCPWM Configurations 746 | # 747 | # CONFIG_MCPWM_ISR_IRAM_SAFE is not set 748 | # CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set 749 | # CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set 750 | # end of ESP-Driver:MCPWM Configurations 751 | 752 | # 753 | # ESP-Driver:PCNT Configurations 754 | # 755 | # CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set 756 | # CONFIG_PCNT_ISR_IRAM_SAFE is not set 757 | # CONFIG_PCNT_ENABLE_DEBUG_LOG is not set 758 | # end of ESP-Driver:PCNT Configurations 759 | 760 | # 761 | # ESP-Driver:RMT Configurations 762 | # 763 | # CONFIG_RMT_ISR_IRAM_SAFE is not set 764 | # CONFIG_RMT_RECV_FUNC_IN_IRAM is not set 765 | # CONFIG_RMT_ENABLE_DEBUG_LOG is not set 766 | # end of ESP-Driver:RMT Configurations 767 | 768 | # 769 | # ESP-Driver:Sigma Delta Modulator Configurations 770 | # 771 | # CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set 772 | # CONFIG_SDM_ENABLE_DEBUG_LOG is not set 773 | # end of ESP-Driver:Sigma Delta Modulator Configurations 774 | 775 | # 776 | # ESP-Driver:SPI Configurations 777 | # 778 | # CONFIG_SPI_MASTER_IN_IRAM is not set 779 | CONFIG_SPI_MASTER_ISR_IN_IRAM=y 780 | # CONFIG_SPI_SLAVE_IN_IRAM is not set 781 | CONFIG_SPI_SLAVE_ISR_IN_IRAM=y 782 | # end of ESP-Driver:SPI Configurations 783 | 784 | # 785 | # ESP-Driver:Touch Sensor Configurations 786 | # 787 | # CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set 788 | # CONFIG_TOUCH_ISR_IRAM_SAFE is not set 789 | # CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set 790 | # end of ESP-Driver:Touch Sensor Configurations 791 | 792 | # 793 | # ESP-Driver:Temperature Sensor Configurations 794 | # 795 | # CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set 796 | # end of ESP-Driver:Temperature Sensor Configurations 797 | 798 | # 799 | # ESP-Driver:UART Configurations 800 | # 801 | # CONFIG_UART_ISR_IN_IRAM is not set 802 | # end of ESP-Driver:UART Configurations 803 | 804 | # 805 | # ESP-Driver:USB Serial/JTAG Configuration 806 | # 807 | CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y 808 | # end of ESP-Driver:USB Serial/JTAG Configuration 809 | 810 | # 811 | # Ethernet 812 | # 813 | CONFIG_ETH_ENABLED=y 814 | CONFIG_ETH_USE_SPI_ETHERNET=y 815 | # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set 816 | # CONFIG_ETH_SPI_ETHERNET_W5500 is not set 817 | # CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set 818 | # CONFIG_ETH_USE_OPENETH is not set 819 | # CONFIG_ETH_TRANSMIT_MUTEX is not set 820 | # end of Ethernet 821 | 822 | # 823 | # Event Loop Library 824 | # 825 | # CONFIG_ESP_EVENT_LOOP_PROFILING is not set 826 | CONFIG_ESP_EVENT_POST_FROM_ISR=y 827 | CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y 828 | # end of Event Loop Library 829 | 830 | # 831 | # GDB Stub 832 | # 833 | CONFIG_ESP_GDBSTUB_ENABLED=y 834 | # CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set 835 | CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y 836 | CONFIG_ESP_GDBSTUB_MAX_TASKS=32 837 | # end of GDB Stub 838 | 839 | # 840 | # ESP HTTP client 841 | # 842 | CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y 843 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set 844 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set 845 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set 846 | # end of ESP HTTP client 847 | 848 | # 849 | # HTTP Server 850 | # 851 | CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 852 | CONFIG_HTTPD_MAX_URI_LEN=512 853 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y 854 | CONFIG_HTTPD_PURGE_BUF_LEN=32 855 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set 856 | # CONFIG_HTTPD_WS_SUPPORT is not set 857 | # CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set 858 | # end of HTTP Server 859 | 860 | # 861 | # ESP HTTPS OTA 862 | # 863 | # CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set 864 | # CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set 865 | # end of ESP HTTPS OTA 866 | 867 | # 868 | # ESP HTTPS server 869 | # 870 | # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set 871 | # end of ESP HTTPS server 872 | 873 | # 874 | # Hardware Settings 875 | # 876 | 877 | # 878 | # Chip revision 879 | # 880 | CONFIG_ESP32S3_REV_MIN_0=y 881 | # CONFIG_ESP32S3_REV_MIN_1 is not set 882 | # CONFIG_ESP32S3_REV_MIN_2 is not set 883 | CONFIG_ESP32S3_REV_MIN_FULL=0 884 | CONFIG_ESP_REV_MIN_FULL=0 885 | 886 | # 887 | # Maximum Supported ESP32-S3 Revision (Rev v0.99) 888 | # 889 | CONFIG_ESP32S3_REV_MAX_FULL=99 890 | CONFIG_ESP_REV_MAX_FULL=99 891 | CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 892 | CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=199 893 | 894 | # 895 | # Maximum Supported ESP32-S3 eFuse Block Revision (eFuse Block Rev v1.99) 896 | # 897 | # end of Chip revision 898 | 899 | # 900 | # MAC Config 901 | # 902 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y 903 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y 904 | CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y 905 | CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y 906 | CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y 907 | CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 908 | # CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set 909 | CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y 910 | CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 911 | # CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set 912 | # end of MAC Config 913 | 914 | # 915 | # Sleep Config 916 | # 917 | # CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set 918 | CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y 919 | CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y 920 | CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y 921 | CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y 922 | CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 923 | # CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set 924 | # CONFIG_ESP_SLEEP_DEBUG is not set 925 | CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y 926 | # end of Sleep Config 927 | 928 | # 929 | # RTC Clock Config 930 | # 931 | CONFIG_RTC_CLK_SRC_INT_RC=y 932 | # CONFIG_RTC_CLK_SRC_EXT_CRYS is not set 933 | # CONFIG_RTC_CLK_SRC_EXT_OSC is not set 934 | # CONFIG_RTC_CLK_SRC_INT_8MD256 is not set 935 | CONFIG_RTC_CLK_CAL_CYCLES=1024 936 | # end of RTC Clock Config 937 | 938 | # 939 | # Peripheral Control 940 | # 941 | CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y 942 | # end of Peripheral Control 943 | 944 | # 945 | # GDMA Configurations 946 | # 947 | CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y 948 | # CONFIG_GDMA_ISR_IRAM_SAFE is not set 949 | # CONFIG_GDMA_ENABLE_DEBUG_LOG is not set 950 | # end of GDMA Configurations 951 | 952 | # 953 | # Main XTAL Config 954 | # 955 | CONFIG_XTAL_FREQ_40=y 956 | CONFIG_XTAL_FREQ=40 957 | # end of Main XTAL Config 958 | 959 | CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y 960 | # end of Hardware Settings 961 | 962 | # 963 | # LCD and Touch Panel 964 | # 965 | 966 | # 967 | # LCD Touch Drivers are maintained in the IDF Component Registry 968 | # 969 | 970 | # 971 | # LCD Peripheral Configuration 972 | # 973 | # CONFIG_LCD_ENABLE_DEBUG_LOG is not set 974 | # CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set 975 | # CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set 976 | # end of LCD Peripheral Configuration 977 | # end of LCD and Touch Panel 978 | 979 | # 980 | # ESP NETIF Adapter 981 | # 982 | CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 983 | CONFIG_ESP_NETIF_TCPIP_LWIP=y 984 | # CONFIG_ESP_NETIF_LOOPBACK is not set 985 | CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y 986 | # CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set 987 | # CONFIG_ESP_NETIF_L2_TAP is not set 988 | # CONFIG_ESP_NETIF_BRIDGE_EN is not set 989 | # CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set 990 | # end of ESP NETIF Adapter 991 | 992 | # 993 | # Partition API Configuration 994 | # 995 | # end of Partition API Configuration 996 | 997 | # 998 | # PHY 999 | # 1000 | CONFIG_ESP_PHY_ENABLED=y 1001 | CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y 1002 | # CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set 1003 | CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 1004 | CONFIG_ESP_PHY_MAX_TX_POWER=20 1005 | # CONFIG_ESP_PHY_REDUCE_TX_POWER is not set 1006 | CONFIG_ESP_PHY_ENABLE_USB=y 1007 | # CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set 1008 | CONFIG_ESP_PHY_RF_CAL_PARTIAL=y 1009 | # CONFIG_ESP_PHY_RF_CAL_NONE is not set 1010 | # CONFIG_ESP_PHY_RF_CAL_FULL is not set 1011 | CONFIG_ESP_PHY_CALIBRATION_MODE=0 1012 | # CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set 1013 | # end of PHY 1014 | 1015 | # 1016 | # Power Management 1017 | # 1018 | # CONFIG_PM_ENABLE is not set 1019 | # CONFIG_PM_SLP_IRAM_OPT is not set 1020 | CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y 1021 | CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y 1022 | # end of Power Management 1023 | 1024 | # 1025 | # ESP PSRAM 1026 | # 1027 | # CONFIG_SPIRAM is not set 1028 | # end of ESP PSRAM 1029 | 1030 | # 1031 | # ESP Ringbuf 1032 | # 1033 | # CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set 1034 | # end of ESP Ringbuf 1035 | 1036 | # 1037 | # ESP System Settings 1038 | # 1039 | # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set 1040 | CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y 1041 | # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set 1042 | CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 1043 | 1044 | # 1045 | # Cache config 1046 | # 1047 | CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y 1048 | # CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set 1049 | CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000 1050 | # CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set 1051 | CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y 1052 | CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8 1053 | # CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set 1054 | CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y 1055 | CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32 1056 | # CONFIG_ESP32S3_DATA_CACHE_16KB is not set 1057 | CONFIG_ESP32S3_DATA_CACHE_32KB=y 1058 | # CONFIG_ESP32S3_DATA_CACHE_64KB is not set 1059 | CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000 1060 | # CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set 1061 | CONFIG_ESP32S3_DATA_CACHE_8WAYS=y 1062 | CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8 1063 | # CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set 1064 | CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y 1065 | # CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set 1066 | CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32 1067 | # end of Cache config 1068 | 1069 | # 1070 | # Memory 1071 | # 1072 | # CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set 1073 | # CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set 1074 | # end of Memory 1075 | 1076 | # 1077 | # Trace memory 1078 | # 1079 | # CONFIG_ESP32S3_TRAX is not set 1080 | CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0 1081 | # end of Trace memory 1082 | 1083 | # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set 1084 | CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y 1085 | # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set 1086 | # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set 1087 | CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 1088 | CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y 1089 | CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y 1090 | 1091 | # 1092 | # Memory protection 1093 | # 1094 | CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y 1095 | CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y 1096 | # end of Memory protection 1097 | 1098 | CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 1099 | CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 1100 | CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 1101 | CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y 1102 | # CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set 1103 | # CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set 1104 | CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 1105 | CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 1106 | CONFIG_ESP_CONSOLE_UART_DEFAULT=y 1107 | # CONFIG_ESP_CONSOLE_USB_CDC is not set 1108 | # CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set 1109 | # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set 1110 | # CONFIG_ESP_CONSOLE_NONE is not set 1111 | # CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set 1112 | CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y 1113 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y 1114 | CONFIG_ESP_CONSOLE_UART=y 1115 | CONFIG_ESP_CONSOLE_UART_NUM=0 1116 | CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 1117 | CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 1118 | CONFIG_ESP_INT_WDT=y 1119 | CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 1120 | CONFIG_ESP_INT_WDT_CHECK_CPU1=y 1121 | CONFIG_ESP_TASK_WDT_EN=y 1122 | CONFIG_ESP_TASK_WDT_INIT=y 1123 | # CONFIG_ESP_TASK_WDT_PANIC is not set 1124 | CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 1125 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 1126 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 1127 | # CONFIG_ESP_PANIC_HANDLER_IRAM is not set 1128 | # CONFIG_ESP_DEBUG_STUBS_ENABLE is not set 1129 | CONFIG_ESP_DEBUG_OCDAWARE=y 1130 | CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y 1131 | 1132 | # 1133 | # Brownout Detector 1134 | # 1135 | CONFIG_ESP_BROWNOUT_DET=y 1136 | CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y 1137 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set 1138 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set 1139 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set 1140 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set 1141 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set 1142 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set 1143 | CONFIG_ESP_BROWNOUT_DET_LVL=7 1144 | # end of Brownout Detector 1145 | 1146 | CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y 1147 | CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y 1148 | # end of ESP System Settings 1149 | 1150 | # 1151 | # IPC (Inter-Processor Call) 1152 | # 1153 | CONFIG_ESP_IPC_TASK_STACK_SIZE=1280 1154 | CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y 1155 | CONFIG_ESP_IPC_ISR_ENABLE=y 1156 | # end of IPC (Inter-Processor Call) 1157 | 1158 | # 1159 | # ESP Timer (High Resolution Timer) 1160 | # 1161 | # CONFIG_ESP_TIMER_PROFILING is not set 1162 | CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y 1163 | CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y 1164 | CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 1165 | CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 1166 | # CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set 1167 | CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 1168 | CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y 1169 | CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y 1170 | # CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set 1171 | CONFIG_ESP_TIMER_IMPL_SYSTIMER=y 1172 | # end of ESP Timer (High Resolution Timer) 1173 | 1174 | # 1175 | # Wi-Fi 1176 | # 1177 | CONFIG_ESP_WIFI_ENABLED=y 1178 | CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 1179 | CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 1180 | # CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set 1181 | CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y 1182 | CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 1183 | CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 1184 | CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y 1185 | # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set 1186 | CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 1187 | CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 1188 | # CONFIG_ESP_WIFI_CSI_ENABLED is not set 1189 | CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y 1190 | CONFIG_ESP_WIFI_TX_BA_WIN=6 1191 | CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y 1192 | CONFIG_ESP_WIFI_RX_BA_WIN=6 1193 | CONFIG_ESP_WIFI_NVS_ENABLED=y 1194 | CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y 1195 | # CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set 1196 | CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 1197 | CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 1198 | CONFIG_ESP_WIFI_IRAM_OPT=y 1199 | # CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set 1200 | CONFIG_ESP_WIFI_RX_IRAM_OPT=y 1201 | CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y 1202 | CONFIG_ESP_WIFI_ENABLE_SAE_PK=y 1203 | CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y 1204 | CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y 1205 | # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set 1206 | CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 1207 | CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 1208 | CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 1209 | # CONFIG_ESP_WIFI_FTM_ENABLE is not set 1210 | CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y 1211 | # CONFIG_ESP_WIFI_GCMP_SUPPORT is not set 1212 | CONFIG_ESP_WIFI_GMAC_SUPPORT=y 1213 | CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y 1214 | # CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set 1215 | CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 1216 | CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y 1217 | CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y 1218 | # CONFIG_ESP_WIFI_WAPI_PSK is not set 1219 | # CONFIG_ESP_WIFI_SUITE_B_192 is not set 1220 | # CONFIG_ESP_WIFI_11KV_SUPPORT is not set 1221 | # CONFIG_ESP_WIFI_MBO_SUPPORT is not set 1222 | # CONFIG_ESP_WIFI_DPP_SUPPORT is not set 1223 | # CONFIG_ESP_WIFI_11R_SUPPORT is not set 1224 | # CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set 1225 | 1226 | # 1227 | # WPS Configuration Options 1228 | # 1229 | # CONFIG_ESP_WIFI_WPS_STRICT is not set 1230 | # CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set 1231 | # end of WPS Configuration Options 1232 | 1233 | # CONFIG_ESP_WIFI_DEBUG_PRINT is not set 1234 | # CONFIG_ESP_WIFI_TESTING_OPTIONS is not set 1235 | CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y 1236 | # CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set 1237 | # end of Wi-Fi 1238 | 1239 | # 1240 | # Core dump 1241 | # 1242 | # CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set 1243 | # CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set 1244 | CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y 1245 | # end of Core dump 1246 | 1247 | # 1248 | # FAT Filesystem support 1249 | # 1250 | CONFIG_FATFS_VOLUME_COUNT=2 1251 | CONFIG_FATFS_LFN_NONE=y 1252 | # CONFIG_FATFS_LFN_HEAP is not set 1253 | # CONFIG_FATFS_LFN_STACK is not set 1254 | # CONFIG_FATFS_SECTOR_512 is not set 1255 | CONFIG_FATFS_SECTOR_4096=y 1256 | # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set 1257 | CONFIG_FATFS_CODEPAGE_437=y 1258 | # CONFIG_FATFS_CODEPAGE_720 is not set 1259 | # CONFIG_FATFS_CODEPAGE_737 is not set 1260 | # CONFIG_FATFS_CODEPAGE_771 is not set 1261 | # CONFIG_FATFS_CODEPAGE_775 is not set 1262 | # CONFIG_FATFS_CODEPAGE_850 is not set 1263 | # CONFIG_FATFS_CODEPAGE_852 is not set 1264 | # CONFIG_FATFS_CODEPAGE_855 is not set 1265 | # CONFIG_FATFS_CODEPAGE_857 is not set 1266 | # CONFIG_FATFS_CODEPAGE_860 is not set 1267 | # CONFIG_FATFS_CODEPAGE_861 is not set 1268 | # CONFIG_FATFS_CODEPAGE_862 is not set 1269 | # CONFIG_FATFS_CODEPAGE_863 is not set 1270 | # CONFIG_FATFS_CODEPAGE_864 is not set 1271 | # CONFIG_FATFS_CODEPAGE_865 is not set 1272 | # CONFIG_FATFS_CODEPAGE_866 is not set 1273 | # CONFIG_FATFS_CODEPAGE_869 is not set 1274 | # CONFIG_FATFS_CODEPAGE_932 is not set 1275 | # CONFIG_FATFS_CODEPAGE_936 is not set 1276 | # CONFIG_FATFS_CODEPAGE_949 is not set 1277 | # CONFIG_FATFS_CODEPAGE_950 is not set 1278 | CONFIG_FATFS_CODEPAGE=437 1279 | CONFIG_FATFS_FS_LOCK=0 1280 | CONFIG_FATFS_TIMEOUT_MS=10000 1281 | CONFIG_FATFS_PER_FILE_CACHE=y 1282 | # CONFIG_FATFS_USE_FASTSEEK is not set 1283 | CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 1284 | # CONFIG_FATFS_IMMEDIATE_FSYNC is not set 1285 | # CONFIG_FATFS_USE_LABEL is not set 1286 | CONFIG_FATFS_LINK_LOCK=y 1287 | # end of FAT Filesystem support 1288 | 1289 | # 1290 | # FreeRTOS 1291 | # 1292 | 1293 | # 1294 | # Kernel 1295 | # 1296 | # CONFIG_FREERTOS_SMP is not set 1297 | # CONFIG_FREERTOS_UNICORE is not set 1298 | CONFIG_FREERTOS_HZ=1000 1299 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set 1300 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set 1301 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 1302 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 1303 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 1304 | # CONFIG_FREERTOS_USE_IDLE_HOOK is not set 1305 | # CONFIG_FREERTOS_USE_TICK_HOOK is not set 1306 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 1307 | # CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set 1308 | CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" 1309 | # CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set 1310 | # CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set 1311 | CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y 1312 | CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF 1313 | CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 1314 | CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 1315 | CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 1316 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 1317 | CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 1318 | # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set 1319 | # CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set 1320 | # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set 1321 | # CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set 1322 | # end of Kernel 1323 | 1324 | # 1325 | # Port 1326 | # 1327 | CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y 1328 | # CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set 1329 | CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y 1330 | # CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set 1331 | # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set 1332 | CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y 1333 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 1334 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 1335 | CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y 1336 | CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y 1337 | # CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set 1338 | CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y 1339 | # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set 1340 | # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set 1341 | # end of Port 1342 | 1343 | CONFIG_FREERTOS_PORT=y 1344 | CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF 1345 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y 1346 | CONFIG_FREERTOS_DEBUG_OCDAWARE=y 1347 | CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y 1348 | CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y 1349 | CONFIG_FREERTOS_NUMBER_OF_CORES=2 1350 | # end of FreeRTOS 1351 | 1352 | # 1353 | # Hardware Abstraction Layer (HAL) and Low Level (LL) 1354 | # 1355 | CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y 1356 | # CONFIG_HAL_ASSERTION_DISABLE is not set 1357 | # CONFIG_HAL_ASSERTION_SILENT is not set 1358 | # CONFIG_HAL_ASSERTION_ENABLE is not set 1359 | CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 1360 | CONFIG_HAL_WDT_USE_ROM_IMPL=y 1361 | CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y 1362 | CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y 1363 | # CONFIG_HAL_ECDSA_GEN_SIG_CM is not set 1364 | # end of Hardware Abstraction Layer (HAL) and Low Level (LL) 1365 | 1366 | # 1367 | # Heap memory debugging 1368 | # 1369 | CONFIG_HEAP_POISONING_DISABLED=y 1370 | # CONFIG_HEAP_POISONING_LIGHT is not set 1371 | # CONFIG_HEAP_POISONING_COMPREHENSIVE is not set 1372 | CONFIG_HEAP_TRACING_OFF=y 1373 | # CONFIG_HEAP_TRACING_STANDALONE is not set 1374 | # CONFIG_HEAP_TRACING_TOHOST is not set 1375 | # CONFIG_HEAP_USE_HOOKS is not set 1376 | # CONFIG_HEAP_TASK_TRACKING is not set 1377 | # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set 1378 | # CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set 1379 | # end of Heap memory debugging 1380 | 1381 | # 1382 | # Log output 1383 | # 1384 | # CONFIG_LOG_DEFAULT_LEVEL_NONE is not set 1385 | # CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set 1386 | # CONFIG_LOG_DEFAULT_LEVEL_WARN is not set 1387 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 1388 | # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set 1389 | # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set 1390 | CONFIG_LOG_DEFAULT_LEVEL=3 1391 | CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y 1392 | # CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set 1393 | # CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set 1394 | CONFIG_LOG_MAXIMUM_LEVEL=3 1395 | # CONFIG_LOG_MASTER_LEVEL is not set 1396 | CONFIG_LOG_COLORS=y 1397 | CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y 1398 | # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set 1399 | # end of Log output 1400 | 1401 | # 1402 | # LWIP 1403 | # 1404 | CONFIG_LWIP_ENABLE=y 1405 | CONFIG_LWIP_LOCAL_HOSTNAME="espressif" 1406 | # CONFIG_LWIP_NETIF_API is not set 1407 | CONFIG_LWIP_TCPIP_TASK_PRIO=18 1408 | # CONFIG_LWIP_TCPIP_CORE_LOCKING is not set 1409 | # CONFIG_LWIP_CHECK_THREAD_SAFETY is not set 1410 | CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y 1411 | # CONFIG_LWIP_L2_TO_L3_COPY is not set 1412 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set 1413 | # CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set 1414 | CONFIG_LWIP_TIMERS_ONDEMAND=y 1415 | CONFIG_LWIP_ND6=y 1416 | # CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set 1417 | CONFIG_LWIP_MAX_SOCKETS=10 1418 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set 1419 | # CONFIG_LWIP_SO_LINGER is not set 1420 | CONFIG_LWIP_SO_REUSE=y 1421 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 1422 | # CONFIG_LWIP_SO_RCVBUF is not set 1423 | # CONFIG_LWIP_NETBUF_RECVINFO is not set 1424 | CONFIG_LWIP_IP_DEFAULT_TTL=64 1425 | CONFIG_LWIP_IP4_FRAG=y 1426 | CONFIG_LWIP_IP6_FRAG=y 1427 | # CONFIG_LWIP_IP4_REASSEMBLY is not set 1428 | # CONFIG_LWIP_IP6_REASSEMBLY is not set 1429 | CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 1430 | # CONFIG_LWIP_IP_FORWARD is not set 1431 | # CONFIG_LWIP_STATS is not set 1432 | CONFIG_LWIP_ESP_GRATUITOUS_ARP=y 1433 | CONFIG_LWIP_GARP_TMR_INTERVAL=60 1434 | CONFIG_LWIP_ESP_MLDV6_REPORT=y 1435 | CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 1436 | CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 1437 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 1438 | # CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set 1439 | CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y 1440 | # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set 1441 | CONFIG_LWIP_DHCP_OPTIONS_LEN=68 1442 | CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 1443 | CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 1444 | 1445 | # 1446 | # DHCP server 1447 | # 1448 | CONFIG_LWIP_DHCPS=y 1449 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 1450 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 1451 | CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y 1452 | # end of DHCP server 1453 | 1454 | # CONFIG_LWIP_AUTOIP is not set 1455 | CONFIG_LWIP_IPV4=y 1456 | CONFIG_LWIP_IPV6=y 1457 | # CONFIG_LWIP_IPV6_AUTOCONFIG is not set 1458 | CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 1459 | # CONFIG_LWIP_IPV6_FORWARD is not set 1460 | # CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set 1461 | CONFIG_LWIP_NETIF_LOOPBACK=y 1462 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 1463 | 1464 | # 1465 | # TCP 1466 | # 1467 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 1468 | CONFIG_LWIP_MAX_LISTENING_TCP=16 1469 | CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y 1470 | CONFIG_LWIP_TCP_MAXRTX=12 1471 | CONFIG_LWIP_TCP_SYNMAXRTX=12 1472 | CONFIG_LWIP_TCP_MSS=1440 1473 | CONFIG_LWIP_TCP_TMR_INTERVAL=250 1474 | CONFIG_LWIP_TCP_MSL=60000 1475 | CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 1476 | CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 1477 | CONFIG_LWIP_TCP_WND_DEFAULT=5760 1478 | CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 1479 | CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 1480 | CONFIG_LWIP_TCP_QUEUE_OOSEQ=y 1481 | CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 1482 | CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 1483 | # CONFIG_LWIP_TCP_SACK_OUT is not set 1484 | CONFIG_LWIP_TCP_OVERSIZE_MSS=y 1485 | # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set 1486 | # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set 1487 | CONFIG_LWIP_TCP_RTO_TIME=1500 1488 | # end of TCP 1489 | 1490 | # 1491 | # UDP 1492 | # 1493 | CONFIG_LWIP_MAX_UDP_PCBS=16 1494 | CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 1495 | # end of UDP 1496 | 1497 | # 1498 | # Checksums 1499 | # 1500 | # CONFIG_LWIP_CHECKSUM_CHECK_IP is not set 1501 | # CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set 1502 | CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y 1503 | # end of Checksums 1504 | 1505 | CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 1506 | CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 1507 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set 1508 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set 1509 | CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF 1510 | CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 1511 | CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 1512 | CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 1513 | # CONFIG_LWIP_PPP_SUPPORT is not set 1514 | CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 1515 | CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 1516 | # CONFIG_LWIP_SLIP_SUPPORT is not set 1517 | 1518 | # 1519 | # ICMP 1520 | # 1521 | CONFIG_LWIP_ICMP=y 1522 | # CONFIG_LWIP_MULTICAST_PING is not set 1523 | # CONFIG_LWIP_BROADCAST_PING is not set 1524 | # end of ICMP 1525 | 1526 | # 1527 | # LWIP RAW API 1528 | # 1529 | CONFIG_LWIP_MAX_RAW_PCBS=16 1530 | # end of LWIP RAW API 1531 | 1532 | # 1533 | # SNTP 1534 | # 1535 | CONFIG_LWIP_SNTP_MAX_SERVERS=1 1536 | # CONFIG_LWIP_DHCP_GET_NTP_SRV is not set 1537 | CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 1538 | CONFIG_LWIP_SNTP_STARTUP_DELAY=y 1539 | CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 1540 | # end of SNTP 1541 | 1542 | # 1543 | # DNS 1544 | # 1545 | CONFIG_LWIP_DNS_MAX_HOST_IP=1 1546 | CONFIG_LWIP_DNS_MAX_SERVERS=3 1547 | # CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set 1548 | # CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set 1549 | # end of DNS 1550 | 1551 | CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 1552 | CONFIG_LWIP_ESP_LWIP_ASSERT=y 1553 | 1554 | # 1555 | # Hooks 1556 | # 1557 | # CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set 1558 | CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y 1559 | # CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set 1560 | CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y 1561 | # CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set 1562 | # CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set 1563 | CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y 1564 | # CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set 1565 | # CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set 1566 | CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y 1567 | # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set 1568 | # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set 1569 | CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y 1570 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set 1571 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set 1572 | CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y 1573 | # CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set 1574 | # CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set 1575 | CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y 1576 | # CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set 1577 | # end of Hooks 1578 | 1579 | # CONFIG_LWIP_DEBUG is not set 1580 | # end of LWIP 1581 | 1582 | # 1583 | # mbedTLS 1584 | # 1585 | CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y 1586 | # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set 1587 | # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set 1588 | CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y 1589 | CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 1590 | CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 1591 | # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set 1592 | # CONFIG_MBEDTLS_DEBUG is not set 1593 | 1594 | # 1595 | # mbedTLS v3.x related 1596 | # 1597 | # CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set 1598 | # CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set 1599 | # CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set 1600 | # CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set 1601 | CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y 1602 | CONFIG_MBEDTLS_PKCS7_C=y 1603 | # end of mbedTLS v3.x related 1604 | 1605 | # 1606 | # Certificate Bundle 1607 | # 1608 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y 1609 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y 1610 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set 1611 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set 1612 | # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set 1613 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set 1614 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 1615 | # end of Certificate Bundle 1616 | 1617 | # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set 1618 | CONFIG_MBEDTLS_CMAC_C=y 1619 | CONFIG_MBEDTLS_HARDWARE_AES=y 1620 | CONFIG_MBEDTLS_AES_USE_INTERRUPT=y 1621 | CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0 1622 | CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y 1623 | CONFIG_MBEDTLS_HARDWARE_MPI=y 1624 | # CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set 1625 | CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y 1626 | CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0 1627 | CONFIG_MBEDTLS_HARDWARE_SHA=y 1628 | CONFIG_MBEDTLS_ROM_MD5=y 1629 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set 1630 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set 1631 | CONFIG_MBEDTLS_HAVE_TIME=y 1632 | # CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set 1633 | # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set 1634 | CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y 1635 | CONFIG_MBEDTLS_SHA512_C=y 1636 | # CONFIG_MBEDTLS_SHA3_C is not set 1637 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 1638 | # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set 1639 | # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set 1640 | # CONFIG_MBEDTLS_TLS_DISABLED is not set 1641 | CONFIG_MBEDTLS_TLS_SERVER=y 1642 | CONFIG_MBEDTLS_TLS_CLIENT=y 1643 | CONFIG_MBEDTLS_TLS_ENABLED=y 1644 | 1645 | # 1646 | # TLS Key Exchange Methods 1647 | # 1648 | # CONFIG_MBEDTLS_PSK_MODES is not set 1649 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 1650 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 1651 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 1652 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 1653 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 1654 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 1655 | # end of TLS Key Exchange Methods 1656 | 1657 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 1658 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 1659 | # CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set 1660 | # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set 1661 | CONFIG_MBEDTLS_SSL_ALPN=y 1662 | CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y 1663 | CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y 1664 | 1665 | # 1666 | # Symmetric Ciphers 1667 | # 1668 | CONFIG_MBEDTLS_AES_C=y 1669 | # CONFIG_MBEDTLS_CAMELLIA_C is not set 1670 | # CONFIG_MBEDTLS_DES_C is not set 1671 | # CONFIG_MBEDTLS_BLOWFISH_C is not set 1672 | # CONFIG_MBEDTLS_XTEA_C is not set 1673 | CONFIG_MBEDTLS_CCM_C=y 1674 | CONFIG_MBEDTLS_GCM_C=y 1675 | # CONFIG_MBEDTLS_NIST_KW_C is not set 1676 | # end of Symmetric Ciphers 1677 | 1678 | # CONFIG_MBEDTLS_RIPEMD160_C is not set 1679 | 1680 | # 1681 | # Certificates 1682 | # 1683 | CONFIG_MBEDTLS_PEM_PARSE_C=y 1684 | CONFIG_MBEDTLS_PEM_WRITE_C=y 1685 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 1686 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 1687 | # end of Certificates 1688 | 1689 | CONFIG_MBEDTLS_ECP_C=y 1690 | # CONFIG_MBEDTLS_DHM_C is not set 1691 | CONFIG_MBEDTLS_ECDH_C=y 1692 | CONFIG_MBEDTLS_ECDSA_C=y 1693 | # CONFIG_MBEDTLS_ECJPAKE_C is not set 1694 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 1695 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 1696 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 1697 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 1698 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 1699 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 1700 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 1701 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 1702 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 1703 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 1704 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 1705 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 1706 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 1707 | # CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set 1708 | # CONFIG_MBEDTLS_POLY1305_C is not set 1709 | # CONFIG_MBEDTLS_CHACHA20_C is not set 1710 | # CONFIG_MBEDTLS_HKDF_C is not set 1711 | # CONFIG_MBEDTLS_THREADING_C is not set 1712 | CONFIG_MBEDTLS_ERROR_STRINGS=y 1713 | CONFIG_MBEDTLS_FS_IO=y 1714 | # end of mbedTLS 1715 | 1716 | # 1717 | # ESP-MQTT Configurations 1718 | # 1719 | CONFIG_MQTT_PROTOCOL_311=y 1720 | # CONFIG_MQTT_PROTOCOL_5 is not set 1721 | CONFIG_MQTT_TRANSPORT_SSL=y 1722 | CONFIG_MQTT_TRANSPORT_WEBSOCKET=y 1723 | CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y 1724 | # CONFIG_MQTT_MSG_ID_INCREMENTAL is not set 1725 | # CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set 1726 | # CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set 1727 | # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set 1728 | # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set 1729 | # CONFIG_MQTT_CUSTOM_OUTBOX is not set 1730 | # end of ESP-MQTT Configurations 1731 | 1732 | # 1733 | # Newlib 1734 | # 1735 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 1736 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set 1737 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set 1738 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set 1739 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set 1740 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 1741 | # CONFIG_NEWLIB_NANO_FORMAT is not set 1742 | CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y 1743 | # CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set 1744 | # CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set 1745 | # CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set 1746 | # end of Newlib 1747 | 1748 | # 1749 | # NVS 1750 | # 1751 | # CONFIG_NVS_ENCRYPTION is not set 1752 | # CONFIG_NVS_ASSERT_ERROR_CHECK is not set 1753 | # CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set 1754 | # end of NVS 1755 | 1756 | # 1757 | # OpenThread 1758 | # 1759 | # CONFIG_OPENTHREAD_ENABLED is not set 1760 | 1761 | # 1762 | # Thread Operational Dataset 1763 | # 1764 | CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" 1765 | CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64" 1766 | CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 1767 | CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 1768 | CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" 1769 | CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" 1770 | CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" 1771 | # end of Thread Operational Dataset 1772 | 1773 | CONFIG_OPENTHREAD_XTAL_ACCURACY=130 1774 | # CONFIG_OPENTHREAD_SPINEL_ONLY is not set 1775 | CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE=y 1776 | 1777 | # 1778 | # Thread Address Query Config 1779 | # 1780 | # end of Thread Address Query Config 1781 | # end of OpenThread 1782 | 1783 | # 1784 | # Protocomm 1785 | # 1786 | CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y 1787 | CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y 1788 | CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y 1789 | # end of Protocomm 1790 | 1791 | # 1792 | # PThreads 1793 | # 1794 | CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 1795 | CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1796 | CONFIG_PTHREAD_STACK_MIN=768 1797 | CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y 1798 | # CONFIG_PTHREAD_DEFAULT_CORE_0 is not set 1799 | # CONFIG_PTHREAD_DEFAULT_CORE_1 is not set 1800 | CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 1801 | CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" 1802 | # end of PThreads 1803 | 1804 | # 1805 | # MMU Config 1806 | # 1807 | CONFIG_MMU_PAGE_SIZE_64KB=y 1808 | CONFIG_MMU_PAGE_MODE="64KB" 1809 | CONFIG_MMU_PAGE_SIZE=0x10000 1810 | # end of MMU Config 1811 | 1812 | # 1813 | # Main Flash configuration 1814 | # 1815 | 1816 | # 1817 | # SPI Flash behavior when brownout 1818 | # 1819 | CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y 1820 | CONFIG_SPI_FLASH_BROWNOUT_RESET=y 1821 | # end of SPI Flash behavior when brownout 1822 | 1823 | # 1824 | # Optional and Experimental Features (READ DOCS FIRST) 1825 | # 1826 | 1827 | # 1828 | # Features here require specific hardware (READ DOCS FIRST!) 1829 | # 1830 | # CONFIG_SPI_FLASH_HPM_ENA is not set 1831 | CONFIG_SPI_FLASH_HPM_AUTO=y 1832 | # CONFIG_SPI_FLASH_HPM_DIS is not set 1833 | CONFIG_SPI_FLASH_HPM_ON=y 1834 | CONFIG_SPI_FLASH_HPM_DC_AUTO=y 1835 | # CONFIG_SPI_FLASH_HPM_DC_DISABLE is not set 1836 | CONFIG_SPI_FLASH_SUSPEND_QVL_SUPPORTED=y 1837 | # CONFIG_SPI_FLASH_AUTO_SUSPEND is not set 1838 | CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 1839 | # CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set 1840 | # end of Optional and Experimental Features (READ DOCS FIRST) 1841 | # end of Main Flash configuration 1842 | 1843 | # 1844 | # SPI Flash driver 1845 | # 1846 | # CONFIG_SPI_FLASH_VERIFY_WRITE is not set 1847 | # CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set 1848 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 1849 | # CONFIG_SPI_FLASH_ROM_IMPL is not set 1850 | CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y 1851 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set 1852 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set 1853 | # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set 1854 | CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y 1855 | CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 1856 | CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 1857 | CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 1858 | # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set 1859 | # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set 1860 | # CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set 1861 | 1862 | # 1863 | # Auto-detect flash chips 1864 | # 1865 | CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y 1866 | CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y 1867 | CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y 1868 | CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y 1869 | CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y 1870 | CONFIG_SPI_FLASH_VENDOR_BOYA_SUPPORTED=y 1871 | CONFIG_SPI_FLASH_VENDOR_TH_SUPPORTED=y 1872 | CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y 1873 | CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y 1874 | CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y 1875 | CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y 1876 | CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y 1877 | CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y 1878 | CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y 1879 | # end of Auto-detect flash chips 1880 | 1881 | CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y 1882 | # end of SPI Flash driver 1883 | 1884 | # 1885 | # SPIFFS Configuration 1886 | # 1887 | CONFIG_SPIFFS_MAX_PARTITIONS=3 1888 | 1889 | # 1890 | # SPIFFS Cache Configuration 1891 | # 1892 | CONFIG_SPIFFS_CACHE=y 1893 | CONFIG_SPIFFS_CACHE_WR=y 1894 | # CONFIG_SPIFFS_CACHE_STATS is not set 1895 | # end of SPIFFS Cache Configuration 1896 | 1897 | CONFIG_SPIFFS_PAGE_CHECK=y 1898 | CONFIG_SPIFFS_GC_MAX_RUNS=10 1899 | # CONFIG_SPIFFS_GC_STATS is not set 1900 | CONFIG_SPIFFS_PAGE_SIZE=256 1901 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 1902 | # CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set 1903 | CONFIG_SPIFFS_USE_MAGIC=y 1904 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 1905 | CONFIG_SPIFFS_META_LENGTH=4 1906 | CONFIG_SPIFFS_USE_MTIME=y 1907 | 1908 | # 1909 | # Debug Configuration 1910 | # 1911 | # CONFIG_SPIFFS_DBG is not set 1912 | # CONFIG_SPIFFS_API_DBG is not set 1913 | # CONFIG_SPIFFS_GC_DBG is not set 1914 | # CONFIG_SPIFFS_CACHE_DBG is not set 1915 | # CONFIG_SPIFFS_CHECK_DBG is not set 1916 | # CONFIG_SPIFFS_TEST_VISUALISATION is not set 1917 | # end of Debug Configuration 1918 | # end of SPIFFS Configuration 1919 | 1920 | # 1921 | # TCP Transport 1922 | # 1923 | 1924 | # 1925 | # Websocket 1926 | # 1927 | CONFIG_WS_TRANSPORT=y 1928 | CONFIG_WS_BUFFER_SIZE=1024 1929 | # CONFIG_WS_DYNAMIC_BUFFER is not set 1930 | # end of Websocket 1931 | # end of TCP Transport 1932 | 1933 | # 1934 | # Ultra Low Power (ULP) Co-processor 1935 | # 1936 | # CONFIG_ULP_COPROC_ENABLED is not set 1937 | 1938 | # 1939 | # ULP Debugging Options 1940 | # 1941 | # end of ULP Debugging Options 1942 | # end of Ultra Low Power (ULP) Co-processor 1943 | 1944 | # 1945 | # Unity unit testing library 1946 | # 1947 | CONFIG_UNITY_ENABLE_FLOAT=y 1948 | CONFIG_UNITY_ENABLE_DOUBLE=y 1949 | # CONFIG_UNITY_ENABLE_64BIT is not set 1950 | # CONFIG_UNITY_ENABLE_COLOR is not set 1951 | CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y 1952 | # CONFIG_UNITY_ENABLE_FIXTURE is not set 1953 | # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set 1954 | # end of Unity unit testing library 1955 | 1956 | # 1957 | # USB-OTG 1958 | # 1959 | CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256 1960 | CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y 1961 | # CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set 1962 | # CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set 1963 | 1964 | # 1965 | # Hub Driver Configuration 1966 | # 1967 | 1968 | # 1969 | # Root Port configuration 1970 | # 1971 | CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250 1972 | CONFIG_USB_HOST_RESET_HOLD_MS=30 1973 | CONFIG_USB_HOST_RESET_RECOVERY_MS=30 1974 | CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10 1975 | # end of Root Port configuration 1976 | 1977 | # CONFIG_USB_HOST_HUBS_SUPPORTED is not set 1978 | # end of Hub Driver Configuration 1979 | 1980 | # CONFIG_USB_HOST_ENABLE_ENUM_FILTER_CALLBACK is not set 1981 | CONFIG_USB_OTG_SUPPORTED=y 1982 | # end of USB-OTG 1983 | 1984 | # 1985 | # Virtual file system 1986 | # 1987 | CONFIG_VFS_SUPPORT_IO=y 1988 | CONFIG_VFS_SUPPORT_DIR=y 1989 | CONFIG_VFS_SUPPORT_SELECT=y 1990 | CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1991 | # CONFIG_VFS_SELECT_IN_RAM is not set 1992 | CONFIG_VFS_SUPPORT_TERMIOS=y 1993 | CONFIG_VFS_MAX_COUNT=8 1994 | 1995 | # 1996 | # Host File System I/O (Semihosting) 1997 | # 1998 | CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1999 | # end of Host File System I/O (Semihosting) 2000 | # end of Virtual file system 2001 | 2002 | # 2003 | # Wear Levelling 2004 | # 2005 | # CONFIG_WL_SECTOR_SIZE_512 is not set 2006 | CONFIG_WL_SECTOR_SIZE_4096=y 2007 | CONFIG_WL_SECTOR_SIZE=4096 2008 | # end of Wear Levelling 2009 | 2010 | # 2011 | # Wi-Fi Provisioning Manager 2012 | # 2013 | CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 2014 | CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 2015 | CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y 2016 | # CONFIG_WIFI_PROV_STA_FAST_SCAN is not set 2017 | # end of Wi-Fi Provisioning Manager 2018 | # end of Component config 2019 | 2020 | # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set 2021 | 2022 | # Deprecated options for backward compatibility 2023 | # CONFIG_APP_BUILD_TYPE_ELF_RAM is not set 2024 | # CONFIG_NO_BLOBS is not set 2025 | # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set 2026 | # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set 2027 | # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set 2028 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 2029 | # CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set 2030 | # CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set 2031 | CONFIG_LOG_BOOTLOADER_LEVEL=3 2032 | # CONFIG_APP_ROLLBACK_ENABLE is not set 2033 | # CONFIG_FLASH_ENCRYPTION_ENABLED is not set 2034 | # CONFIG_FLASHMODE_QIO is not set 2035 | # CONFIG_FLASHMODE_QOUT is not set 2036 | CONFIG_FLASHMODE_DIO=y 2037 | # CONFIG_FLASHMODE_DOUT is not set 2038 | CONFIG_MONITOR_BAUD=115200 2039 | CONFIG_OPTIMIZATION_LEVEL_DEBUG=y 2040 | CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y 2041 | CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y 2042 | # CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set 2043 | # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set 2044 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 2045 | # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set 2046 | # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set 2047 | CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 2048 | # CONFIG_CXX_EXCEPTIONS is not set 2049 | CONFIG_STACK_CHECK_NONE=y 2050 | # CONFIG_STACK_CHECK_NORM is not set 2051 | # CONFIG_STACK_CHECK_STRONG is not set 2052 | # CONFIG_STACK_CHECK_ALL is not set 2053 | # CONFIG_WARN_WRITE_STRINGS is not set 2054 | # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set 2055 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 2056 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 2057 | # CONFIG_EXTERNAL_COEX_ENABLE is not set 2058 | # CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set 2059 | # CONFIG_MCPWM_ISR_IN_IRAM is not set 2060 | # CONFIG_EVENT_LOOP_PROFILING is not set 2061 | CONFIG_POST_EVENTS_FROM_ISR=y 2062 | CONFIG_POST_EVENTS_FROM_IRAM_ISR=y 2063 | CONFIG_GDBSTUB_SUPPORT_TASKS=y 2064 | CONFIG_GDBSTUB_MAX_TASKS=32 2065 | # CONFIG_OTA_ALLOW_HTTP is not set 2066 | # CONFIG_ESP_SYSTEM_PD_FLASH is not set 2067 | CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 2068 | CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 2069 | CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y 2070 | # CONFIG_ESP32S3_RTC_CLK_SRC_EXT_CRYS is not set 2071 | # CONFIG_ESP32S3_RTC_CLK_SRC_EXT_OSC is not set 2072 | # CONFIG_ESP32S3_RTC_CLK_SRC_INT_8MD256 is not set 2073 | CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=1024 2074 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 2075 | # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set 2076 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 2077 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 2078 | # CONFIG_REDUCE_PHY_TX_POWER is not set 2079 | # CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set 2080 | CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y 2081 | CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y 2082 | # CONFIG_ESP32S3_SPIRAM_SUPPORT is not set 2083 | # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set 2084 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y 2085 | # CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set 2086 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160 2087 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 2088 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 2089 | CONFIG_MAIN_TASK_STACK_SIZE=3584 2090 | CONFIG_CONSOLE_UART_DEFAULT=y 2091 | # CONFIG_CONSOLE_UART_CUSTOM is not set 2092 | # CONFIG_CONSOLE_UART_NONE is not set 2093 | # CONFIG_ESP_CONSOLE_UART_NONE is not set 2094 | CONFIG_CONSOLE_UART=y 2095 | CONFIG_CONSOLE_UART_NUM=0 2096 | CONFIG_CONSOLE_UART_BAUDRATE=115200 2097 | CONFIG_INT_WDT=y 2098 | CONFIG_INT_WDT_TIMEOUT_MS=300 2099 | CONFIG_INT_WDT_CHECK_CPU1=y 2100 | CONFIG_TASK_WDT=y 2101 | CONFIG_ESP_TASK_WDT=y 2102 | # CONFIG_TASK_WDT_PANIC is not set 2103 | CONFIG_TASK_WDT_TIMEOUT_S=5 2104 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 2105 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 2106 | # CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set 2107 | CONFIG_ESP32S3_DEBUG_OCDAWARE=y 2108 | CONFIG_BROWNOUT_DET=y 2109 | CONFIG_ESP32S3_BROWNOUT_DET=y 2110 | CONFIG_ESP32S3_BROWNOUT_DET=y 2111 | CONFIG_BROWNOUT_DET_LVL_SEL_7=y 2112 | CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y 2113 | # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set 2114 | # CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_6 is not set 2115 | # CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set 2116 | # CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_5 is not set 2117 | # CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set 2118 | # CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_4 is not set 2119 | # CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set 2120 | # CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_3 is not set 2121 | # CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set 2122 | # CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_2 is not set 2123 | # CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set 2124 | # CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_1 is not set 2125 | CONFIG_BROWNOUT_DET_LVL=7 2126 | CONFIG_ESP32S3_BROWNOUT_DET_LVL=7 2127 | CONFIG_IPC_TASK_STACK_SIZE=1280 2128 | CONFIG_TIMER_TASK_STACK_SIZE=3584 2129 | CONFIG_ESP32_WIFI_ENABLED=y 2130 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 2131 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 2132 | # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set 2133 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 2134 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 2135 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 2136 | # CONFIG_ESP32_WIFI_CSI_ENABLED is not set 2137 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 2138 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 2139 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 2140 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 2141 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 2142 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 2143 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 2144 | CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y 2145 | # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set 2146 | CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 2147 | CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 2148 | CONFIG_ESP32_WIFI_IRAM_OPT=y 2149 | CONFIG_ESP32_WIFI_RX_IRAM_OPT=y 2150 | CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y 2151 | CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y 2152 | CONFIG_WPA_MBEDTLS_CRYPTO=y 2153 | CONFIG_WPA_MBEDTLS_TLS_CLIENT=y 2154 | # CONFIG_WPA_WAPI_PSK is not set 2155 | # CONFIG_WPA_SUITE_B_192 is not set 2156 | # CONFIG_WPA_11KV_SUPPORT is not set 2157 | # CONFIG_WPA_MBO_SUPPORT is not set 2158 | # CONFIG_WPA_DPP_SUPPORT is not set 2159 | # CONFIG_WPA_11R_SUPPORT is not set 2160 | # CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set 2161 | # CONFIG_WPA_WPS_STRICT is not set 2162 | # CONFIG_WPA_DEBUG_PRINT is not set 2163 | # CONFIG_WPA_TESTING_OPTIONS is not set 2164 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set 2165 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set 2166 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 2167 | CONFIG_TIMER_TASK_PRIORITY=1 2168 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 2169 | CONFIG_TIMER_QUEUE_LENGTH=10 2170 | # CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set 2171 | # CONFIG_HAL_ASSERTION_SILIENT is not set 2172 | # CONFIG_L2_TO_L3_COPY is not set 2173 | CONFIG_ESP_GRATUITOUS_ARP=y 2174 | CONFIG_GARP_TMR_INTERVAL=60 2175 | CONFIG_TCPIP_RECVMBOX_SIZE=32 2176 | CONFIG_TCP_MAXRTX=12 2177 | CONFIG_TCP_SYNMAXRTX=12 2178 | CONFIG_TCP_MSS=1440 2179 | CONFIG_TCP_MSL=60000 2180 | CONFIG_TCP_SND_BUF_DEFAULT=5760 2181 | CONFIG_TCP_WND_DEFAULT=5760 2182 | CONFIG_TCP_RECVMBOX_SIZE=6 2183 | CONFIG_TCP_QUEUE_OOSEQ=y 2184 | CONFIG_TCP_OVERSIZE_MSS=y 2185 | # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set 2186 | # CONFIG_TCP_OVERSIZE_DISABLE is not set 2187 | CONFIG_UDP_RECVMBOX_SIZE=6 2188 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 2189 | CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 2190 | # CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set 2191 | # CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set 2192 | CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF 2193 | # CONFIG_PPP_SUPPORT is not set 2194 | CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER=y 2195 | CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y 2196 | # CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC is not set 2197 | # CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER is not set 2198 | # CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 is not set 2199 | # CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE is not set 2200 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 2201 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 2202 | CONFIG_ESP32_PTHREAD_STACK_MIN=768 2203 | CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y 2204 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set 2205 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set 2206 | CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 2207 | CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" 2208 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 2209 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set 2210 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set 2211 | CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y 2212 | CONFIG_SUPPORT_TERMIOS=y 2213 | CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 2214 | # End of deprecated options 2215 | --------------------------------------------------------------------------------