项目文档
项目介绍
- 本项目基于【立创开发板 ESP32S3R8N8】构建,是一个可在线运行的 AI 大模型小电视。
- 提供双固件:支持TV-PRO固件/小智AI固件
- 项目结构与电路设计简单,适合新手复刻焊接,大部分电路采用可拆卸模块,无需深入电路知识,模块均通过排母连接,可轻松拆卸。
- 不含开发板的拓展板+模块套件成本为30元左右。
项目功能
本项目支持两种固件可供选择
TV-PRO固件
- ✅ 原生讯飞实时语音大模型
- ✅ 原生讯飞星火大模型
- ✅ WebSocket流式传输
- ✅ 万码云豆包 / cosyvoiceTTS 大模型
- ✅ 中译英翻译功能
- ✅ 英译中翻译功能
- ✅ 当日天气
- ✅ 时间显示
小智AI固件
- ✅ 小智AI官方功能
开发文档及教程
嘉立创EDA-教育与开源文档中心硬件参数
- 基于【立创开发板 ESP32S3R8N8】,内置 WIFI,通过 HTTPS/WebSocket 完成 API 请求
- 屏幕使用 ST7789 驱动 1.3 寸屏幕,用于显示天气、时间等信息
- 功放模块 Max98357,通过 I2S 协议传输数据
- 麦克风 INMP441 全向麦克风,通过 I2S 提供音频采集
- 8R1W 喇叭,提供音频播放
硬件设计
屏幕电路
这里直接采用ST7789驱动的1.3寸LCD 7Pin接口屏幕模块
按键电路
这里为所有按键配置了外部上拉(可以留空不焊接,通过软件启用内部上拉)
软件开发
本项目的软件代码比较复杂,且涉及编解码加密,通讯接口对接等整体代码较长,这里不详细展示,详细代码请到在线文档中查看,代码中并没有做过多优化,可能存在冗余,可自行优化。
开发环境
- 软件环境:VSCode+PlatformIO
- 开发语言:C/C++
API接入
为方便无服务器玩家开发,本项目采用无服务器接入在线API实现,但也正因如此,我们需要使用多个API服务来回调用。如果你有服务器则可以集成服务,只需要请求一个API就好,就像小智AI一样。所以总的来说小智AI的调用会更为简单和方便。
- ASR服务:讯飞-语音听写(流式版)
- 大语言模型服务:讯飞-星火Spark4.0 Ultra
- TTS服务:万码云TTS-豆包
库
通过以下库完成本项目开发
- ArduinoJson:解析/生成Json文件
- ArduinoWebsockets:WebSockets通讯
- ESP32-audioI2S:通过URL获取音频播放
- ESPAsyncWebServer-esphome:页面配置
- TFT_eSPI:UI界面
- NTPClient:实时时间同步
函数定义
通过以下库完成本项目开发
- void handleWiFiConfig():管理WiFi配置(保存/读取)
- void loadWiFiConfig():加载WiFi配置文件
- void fetchWeather():从API获取天气数据
- String base64Encode(const uint8_t *data, size_t len):二进制数据Base64编码
- String base64EncodeUserInput(const String &userInput):用户输入Base64编码
- String getDate():获取当前系统时间
- String hmacSHA256(const String &key, const String &data):HMAC-SHA256加密
- String calculateDigest(const String &body):计算消息体摘要
- String calculateSignature(...):生成API请求签名
- String generateSpeechAuthURL():生成语音服务鉴权URL
- String generateChatAuthURL():生成聊天服务鉴权URL
- void sendHandshake():发送WebSocket握手请求
- void sendAudioData(...):发送音频流数据帧
- void startRecording():启动麦克风录音
- void stopRecording():停止麦克风录音
- void onSpeechMessage(...):处理语音服务响应
- void playTTS(String textToSpeak):文本转语音播放
- void Translation(...):执行文本翻译
- void sendChatRequest(...):发送聊天请求
- void onChatMessage(...):处理聊天服务响应
- void displayTask(...):显示屏刷新任务
- String removeNonUTF8(...):过滤非UTF8字符
- void setup():系统初始化
- void loop():主循环逻辑
- processChatResult():解析聊天结果
- processSpeechResult():解析语音结果
- void connectWebSocket():建立WebSocket连接
- void handleButtonPress(...):处理物理按钮事件
3D外壳结构
3D外壳由嘉立创云CAD平台构建 3D外壳工程-嘉立创云CAD
前盖
| 侧面1 | 侧面2 |
|---|---|
![]() |
![]() |
- 外壳设计有螺丝孔柱,用于固定。
- 壳体内部添加倒角加强,屏幕部分为排针焊点添加槽位,屏幕下侧添加限位槽,避免屏幕受外力下凹。
- 壳内三角添加PCB支撑,避免PCB受力不均、凹凸不平。
- 主体外壳采用大圆角,使得整体美观圆润。
后盖
| 正面 | 背面 |
|---|---|
![]() |
![]() |
- 后壳同样采用大圆角,使得整机圆润。
- 边角处同样采用倒角加强,并开Type-C挖孔。
- ESP32S3芯片处添加散热孔,排出外壳内部热量。
安装结构
项目采用的是三段式结构,由前盖、主板、后盖构成
安装屏幕
首先将屏幕侧滑进前盖屏幕限位槽中
安装主板
将拼装完成的主板倒扣,主板屏幕排母对准屏幕排针插入
安装后盖
后盖倒扣插入即可
免费打样
嘉立创提供一站式产业互联智造平台,涵盖电子、机械产业一站式服务🛠️
实物图
| 1 | 2 |
|---|---|
![]() |
![]() |
![]() |
![]() |
云服务请求

