# TV-Pro双固件在线大模型小电视 文档:https://wiki.yang17.top/products/oshwhub/oshw-782b2d631a9f4e3daf092dbc27c94b5c/ 项目来源:https://oshwhub.com/course-examples/esp32ai 分类:硬件项目 更新时间:2025-12-19T00:37:21.000Z 本项目基于立创ESP32S3R8N8开发板,可在线运行讯飞星火/小智AI等在线大模型服务。 资料超详细 👇 项目介绍 硬件设计 软件设计 软件移植 3D结构 附件下载 硬件工程 3D工程 项目介绍 本项目基于【立创开发板 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 喇叭,提供音频播放 硬件设计 主控电路 这里直接使用立创ESP32S3R8N8开发板,这里我们只引出了用到的几个接口,你可以根据需求引出需要的IO 查看数据手册 打开源工程 前往立创商城 屏幕电路 这里直接采用ST7789驱动的1.3寸LCD 7Pin接口屏幕模块 麦克风电路 这里直接采用INMP441全向麦克风模块,L/R引脚依照数据手册下拉选择左声道,这个可自由选择上下拉 查看数据手册 功放电路 这里直接采用MAX98357功放模块,依照数据手册对GAIN下拉100K,对SD上拉10K(部分模块自带10K上拉,可留空不焊接) 查看数据手册 前往立创商城 按键电路 这里为所有按键配置了外部上拉(可以留空不焊接,通过软件启用内部上拉) 软件开发 本项目的软件代码比较复杂,且涉及编解码加密,通讯接口对接等整体代码较长,这里不详细展示,详细代码请到在线文档中查看,代码中并没有做过多优化,可能存在冗余,可自行优化。 开发环境 软件环境:VSCode+PlatformIO 开发语言:C/C++ API接入 为方便无服务器玩家开发,本项目采用无服务器接入在线API实现,但也正因如此,我们需要使用多个API服务来回调用。如果你有服务器则可以集成服务,只需要请求一个API就好,就像小智AI一样。所以总的来说小智AI的调用会更为简单和方便。 ASR服务:讯飞-语音听写(流式版) 大语言模型服务:讯飞-星火Spark4.0 Ultra TTS服务:万码云TTS-豆包 ASR接口文档 AI接口文档 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芯片处添加散热孔,排出外壳内部热量。 安装结构 项目采用的是三段式结构,由前盖、主板、后盖构成 安装屏幕 首先将屏幕侧滑进前盖屏幕限位槽中 安装主板 将拼装完成的主板倒扣,主板屏幕排母对准屏幕排针插入 安装后盖 后盖倒扣插入即可 免费打样 嘉立创提供一站式产业互联智造平台,涵盖电子、机械产业一站式服务🛠️ 嘉立创免费PCB打样 嘉立创免费3D打样 实物图 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