Rename EchoEar to ESP-VoCat (#1827)

This commit is contained in:
laride
2026-03-11 21:20:43 +08:00
committed by GitHub
parent e77dedb130
commit d71841d248
7 changed files with 26 additions and 26 deletions

View File

@ -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)

View File

@ -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.

View File

@ -1,4 +1,4 @@
# EchoEar 喵伴
# ESP-VoCat 喵伴
## 简介
@ -6,7 +6,7 @@
<a href="https://oshwhub.com/esp-college/echoear"><b> 立创开源平台 </b></a>
</div>
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

View File

@ -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",

View File

@ -24,7 +24,7 @@
#include <freertos/semphr.h>
#include <freertos/task.h>
#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);