用ESP32构建基于大模型的聊天机器人

        之前在HomeAssistant里使用Node-RED+小米智能音箱+某GPT实现了智能问答应用,但使用起来不太方便,最近看到一个开源项目,正好手头又有相关配件,于是试着搭建了一个自己的聊天机器人。

一、器件准备

1.  ESP32开发板(ESP-WROOM-32)

2、INMP441全向麦克风

3、MAX98357 I2S音频放大器模块

4、1.8寸(128x160)TFT彩色显示屏(8针)

5、小型喇叭

6、3D打印外壳

   

7、按钮开关

6*6*9按钮微动开关

二、器件连接

INMP441ESP32MAX98357ESP32TFT显示屏ESP32

LED

(可选)

ESP32
VDD3.3vVinVINVDDVIN正极GPIO33
GNDGNDGNDGNDGNDGND负极GND
SDGPIO22LRCGPIO27SCLGPIO18
WSGPIO15BCLKGPIO26SDAGPIO23
SCKGPIO4DINGPIO25RSTGPIO12
DCGPIO32
CSGPIO5

如下图:

三、注册并开通大模型服务

以接入讯飞星火模型为例:

1、注册账号

进入https://www.xfyun.cn注册个人账号

2、创建应用

完成注册并登录后,进入控制台,选择创建新应用,平台将自动生成APPID。

  

3、开通服务

点击已创建的应用条目,点击“更多服务信息查询”,可查看你的APPID、APISecret、APIKey信息,记录下来后面代码调试将使用。

返回后重新点击已创建的应用条目,进入后选择左侧的Spark4.0 Ultra模型,点击“立即购买”,然后选择我的应用、“免费包(个人)”,最后“确认下单”,这样就开通了讯飞认知大模型。

  

同样的操作,再选择开通语音转文字服务。

四、烧录固件

1、编译环境准备

下载vscode和platformIO插件

2、从GitHub克隆代码

地址:GitHub - Explorerlowi/ESP32_AI_LLM: 本项目使用esp32、esp32s3接入讯飞星火、豆包、chatgpt等大模型,实现语音对话聊天功能,支持语音唤醒、连续对话、音乐播放等功能,同时外接了一块显示屏实时显示对话的内容。

注意:找到.pio\libdeps\upesy_wroom\TFT_eSPI路径下的User_Setup.h文件,删除它,然后将根目录下的User_Setup.h文件剪切粘贴过去

3、按需修改代码

必须修改的代码:

......

int llm = 1;    // 大模型选择参数:0:豆包,1:讯飞星火,2:通义千问

......

// 讯飞stt和大模型服务的参数
String APPID = "12345678";     // App ID,必填
String APISecret = "12345678"; // API Secret,必填
String APIKey = "12345678";    // API Key,必填

......

根据个人喜好可以修改的代码:

......

// 角色设定
String roleSet = "你是一个二次元魔法猫娘,你的名字叫小灵,你的性格可爱活泼,说话简短,同时带有攻击嘲讽意味,你喜欢在回答的末尾加一个“喵”字。";
String roleSet1 = "你是一个二次元魔法猫娘,你的名字叫小灵,你的性格可爱活泼,说话简短,同时带有攻击嘲讽意味,你喜欢在回答的末尾加一个“喵”字。";


......

                // 增加足够多的同音字可以提高唤醒率,支持多唤醒词唤醒(askquestion.indexOf("你好") > -1 || askquestion.indexOf("您好") > -1) &&
                if( (askquestion.indexOf("坤坤") > -1 || askquestion.indexOf("小白") > -1 || askquestion.indexOf("丁真") > -1 || askquestion.indexOf("九歌") > -1))
                {
                    await_flag = 0;     //退出待机状态
                    start_con = 1;      //对话开始标识
                    Answer = "喵~九歌在的,请尽情吩咐小九歌,主人。";
                    response();     //屏幕显示Answer以及语音播放
                    conflag = 1;
                    return;
                }