拓展方向
本项目提供了一个无服务器的在线API大模型边缘AI智能硬件方案Demo,你完全可以基于本项目拓展更多功能,对此我们给出一些拓展方向,欢迎基于本项目修改。
- USB/BLE协议的语音输入法
- PC性能监视器
- 电子相册
- ......
注意事项
- 使用TV-Pro固件时请提前注册讯飞开放平台账户,并创建好应用APPID、APISecret、APIKey同时启用Spark4.0 Ultra大模型服务、语音听写(流式版)服务,以上服务首年可免费体验。TTS服务还需注册万码云平台获取APIKEY。
- 使用小智AI固件时请提前注册小智AI控制台账户,并按提示完成设备绑定。
FAQ
为什么需要调用这么多API?
本项目是一个无服务器后端的项目,所以我们只能通过MCU完成原生API整合调用,我们在开发时也没有找到合适的能一次性完成ASR、AI、TTS的整合API。如果你自己有服务器,则可以像小智那样部署一个后端服务处理API,这样服务器和MCU之间只需要调用一个API,还可大大降低程序复杂性,腾出更多空间。为什么主控发烫?
因为采用的是多个在线API,所以需要处理很多网络请求,这就导致需要较高功耗,产生较大热量。为什么语音输出较慢?
因为TTS这里采用的是在线URL解析音频,对网络和内容长短有较高要求,你可以优化代码,将应答内容分段多次请求TTS然后播放,但是这必然会消耗更多的API费用。如何配网?
开机后连接名称为TV-Pro的WIFI热点,浏览器输入192.168.4.1即可进入配网页面(部分手机会弹出WIFI无网络是否继续连接,务必点击继续。也有部分手机会直接切换到流量,导致无法配网。无法进入配网页面?
配网页面的html保存至spiffs文件系统中,这个固件需要单独刷入,如果未刷入会导致无法加载配网页面。代码仓
TV-PRO源码 https://gitee.com/JasonYANG170/tv-pro 小智源码适配Fork https://gitee.com/JasonYANG170/tv-pro_xiaozhi








