# 基于Esp32-S3的Ai语音助手+Gif屏保时钟+网络摄像 **Repository Path**: ret2nuh/Ai-Assistance_Gif-Clock_Web-Camera_Based-on-Esp32S3 ## Basic Information - **Project Name**: 基于Esp32-S3的Ai语音助手+Gif屏保时钟+网络摄像 - **Description**: 基于Esp32-S3的Ai语音助手+Gif屏保时钟_天气+网络摄像头 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-17 - **Last Updated**: 2025-10-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: 语音助手, AI, ESP32, LVGL, 大模型 ## README # 基于Esp32-S3的Ai语音助手+Gif屏保时钟、天气+网络摄像头 备注:半成品(电路板未制作,有时间了再继续,软件部分已完成),第一个小项目记录 视频地址:https://www.bilibili.com/video/BV1YsnEzrETS ![输入图片说明](esp32AI_vscode/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250831141000%20-%20%E5%89%AF%E6%9C%AC.jpg) #### 概述、框架: 1.模块: ESP32-S3-N16R8; 1.3寸TFT屏幕240*240 st7789驱动; INMP441麦克风; MAX98357 音频功放; 3020喇叭4欧3W; 摄像头ov2640; 2.平台框架: VsCode+PlatformIO,代码风格Arduino、C/C++; 3.如何使用: 上电后自动联网,待机期间显示壁纸,使用相应按键或使用串口发送cam/ai/gif进入相应功能,使用停止键或使用串口发送stop,停止功能进入待机状态; 4.存在问题: 使用完摄像头模式再使用Ai语音助手会有延迟甚至Ai胡言乱语的状况,需要reset; 5.主程序框图: ![输入图片说明](esp32AI_vscode/%E6%99%BA%E8%83%BD%E5%B0%8F%E7%9B%92%20%E5%8A%9F%E8%83%BD%E5%BE%AA%E7%8E%AF.drawio.png) #### 基于Lvgl8.4的Gif屏保桌面(显示时间、天气、城市等信息) 备注:内置6张图片(待机显示)+1张Ai语音聊天背景图+5个宫崎骏动画gif+稚晖君机器人表情包gif 1.功能: 1.开机随机显示图片; 2.随机显示gif背景,显示时间、地点、天气信息,一段时间可联网自动校准; 3.随机显示稚晖君机器人表情包; 2.如何使用: 进入gif时钟界面会先通过网络获取地址、天气、时间信息,取决于网站的连接情况可能获取失败,会尝试重新连接,请耐心等待(处于待机状态),超过一定时间会先进入gif界面再尝试获取天气等信息,获取信息过程中gif偶尔会有卡顿;按boot键进入稚晖君机器人表情包gif; 3.存在问题: 刚进入gif会有明显刷屏; 4.TFT屏幕引脚: RST/RES 40 DC 39 MOSI/SD 41 SCLK/SC 42 5.杂记: 1.SquareLine Studio制作界面,导出的文件放到.pio\libdeps\esp32-s3-devkitm-1\ui,gif产生的c文件也放这; 2.在vscode中打开文件夹,等待依赖库下载完成后,找到.pio\libdeps\esp32-s3-devkitm-1\TFT_eSPI路径下的User_Setup.h文件,配置tft屏幕的参数(引脚、使用的屏幕驱动、颜色反向等); 3.配置.pio\libdeps\esp32-s3-devkitm-1\lv.conf.h(字体、使用浮点数以及网上教程常见的一些配置); 4.Arduinojson和Arduino_JSON库冲突,修改Arduino_JSON中的定义; 6.Lvgl屏显gif和时间程序框图: ![输入图片说明](esp32AI_vscode/lvgl%E5%B1%8F%E6%98%BEgif%E5%92%8C%E6%97%B6%E9%97%B4%E5%A4%A9%E6%B0%94%E7%A8%8B%E5%BA%8F%E6%A1%86%E5%9B%BE.drawio.png) #### 网络摄像头: 备注:基于官方示例,移植到了VsCode+PlatformIO框架下 概述: 利用tcp进行http协议通信,esp32作为server,浏览器作为client。esp32把预制的网页存储在flash上,client发起get请求后,server遵循协议发送给client显示在浏览器上; 流程: 1.摄像头相关配置; 2.使用esp_http_server.h创建两个HTTP服务器; camera_httpd - 处理控制命令和静态图像请求; stream_httpd - 专门处理视频流请求; 3.stream_handler函数实现了视频流功能; capture_handler和bmp_handler实现了静态图像捕获; cmd_handler处理各种控制命令; #### Ai语音助手: 备注:基于项目https://github.com/Explorerlowi/ESP32_AI_LLM,在此基础上做了一些功能的删减、移植(可以先看看这个项目); 0.使用模型: Ai:讯飞 https://console.xfyun.cn LLM:星火认知大模型Spark4.0 Ultra(SST:语音识别/语音听写) ( 可替换为其他大模型) 1.功能: 1.语音交互:支持语音唤醒、连续对话; 2.多功能:屏幕显示对话内容、音乐播放/暂停、音量调节; 3.便捷网页配置:支持网页配置WiFi、大模型、音乐集信息; 2.存在问题: 1.内容分段回复; 2.上电、复位时喇叭噪声; 3.引脚连接: MAX98357 (音频功放) DIN 38 BCLK 19 LRC 20 INMP441 (麦克风) SCK 47 WS 14 SD 21 4.如何使用: 1.第一次运行无法联网的话自动进入热点模式,然后电脑或手机端连接Web_Scr_set.cpp设置好的wifi,网页输入192.168.4.1进入配置页 输入家里wifi的账号和密码以及大模型的链接和秘钥就能正常使用了(参数会写入flash的NVS区,之后就不用再配置了); 2.音乐使用的网易云音乐,配置的时候只需输入歌曲名和id(歌曲网址最后几位数字),不支持vip(不配置音乐是没有音乐可以播放的); 3.进入Ai语音助手功能后,显示”待机中“后,按一下boot键唤醒或用唤醒词唤醒; 4.语音播放中时都需要按一下boot键打断才能识别你的语音,进入待机状态需要先唤醒,再识别语音,8秒内未识别到语音进入待机状态,其他时候都可以识别; 5.语音命令: 小一、一一、几何、然然、April --可唤醒 退出、再见、拜拜、休眠 --进入待机状态 打开配置、打开热点、断开网络连接 播放电台 --播放http://lhttp.qingting.fm/live/4915/64k.mp3 播放音乐 暂停 恢复 提高音量、增大音量 降低音量、减小音量 显示音量 音量最大/高 音量最小/低 再(来/放/听)一遍 上一首 下一首 随便 --随机播放 歌曲名 --播放该首歌曲 开灯 关灯 其他语音会由大模型来回答你 6.杂记: 1.使用前需要开通Ai服务; 2.Web_Scr_set.cpp设置单片机热点模式的SSID和密码,默认账号ESP32-Setup密码12345678; 3.待机状态下,esp32s3会连接讯飞的stt服务进行唤醒词识别,会造成讯飞stt服务量的大量耗费; 4.platformio第一次打开项目要很久,可以看看网上教学; 5.语音没反应就多喊几次,可能没识别到; 7.Ai语音助手程序框图: ![输入图片说明](esp32AI_vscode/%E6%99%BA%E8%83%BD%E5%B0%8F%E7%9B%92%E7%A8%8B%E5%BA%8F%E6%A1%86%E5%9B%BE.drawio.png)