......

Answer = "嗨~我没有听清,请再说一遍吧";

......

            else if (askquestion.indexOf("退下") > -1 || askquestion.indexOf("再见") > -1 || askquestion.indexOf("拜拜") > -1)
            {
                start_con = 0;      // 标识一轮对话结束
                musicplay = 0;
                Answer = "喵~主人,我先退下了,有事再叫我。";
                response();     //屏幕显示Answer以及语音播放
                await_flag = 1;     // 进入待机状态
                awake_flag = 0;     // 继续进行唤醒词识别
            }

......

4、编译并上传固件

在vscode中安装platformIO插件,编译并上传固件即可。

五、使用说明

1、首次使用设置

1)设备通电后,用电脑连接设备热点ESP32-Setup密码为12345678

2)打开浏览器,输入http://192.168.4.1

3)进入ESP32 Configuration页面,点击“WI-FI Management”

4)输入你的WI-FI信息,点击“Save”

如果需要在其他WIFI环境使用,也可以添加多个WIFI,只不过启动会稍微慢一点。也可以通过“Delete”删除多余的WIFI配置。

2、正常使用

点击ESP32开发板上的“EN”重启键设备,就可以连接WIFI开始使用了。在待机状态下,使用唤醒词“小白”唤醒设备,设备应答后就可以开始提问。设备回答完一个问题,过一段时间没有新的问题,设备会自动回到待机模式。也可以说“拜拜”“退下”让设备进入待机模式。如要在设备回答过程中终止设备回答,可以按ESP32开发板上的“ROOT”按钮,开始下一个提问。如设备响应出现问题,可以按“EN”键重启设备。

六、组装

1、打印3D外壳

在以下地址下载3D打印外壳文件:

百度网盘链接:https://pan.baidu.com/s/1ek-Phzb4BuplCgqt3bZ0RA?pwd=ulze 
提取码:ulze 
 

2、组装

按照接线图进行组装,注意为方便操作,需将ESP32开发板上的“EN”、“ROOT”键外接到机壳上。

3、效果视频

ESP32制作聊天机器人(连接大模型)_哔哩哔哩_bilibili

硬件部件 乐鑫ESP32S× 1个 Raspberry Pi Pi NoIR相机V2× 1个 软件应用程序和在线服务 Arduino IDE 这次我们为机器人配备了摄像头,使其成为监控机器人车。可以使用ESP32-CAM模块轻松构建此网络控制的监视车。除了ESP32-Camera模块之外,在这里我们还将使用两个带有Robot底盘的DC电动机和L293D电动机驱动器模块来制造此Robotic小车。ESP32构建基于IoT的项目的最受欢迎的开发板之一的AI-思想者ESP32-CAM模块带有一个ESP32-S芯片,非常小的尺寸OV2640照相机和microSD卡插槽。MicroSD卡插槽可用于存储从相机拍摄的图像。在此,HTTP通信协议将用于通过Web浏览器从OV2640摄像机接收视频流。网页上还将包含按钮,用于在上,左,右,前进和后退方向上移动汽车,如上图所示。 电路原理图 ESP32-监控摄像头的所有连接信息如下: ESP32-CAM没有USB连接器,因此您需要一个FTDI板将代码上传到ESP32-CAM。ESP32的VCC和GND引脚与FTDI板的VCC和GND引脚连接。ESP32的Tx和Rx与FTDI板的Rx和Tx连接。两颗直流电机通过L293D模块连接到ESP32。模块引脚连接到ESP32的IO4,IO2,IO14和IO15引脚。 注意:在上传代码之前,将IO0接地。IO0确定ESP32是否处于闪烁模式。当GPIO 0连接到GND时,ESP32处于闪烁模式。 我们通过使用现成的机器人底盘,车轮和直流电动机来构建机器人。我们使用电池为电机驱动模块和ESP32-CAM供电。这是我的监视机器人的外观:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值