打造专属AI助手:Lilygo-T-Circle-S3圆形板开发指南

打造专属AI助手:Lilygo-T-Circle-S3圆形板开发指南

【免费下载链接】xiaozhi-esp32 Build your own AI friend 【免费下载链接】xiaozhi-esp32 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32

你是否想拥有一个随身携带的AI语音助手?Lilygo-T-Circle-S3圆形开发板(简称T-Circle-S3)为你提供了实现这一目标的完美平台。这款基于ESP32-S3芯片的圆形开发板集成了触摸屏、麦克风和扬声器,非常适合构建小型化的AI语音交互设备。本文将带你从零开始,完成从环境搭建到功能实现的全过程,让你在一天内就能拥有自己的AI助手。

开发板概览

Lilygo-T-Circle-S3是一款设计精美的圆形开发板,采用ESP32-S3芯片,配备1.28英寸圆形TFT触摸屏、内置麦克风和扬声器,非常适合构建便携式AI语音设备。

Lilygo-T-Circle-S3开发板

开发板主要特点:

  • ESP32-S3芯片,支持Wi-Fi和蓝牙
  • 1.28英寸240x240分辨率圆形触摸屏
  • 内置MSM261麦克风和MAX98357A音频放大器
  • APA102 RGB LED环形灯
  • 旋转编码器,方便音量调节

硬件准备

在开始软件开发前,需要准备以下硬件:

  • Lilygo-T-Circle-S3开发板
  • USB Type-C数据线
  • 电脑(Windows、macOS或Linux)
  • (可选)3.7V锂电池

开发板引脚布局定义在pin_config.h文件中,主要包括:

// 音频相关引脚
#define MAX98357A_BCLK 5    // 音频输出时钟
#define MAX98357A_LRCLK 4   // 音频输出左右声道时钟
#define MAX98357A_DATA 6    // 音频输出数据
#define MSM261_BCLK 7       // 麦克风时钟
#define MSM261_WS 9         // 麦克风左右声道选择
#define MSM261_DATA 8       // 麦克风数据

// 显示屏相关引脚
#define LCD_WIDTH 160       // 显示屏宽度
#define LCD_HEIGHT 160      // 显示屏高度
#define LCD_MOSI 17         // 显示屏SPI数据
#define LCD_SCLK 15         // 显示屏SPI时钟
#define LCD_DC 16           // 显示屏数据/命令控制
#define LCD_CS 13           // 显示屏片选
#define LCD_BL 18           // 显示屏背光控制

开发环境搭建

安装ESP-IDF

T-Circle-S3开发基于ESP-IDF框架,需要先安装该开发环境:

# 克隆ESP-IDF仓库
git clone --recursive https://gitcode.com/espressif/esp-idf.git -b v5.1
cd esp-idf
# 安装依赖
./install.sh
# 设置环境变量
. ./export.sh

获取项目代码

git clone https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32.git
cd xiaozhi-esp32

配置开发板

项目已内置T-Circle-S3的配置文件,位于main/boards/lilygo-t-circle-s3/目录下,包含以下关键文件:

编译与烧录

基本编译命令

# 设置目标芯片为ESP32-S3
idf.py set-target esp32s3

# 配置项目
idf.py menuconfig

在配置菜单中,进入Xiaozhi Assistant -> Board Type,选择LILYGO T-Circle-S3

配置开发板类型

编译与烧录

# 编译项目
idf.py build

# 烧录固件(连接开发板后)
idf.py -p /dev/ttyUSB0 flash monitor

注意:Windows系统端口通常为COMx,如-p COM3

核心功能实现

音频配置

T-Circle-S3的音频配置在config.h中定义,包括采样率和I2S引脚映射:

#define AUDIO_INPUT_REFERENCE true
#define AUDIO_INPUT_SAMPLE_RATE 24000  // 麦克风采样率
#define AUDIO_OUTPUT_SAMPLE_RATE 24000 // 扬声器采样率

