# xz **Repository Path**: zxxmo/xz ## Basic Information - **Project Name**: xz - **Description**: 使用ESP32S3R8N16 复刻虾哥xiaozhi - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-29 - **Last Updated**: 2026-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 快速解析: --- 🏗️ 项目概览 **项目概述**:通过ESP32S3R8N16复刻虾哥小智 **项目类型**:ESP-IDF(乐鑫 ESP32-S3 系列)嵌入式固件项目 **项目定位**:基于 BSP(Board Support Package)的智能硬件设备固件,具备 **WiFi 联网、LCD 显示、LED 状态灯、音频播放、WebSocket/Web 通信** 等功能。 --- ## 📐 架构与模块划分 ``` zxxmo/xz ├── main/ # 应用主模块 │ ├── main.c # 入口:app_main(),设备初始化与主循环 │ ├── CMakeLists.txt # 组件注册,声明源码与依赖 │ ├── bsp/ # 板级支持包 │ │ ├── bsp.c # BSP 核心初始化 │ │ ├── bsp_button.c # 按键驱动 │ │ ├── bsp_led.c # LED 控制 │ │ ├── bsp_lcd.c # LCD 驱动 │ │ ├── bsp_wifi.c # WiFi 管理 │ │ ├── bsp_codec.c # 音频编解码 │ │ └── bsp_websocket.c # WebSocket 客户端 │ ├── led/ # LED 灯条/RGB 控制 │ │ ├── led.c │ │ └── led_strip_encoder.c │ ├── wifi/ # WiFi 连接逻辑 │ │ └── wifi.c │ ├── kno/ # 旋钮控制 │ │ └── kno.c │ ├── LCD/ # LCD 显示层 │ │ └── lcd.c │ └── task/ # 后台任务 │ └── codec_task.c # 音频编解码任务 ├── partitions.csv # Flash 分区表 ├── managed_components/ # ESP-IDF 托管组件 ├── lcd.drawio # LCD 硬件/界面设计图 └── build_check/ # 构建检查目录 ``` --- ## 🔧 核心功能流程(从 `main.c` ``` app_main() ├── 1. BSP 初始化(NVS、WiFi、板级硬件) ├── 2. 打印 MAC 地址和 UUID ├── 3. 等待 WiFi 连接就绪 (bsp_board_check_status) ├── 4. 初始化 LED 灯条,显示蓝色 ├── 5. 同步系统时间(SNTP → ntp.aliyun.com) ├── 6. 初始化音频 Codec,启动音频 Pipeline ├── 7. 判断 xz_http_active: │ ├── 成功 → WebSocket 连接 (bsp_ws_start_connect),LED 变绿 │ └── 失败 → LED 变黄 └── 8. 进入主循环: └── 持续检测 WiFi 状态 ├── WiFi 已连 → 根据 xz_act 显示绿/橙 └── WiFi 断开 → 显示红色 └── 200ms ``` --- ## 🗂️ Flash 分区设计(partitions.csv) | 分区名 | 类型 | 大小 | 用途 | |-----------|--------|-----------|--------------------| | nvs | data | 1 MB | 非易失存储(配置) | | otadata | data | 128 KB | OTA 状态 | | phy_init | data | 64 KB | WiFi 射频校准 | | ota_0 | app | 4 MB | OTA 槽位 0 | | ota_1 | app | 4 MB | OTA 槽位 1 | | model | data | 4 MB | AI 模型/资源文件 | | storage | data | ~4 MB | 用户存储 | → 双 OTA 分区设计,支持远程固件升级;`model` 分区说明设备可能运行 AI/语音识别模型。 --- ## 🧩 关键技术栈 | 领域 | 技术/组件 | |----------|--------------------------------------------| | 构建系统 | ESP-IDF + CMake(`idf.py`) | | RTOS | FreeRTOS | | 网络 | WiFi Provisioning + SNTP + WebSocket | | 显示 | ESP-LCD + ST7735 驱动 | | 音频 | ESP-Driver RMT + Codec Pipeline | | 存储 | NVS Flash + SPIFFS | | LED | LED Strip (RMT 编码) + RGB 状态指示 | --- 2. **`main.c` 中主循环只有 WiFi 状态检测 + LED 更新**,WebSocket 连接后的业务逻辑应在 `bsp_websocket.c` 中实现,如需了解具体通信协议或功能,需要进一步查看该文件。 3. **`lcd.drawio` 文件**说明有可视化的 LCD 界面设计,如需了解 UI 布局逻辑,可以进一步查看 `LCD/lcd.c`。 --- **需要我深入哪个模块的具体实现?**(如 WebSocket 通信协议、音频编解码流程、LCD 显示逻辑、WiFi 配网方式等)