发作品签到
专业版

esp32S3项目

工程标签

2.2k
0
0
1

简介

实现APP端对设备进行配置,控制。 可以和大语言模型对话,如百度文心一言,各GPT厂商提供的语言模型。实现语音及红外遥控控制灯光通断。

简介:实现APP端对设备进行配置,控制。 可以和大语言模型对话,如百度文心一言,各GPT厂商提供的语言模型。实现语音及红外遥控控制灯光通断。

开源协议

LGPL 3.0

创建时间:2023-10-12 16:10:47更新时间:2024-01-03 14:00:02

描述

基于ESP32S3实现的类似天猫精灵的主控板,目前基于模块拼装方式实现,主控使用ESP32S3开发板插入验证板中,语音,功放,SD卡也使用现成模块,主要节省硬件验证这部份时间,直接验证软件实现部份,后期验证稳定后考虑重新集成到一块板子上。
目前实现的主要功能如下:
1。基于大语言模型,实现人机对话,长按OK键然后说话,说完后释放按键,系统将语音转换为文字,然后请求后台做中转到第三方大语言模型,返回文字内容给设备,设备再将文字转为语音并通过功放播放。目前对接百度文心一言验证,文心一言和GPT比起来,确实差距非常大,但是GPT在国内使用受限,使用起来各方面都存在不少问题,但是后期会接入更多的其它模型,比如微软的Azure。国类对接模型在后台配置,模型切换对设备是透明的。
2。智能开关。智能开关是我设计这块板子的起源,目前配合另外两块8266主控继电器(一块86合板和一个微型单控板,将同步开源)板子,实现语音和红外遥控器对灯光的通断控制,初始化配置阶段,需要联网对设备进于配置,设备配置完成后,全部命令将缓存在主控板上,然后可以脱离互联网对其他设备进行控制。
3。后面将会增加一块触摸屏,将会实现更多的功能。
4。终级目标,实现完全在后端使用类似Java这样的服务端语言,实现对设备的编程。

 

焊接:

1。板子上配置两块ESP32S3开发板,是为了支持在板子的上下都可以插入,只需要在一面插一块即可,两者引脚相同。

2。5个按键配置的电阻值一定要按照原理图的值来焊接,否程序读取的模拟量会出问题,按键效或错乱。

刷机并配网:

假设你已经拿到一块主控板,相关的配件及模块都正常焊接好。使用方式如下

1。 首先用USB线将板子与电脑连接,将附件jmicro_v3.0.1_all.bin刷入0x0地址,如果有idf环境,可以执行如下命令:

esptool.py -p COM19 -b 460800 write_flash 0x0 jmicro_v3_all.bin

也可以用官方刷固件工具;

2。刷好固件后,连接串口可以看到启动日志,目前这个固件有完整日志输出,所以性能上有一定的损耗。初次启动,

会自动进入Wifi配网状态,查看手机或电脑的Wifi列表,看是否有ESP32_CFG的Wifi,如果没有,手动快速连按3次

板子上的Left键,稍等一下再查看应该可以到板子开放的热点,如下图:

 

3。连接上此Wifi后,用浏览器打开http://192.168.4.2,看到如下页面

在页面上输入你家的Wifi账号和密码,点提交,页面看到success后,板子会自动重启并连接Wifi。若Wifi输入错误,板子

连Wifi将会失败,此时可以手动快速连按3次板子上的Left键,重新连板子开放的热点配网,直到成功。

 

4。板子连网成功后,需要安装APP对板子进行配置

 

通过APP配置GPIO

 

1。首先在Android手机上安装附件JMicro.apk(目前只支持Android),目前手机APP只作为设备配置管理的一个辅助工具(不要钱,无广告,完全免费请放心使用);

2。打开APP,第一次打开会跳转到登录页面,如果没有账号,点注册账号,进入注册页面。需要说明的是,注册需要邮箱账号接收验证码。首先填入一个自己能用的邮件地址,如3333333@qq.com,建议使用QQ邮箱或国内邮箱,国外的由于大家都知道的原因,可能收不到件,收到件也可能打不开。

至于为什么不用手机号注册,是因为要节省成本,一条短信一毛钱,真心用不起,请大家凉解,另一方面,有些小伙伴对手机号比较敏感,不愿意随便给手机号。

3。第一次注册成功后,跳转到登录页面登录APP,以后如果不卸载应用,都会自动登录,登录成功后自动跳转到设备配置首页。


4。设备配网,如果设备第一次开机,设备会自动进入配网状态,参考前面“刷机并配网”小节。

 

5。增加设备,选择“我的设备”,跳转到设备列表,如我的设备页如下:



如果没有增加过设备,列表是空的。点右上角菜单图标,在弹出的操作列表中选择“增加设备”,如果已经有设备,则可以选择设备,跳转到设备详情页面

 

