基于Esp32-S3的Ai语音助手+Gif屏保时钟、天气+网络摄像头(开源)
在VsCode+PlatformIO下,基于Esp32S3的Ai语音助手/音乐播放 + 基于Lvgl8.4的Gif屏保时钟、天气 + ov2640网络摄像头
备注:半成品(电路板未制作,有时间了再继续,软件部分已完成),第一个小项目记录
视频地址:
https://www.bilibili.com/video/BV1YsnEzrETS
代码等文件链接:
https://gitee.com/ret2nuh/Ai-Assistance_Gif-Clock_Web-Camera_Based-on-Esp32S3
概述、框架:
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.主程序框图:
基于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和时间程序框图:
网络摄像头:
备注:基于官方示例,移植到了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语音助手程序框图:
更多推荐
所有评论(0)