备注:半成品(电路板未制作,有时间了再继续,软件部分已完成),第一个小项目记录

视频地址: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语音助手程序框图:

        

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