6。绑定设备,确保设备配网成功后,手机和设备连到同一个Wifi网络(必要条件,否则手机APP搜索不到设备)。在上图页面中点”选择设备“,跳转到设备选择页面,如下图

如果当前有多个设备未配网并且处于开机状态,此列表将展示多个可选设备。如果有多个设备,但是不确定那个是那个,则在列表中点选”点亮熄灭“,设备板载LED会闪着亮灭,再次”点亮熄灭“,LED将停止闪亮。点”选择设备“,回返回设备详情页面,此页面将显示更多设备信息,按钮栏多了一个”确认绑定“按钮,点选此按钮,设备绑定成功。

 

7。 设备角色,目前设备有3个角色:

     独立设备:设备可独立存在,不受其他设备控制,适用于需要单独控制的场景,或者现在还没有主设备,想单独测试此设备的场景。

     主设备:类似于天猫精灵,也就是当前这块ESP32S3板子,可以通过此板子控制其他从设备。

     从设备:和独立设备类似,但是可以加入到主设备中,通过主设备控制此设备,比如基于ESP8266的设备,配置上做不到语音输入,又要想通过语音控制此设备,则可以将此设备设置为从设备,并加入到主设备中,通过主设备接收语音控制命令控制此设备。附件视频中有两块基于ESP8266的板子,都可以作为从设备。

 

一般将ESP32S3板子设置为主设备,然后将其他设备设置为从设备使用。当然,也可以都设置为独立设备使用,此时设备与设备间不存在关系。

 

8。设备控制配置

     设备绑定成功后,在5中设备详情页有一个”控制配置“,点选进去后如下所示,初始状态此列表为空

     

上图中每行右上角显示的中文即为命令词,对着ESP32S3板说出此命令词即可执行命令。

在列表右上角有一个”新增“的文字标签,点选后跳转到命令新增页面,如下

因为是在主设备下面新增命令,所以选择要控制的从设备,前提是你已经存在从设备。

指令名称即为语音命令词,字数量要适当,最好不要太长,控制在3到8个字以内。

指令拼音不需要填写,保存成功后会自动生成。

指令描述可以写也可以不写。

指令源选择“语音命令”,另外一个是“红外摇控”。

指令ID不需要填写,系统自动创建。

指令功能选择 “GPIO控制”

执行指令:单片机引脚的电平状态,灯的开关本质上就是对连接到单片机上的引脚电平的控制,反过来,主要能通过单片机引脚控制的设备理论上都可以通过这个配置去控制,而不仅仅是电灯,这里只是以灯为例子说明问题

ClientId: 只有一个选项,选择即可。

 

确认以上都配置好,点保存成功后,回到命令列表,可以“刷新”看下有没有显示在列表上面,需要特别说明的是,后台因为考虑到性能及成本,会将这个列表缓存一段时间,在一定时间内的请求,都是直接取缓存,而不是查数据库,所以如果列表没显示新增或修改的最新数据,可以再等1到5分钟这样子再刷新一下列表就能查看到最新数据。

新增完的命令,在设备都正常情况下,即可对着主设备说命令词控制设备了。如“小爱同学  打开阳台灯”,“小爱同学”是唤醒词,需要和命令词分开说,设备唤醒后,才能接收命令词。

 

如果是修改命令,因为设备本地也有命令缓存,所以保存成功后,需要点一下“刷新设备缓存”或“同步设备语音命令”这两个按钮以使设备端及时更新本地缓存。

 

事实上,以上配置有些是可以省略的,在此都展示出来,更多的是站在开发人员的角度去思考,在用户角度,肯定可以做得更为简洁。

 

语音对话

这个使用起来比较简单,长按板子上的OK键,主控板上的RGB灯(如果有)会亮起来,此时说出你的问题,说完后释放即可,视问题长短及返回信息长度,返回结果长时不同,一般在1分钟内返回,建议你把问题控制在5秒以内,并且RGB灯亮后,马上说出你的问题,因为RGB灯亮后,板子已经在录音了,即使你不说话,也占用语音量。从语音转文字,请求语言模型取得文字结果,再到将文字结果转为语音,每一个阶段都需要较长时间,对于一个单片机来说(ESP32S3只有240M主频,512KBRAM,并且这已经秒杀大部分单片机了),已经相当不错了。不要拿单片机和电脑CPU比,这两者没有可比性!

 

 

 

 

 

 

 

 

 

 

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
86板开关灯演示.mp4
4
2
esp01微控开关.mp4
1
3
jmicro_v3.0.1_all.bin
19
4
演示语音和红外摇控同时控制220V电灯.mp4
1
5
语音对话.mp4
23
6
JMicro.apk
26
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航