// 麦克风I2S配置
#define AUDIO_MIC_I2S_GPIO_BCLK static_cast<gpio_num_t>(MSM261_BCLK)
#define AUDIO_MIC_I2S_GPIO_WS static_cast<gpio_num_t>(MSM261_WS)
#define AUDIO_MIC_I2S_GPIO_DATA static_cast<gpio_num_t>(MSM261_DATA)

// 扬声器I2S配置
#define AUDIO_SPKR_I2S_GPIO_BCLK static_cast<gpio_num_t>(MAX98357A_BCLK)
#define AUDIO_SPKR_I2S_GPIO_LRCLK static_cast<gpio_num_t>(MAX98357A_LRCLK)
#define AUDIO_SPKR_I2S_GPIO_DATA static_cast<gpio_num_t>(MAX98357A_DATA)

显示屏驱动

T-Circle-S3使用GC9D01N显示屏驱动,相关代码在esp_lcd_gc9d01n.c中实现。显示屏初始化流程如下:

// 初始化SPI总线
spi_bus_config_t buscfg = {};
buscfg.mosi_io_num = DISPLAY_MOSI;
buscfg.sclk_io_num = DISPLAY_SCLK;
buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t);
ESP_ERROR_CHECK(spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO));

// 初始化显示屏控制器
esp_lcd_panel_io_handle_t panel_io;
esp_lcd_panel_io_spi_config_t io_config = {};
io_config.cs_gpio_num = DISPLAY_CS;
io_config.dc_gpio_num = DISPLAY_DC;
io_config.spi_mode = 2;
io_config.pclk_hz = 80 * 1000 * 1000;
ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI2_HOST, &io_config, &panel_io));

触摸功能

T-Circle-S3使用CST816D触摸控制器,通过I2C接口通信,相关配置:

#define TP_SDA 11  // I2C数据引脚
#define TP_SCL 14  // I2C时钟引脚
#define TP_INT 12  // 触摸中断引脚

触摸事件处理在main/boards/common/目录下的触摸驱动中实现。

自定义开发

修改唤醒词

默认唤醒词可以在编译配置中修改,通过idf.py menuconfig进入配置菜单,修改Audio Configuration -> Wake Word选项。

添加自定义UI

项目支持LVGL图形库,可以在main/display/lvgl_display/目录下添加自定义界面元素。例如,修改主界面:

void ui_main_screen() {
    // 创建主屏幕
    lv_obj_t *scr = lv_obj_create(NULL);
    lv_scr_load(scr);
    
    // 添加标题
    lv_obj_t *title = lv_label_create(scr);
    lv_label_set_text(title, "我的AI助手");
    lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 10);
    
    // 添加状态图标
    lv_obj_t *icon = lv_img_create(scr);
    lv_img_set_src(icon, &img_assistant);
    lv_obj_align(icon, LV_ALIGN_CENTER, 0, -20);
}

扩展功能

根据自定义开发板指南,可以为T-Circle-S3添加更多功能,如:

  • 温湿度传感器
  • 运动传感器
  • 扩展存储

故障排除

常见问题解决

  1. 显示屏无显示:检查LCD背光控制引脚是否正确配置,可尝试直接设置背光引脚为高电平。

  2. 音频无输出:确认MAX98357A的SD_MODE引脚是否正确配置,该引脚需要设置为高电平使能输出。

  3. 无法连接网络:长按BOOT按钮5秒重置Wi-Fi配置,重新进行网络配网。

  4. 触摸无响应:检查I2C引脚配置,确保触摸控制器已正确初始化。

总结与展望

通过本文的指南,你已经了解了如何使用Lilygo-T-Circle-S3开发板构建AI语音助手。从环境搭建到功能实现,我们涵盖了开发的主要步骤。基于这个平台,你可以进一步扩展功能,如添加人脸识别、环境监测等,打造真正属于自己的智能设备。

项目持续更新中,更多功能和优化将不断加入。欢迎在项目仓库提交issue和PR,一起完善这个开源项目。

参考资料

【免费下载链接】xiaozhi-esp32 Build your own AI friend 【免费下载链接】xiaozhi-esp32 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值