From d71841d24816fa80c409d6c99eca0b0d5b447aa4 Mon Sep 17 00:00:00 2001 From: laride <198868291+laride@users.noreply.github.com> Date: Wed, 11 Mar 2026 21:20:43 +0800 Subject: [PATCH] Rename EchoEar to ESP-VoCat (#1827) --- main/CMakeLists.txt | 6 ++--- main/Kconfig.projbuild | 8 +++---- main/boards/{echoear => esp-vocat}/README.md | 12 +++++----- main/boards/{echoear => esp-vocat}/config.h | 0 .../boards/{echoear => esp-vocat}/config.json | 2 +- .../EchoEar.cc => esp-vocat/esp_vocat.cc} | 24 +++++++++---------- main/boards/{echoear => esp-vocat}/touch.h | 0 7 files changed, 26 insertions(+), 26 deletions(-) rename main/boards/{echoear => esp-vocat}/README.md (72%) rename main/boards/{echoear => esp-vocat}/config.h (100%) rename main/boards/{echoear => esp-vocat}/config.json (89%) rename main/boards/{echoear/EchoEar.cc => esp-vocat/esp_vocat.cc} (96%) rename main/boards/{echoear => esp-vocat}/touch.h (100%) diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index ebb2139..03ae1d8 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -255,13 +255,13 @@ elseif(CONFIG_BOARD_TYPE_ESP_HI) set(BOARD_TYPE "esp-hi") # Set ESP_HI emoji directory for DEFAULT_ASSETS_EXTRA_FILES set(DEFAULT_ASSETS_EXTRA_FILES "${CMAKE_BINARY_DIR}/emoji") -elseif(CONFIG_BOARD_TYPE_ECHOEAR) - set(BOARD_TYPE "echoear") +elseif(CONFIG_BOARD_TYPE_ESP_VOCAT) + set(BOARD_TYPE "esp-vocat") set(BUILTIN_TEXT_FONT font_puhui_20_4) set(BUILTIN_ICON_FONT font_awesome_20_4) set(DEFAULT_EMOJI_COLLECTION twemoji_64) set(EMOTE_RESOLUTION "360_360") - # set(EMOTE_EXTERNAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/boards/echoear/assets") + # set(EMOTE_EXTERNAL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/boards/esp-vocat/assets") elseif(CONFIG_BOARD_TYPE_ESP_SENSAIRSHUTTLE) set(BOARD_TYPE "esp-sensairshuttle") set(BUILTIN_TEXT_FONT font_puhui_basic_16_4) diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index b4119fc..32621f7 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -185,8 +185,8 @@ choice BOARD_TYPE config BOARD_TYPE_ESP_P4_FUNCTION_EV_BOARD bool "Espressif ESP-P4-Function-EV-Board" depends on IDF_TARGET_ESP32P4 - config BOARD_TYPE_ECHOEAR - bool "EchoEar" + config BOARD_TYPE_ESP_VOCAT + bool "Espressif ESP-VoCat" depends on IDF_TARGET_ESP32S3 config BOARD_TYPE_KEVIN_BOX_2 bool "Kevin Box 2" @@ -653,7 +653,7 @@ choice DISPLAY_STYLE config USE_EMOTE_MESSAGE_STYLE bool "Emote animation style" depends on BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_3 \ - || BOARD_TYPE_ECHOEAR || BOARD_TYPE_LICHUANG_DEV_S3 \ + || BOARD_TYPE_ESP_VOCAT || BOARD_TYPE_LICHUANG_DEV_S3 \ || BOARD_TYPE_ESP_SENSAIRSHUTTLE endchoice @@ -754,7 +754,7 @@ config USE_DEVICE_AEC || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_2_06 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B \ || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_4C || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4C || BOARD_TYPE_ESP_S3_LCD_EV_Board_2 || BOARD_TYPE_YUNLIAO_S3 \ || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_8 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_10_1 \ - || BOARD_TYPE_ECHOEAR || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_3_49 || BOARD_TYPE_WAVESHARE_ESP32_S3_RLCD_4_2 || BOARD_TYPE_ZHENGCHEN_CAM || BOARD_TYPE_ZHENGCHEN_CAM_ML307 \ + || BOARD_TYPE_ESP_VOCAT || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_3_49 || BOARD_TYPE_WAVESHARE_ESP32_S3_RLCD_4_2 || BOARD_TYPE_ZHENGCHEN_CAM || BOARD_TYPE_ZHENGCHEN_CAM_ML307 \ || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3C) help To work properly, device-side AEC requires a clean output reference path from the speaker signal and physical acoustic isolation between the microphone and speaker. diff --git a/main/boards/echoear/README.md b/main/boards/esp-vocat/README.md similarity index 72% rename from main/boards/echoear/README.md rename to main/boards/esp-vocat/README.md index 8a2be5f..fd3613c 100644 --- a/main/boards/echoear/README.md +++ b/main/boards/esp-vocat/README.md @@ -1,4 +1,4 @@ -# EchoEar 喵伴 +# ESP-VoCat 喵伴 ## 简介 @@ -6,7 +6,7 @@ 立创开源平台 -EchoEar 喵伴是一款智能 AI 开发套件,搭载 ESP32-S3-WROOM-1 模组,1.85 寸 QSPI 圆形触摸屏,双麦阵列,支持离线语音唤醒与声源定位算法。硬件详情等可查看[立创开源项目](https://oshwhub.com/esp-college/echoear)。 +ESP-VoCat 喵伴是一款智能 AI 开发套件,搭载 ESP32-S3-WROOM-1 模组,1.85 寸 QSPI 圆形触摸屏,双麦阵列,支持离线语音唤醒与声源定位算法。硬件详情等可查看[立创开源项目](https://oshwhub.com/esp-college/echoear)。 ## 配置、编译命令 @@ -25,11 +25,11 @@ idf.py menuconfig 分别配置如下选项: ### 基本配置 -- `Xiaozhi Assistant` → `Board Type` → 选择 `EchoEar` +- `Xiaozhi Assistant` → `Board Type` → 选择 `Espressif ESP-VoCat` ### UI风格选择 -EchoEar 支持多种不同的 UI 显示风格,通过 menuconfig 配置选择: +ESP-VoCat 支持多种不同的 UI 显示风格,通过 menuconfig 配置选择: - `Xiaozhi Assistant` → `Select display style` → 选择显示风格 @@ -63,7 +63,7 @@ EchoEar 支持多种不同的 UI 显示风格,通过 menuconfig 配置选择 - **适用**: 喜欢微信风格的用户 - **类**: `SpiLcdDisplay` -> **说明**: EchoEar 使用16MB Flash,需要使用专门的分区表配置来合理分配存储空间给应用程序、OTA更新、资源文件等。 +> **说明**: ESP-VoCat 喵伴使用16MB Flash,需要使用专门的分区表配置来合理分配存储空间给应用程序、OTA更新、资源文件等。 按 `S` 保存,按 `Q` 退出。 @@ -75,7 +75,7 @@ idf.py build **烧录** -将 EchoEar 连接至电脑,**注意打开电源**,并运行: +将 ESP-VoCat 喵伴连接至电脑,**注意打开电源**,并运行: ```bash idf.py flash diff --git a/main/boards/echoear/config.h b/main/boards/esp-vocat/config.h similarity index 100% rename from main/boards/echoear/config.h rename to main/boards/esp-vocat/config.h diff --git a/main/boards/echoear/config.json b/main/boards/esp-vocat/config.json similarity index 89% rename from main/boards/echoear/config.json rename to main/boards/esp-vocat/config.json index e725e40..3ad6adf 100644 --- a/main/boards/echoear/config.json +++ b/main/boards/esp-vocat/config.json @@ -2,7 +2,7 @@ "target": "esp32s3", "builds": [ { - "name": "echoear", + "name": "esp-vocat", "sdkconfig_append": [ "CONFIG_USE_EMOTE_MESSAGE_STYLE=y", "CONFIG_MMAP_FILE_NAME_LENGTH=32", diff --git a/main/boards/echoear/EchoEar.cc b/main/boards/esp-vocat/esp_vocat.cc similarity index 96% rename from main/boards/echoear/EchoEar.cc rename to main/boards/esp-vocat/esp_vocat.cc index 75aa118..e84454c 100644 --- a/main/boards/echoear/EchoEar.cc +++ b/main/boards/esp-vocat/esp_vocat.cc @@ -24,7 +24,7 @@ #include #include -#define TAG "EchoEar" +#define TAG "ESP-VoCat" temperature_sensor_handle_t temp_sensor = NULL; @@ -282,7 +282,7 @@ public: // Create touch interrupt semaphore touch_isr_mux_ = xSemaphoreCreateBinary(); if (touch_isr_mux_ == NULL) { - ESP_LOGE("EchoEar", "Failed to create touch semaphore"); + ESP_LOGE(TAG, "Failed to create touch semaphore"); } } @@ -319,15 +319,15 @@ public: // Press event (transition from not touched to touched) press_count_++; event = TOUCH_PRESS; - ESP_LOGI("EchoEar", "TOUCH PRESS - count: %d, x: %d, y: %d", press_count_, tp_.x, tp_.y); + ESP_LOGI(TAG, "TOUCH PRESS - count: %d, x: %d, y: %d", press_count_, tp_.x, tp_.y); } else if (!is_touched && was_touched_) { // Release event (transition from touched to not touched) event = TOUCH_RELEASE; - ESP_LOGI("EchoEar", "TOUCH RELEASE - total presses: %d", press_count_); + ESP_LOGI(TAG, "TOUCH RELEASE - total presses: %d", press_count_); } else if (is_touched && was_touched_) { // Continuous touch (hold) event = TOUCH_HOLD; - ESP_LOGD("EchoEar", "TOUCH HOLD - x: %d, y: %d", tp_.x, tp_.y); + ESP_LOGD(TAG, "TOUCH HOLD - x: %d, y: %d", tp_.x, tp_.y); } // Update previous state @@ -380,7 +380,7 @@ private: SemaphoreHandle_t touch_isr_mux_; }; -class EchoEar : public WifiBoard { +class EspVocat : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; Cst816s* cst816s_; @@ -471,7 +471,7 @@ private: while (true) { if (touchpad->WaitForTouchEvent()) { auto &app = Application::GetInstance(); - auto &board = (EchoEar &)Board::GetInstance(); + auto &board = (EspVocat &)Board::GetInstance(); ESP_LOGD(TAG, "Touch event, TP_PIN_NUM_INT: %d", gpio_get_level(TP_PIN_NUM_INT)); touchpad->UpdateTouchPoint(); @@ -509,7 +509,7 @@ private: gpio_config(&int_gpio_config); gpio_install_isr_service(0); gpio_intr_enable(TP_PIN_NUM_INT); - gpio_isr_handler_add(TP_PIN_NUM_INT, EchoEar::touch_isr_callback, cst816s_); + gpio_isr_handler_add(TP_PIN_NUM_INT, EspVocat::touch_isr_callback, cst816s_); } void InitializeSpi() @@ -612,7 +612,7 @@ private: #endif // CONFIG_ESP_VIDEO_ENABLE_USB_UVC_VIDEO_DEVICE public: - ~EchoEar() { + ~EspVocat() { // Stop tasks if (charge_task_handle_ != nullptr) { vTaskDelete(charge_task_handle_); @@ -627,7 +627,7 @@ public: delete display_; // Note: backlight_ (PwmBacklight) and camera_ (EspVideo) are not deleted here // because their base classes (Backlight, Camera) don't have virtual destructors. - // Since EchoEar is a singleton that lives for the device lifetime, this is acceptable. + // Since EspVocat is a singleton that lives for the device lifetime, this is acceptable. // Remove GPIO ISR handler gpio_isr_handler_remove(TP_PIN_NUM_INT); @@ -640,7 +640,7 @@ public: } } - EchoEar() : boot_button_(BOOT_BUTTON_GPIO) + EspVocat() : boot_button_(BOOT_BUTTON_GPIO) { InitializeI2c(); uint8_t pcb_version = DetectPcbVersion(); @@ -693,4 +693,4 @@ public: } }; -DECLARE_BOARD(EchoEar); +DECLARE_BOARD(EspVocat); diff --git a/main/boards/echoear/touch.h b/main/boards/esp-vocat/touch.h similarity index 100% rename from main/boards/echoear/touch.h rename to main/boards/esp-vocat/touch.h