ESP32聊天机器人之一

想做情感陪伴机器人,看到B站有个项目很有趣,使用一块esp32复刻了B站MeteWu的ESP32大模型聊天项目。

自己做了一些修改,加了一些简单的表情,角色扮演,切换大模型和温湿度传感器等功能。可以用于玩具,聊天机器人,大模型对话,学习,创作,角色扮演等方面。因为ESP32自身带蓝牙,WIFI,支持很多传感器,事实上是可以语音控制家里的能上网的设备和带蓝牙的设备,加个红外模块,也可以通过语音控制家里的空调电视之类。计划通过串口作为小机器人的大脑控制中心。

硬件包括:

ESP32板子

INMP441全向麦克风、

MAX98357 I2S音频放大器模块+喇叭、

1.8寸(128x160)RGB_TFT屏幕,

还需要一些面包线,想使用方便一些,可能需要面包板或者esp32拓展板,一些外壳或者螺丝固定。

其中屏幕不是必须,如果不需要播放视频图片,当然有了更好,可以通过屏幕输出信息,后期可以做一些动画表情,我的屏幕带SD卡读卡器,可以放图片和音乐。整个项目中,大头是显示屏和ESP32的主板,这两个要二十多,其他的元器件都是几块钱一个。

我是野路子,不太喜欢使用面包板。为了插线和使用方便,我使用了一块拓展板,二块多钱,又使用了两根铜柱把拓展板和TFT屏固定在一起,其他的麦克风,喇叭和温湿度计放在中间固定。这种接近箱形或者柱体立体结构,更方便我寻找一个合适的盒子或者瓶子保护起来,如下图,春左边是麦克风,右边是信号放大器和喇叭,拖着的是温湿度传感器;

目前语音功能主要包括唤醒,语音命令和大模型对话三部分。

唤醒,正常情况下,esp32休眠可以在电池供电的场合极大减小电量消耗,增长使用时间,同时切通了和大模型的连接,节省流量和大模型token。通过悟空,你好,八戒,二蛋等唤醒词唤醒,同时根据唤醒词切换不同身份,模仿悟空,八戒,夫子,二次元猫娘,美女,帅哥之类和你对话。现在没有使用悟空,八戒对应的配音,只区分了男女角色。喜欢的也可以搞成父母的声音,老师的声音,这样辅导孩子作业会更有代入感,都是可以修改的。

语音指令主要解析为操作指令,比如打开空调,打开电灯,室温温度,天气情况,播放音乐,播放幻灯片,切换大模型,调整音量,打印日志,取消打印等,可以按需要添加修改,没有上限。

大模型对话主要是通过调用迅飞星火,阿里通义千问或者抖音的豆包等对话功能,提供诸如学习英语,普通话,数学,物理知识,写诗,写小说,讲故事,讲笑话等功能。三个大模型可以语音切换,播放声音也能通语音控制。

通过语音切换大模型,需要提前在代码里配置,目前迅飞,豆包,阿里都有免费的,申请后配置一下参数。也可以和离线语音模块通过串口结合使用,唤醒和本地命令使用离线语音,大模型对话,唤醒ESP32接班。

后面打算把屏幕利用起来,根据场景做一些可爱的表情,然后加上摄像头,这样组成一个机器人的控制中枢,有麦克风做耳朵,有喇叭说话,有屏幕做表情,有摄像头做眼睛,然后扩展一些红外,wifi,蓝牙控制家里的智能电器,装上舵机做手脚。

主要的元件:

一。 ESP32板子,我买的是30PIN的,好像13块

二。INMP441全向麦克风、好像六块多

三。MAX98357 I2S音频放大器模块+喇叭、这个合起来三五块就行,不会焊接的话,喇叭可以买那些大号2.54插头支持杜邦线直接插了用的。其他都是标准组件,喇叭是比较坑的,不会焊的最好是直接买带2.54插头并且带壳的,这样不容易损坏,没壳的太容易断线了,有壳的音响效果也好一些,买过好多不带壳了,用几次线就断了,最后不得已买了电烙铁自己焊,

四。1.8寸(128x160)RGB_TFT屏幕,这个有点小贵,十几块,也有几十的,

硬件接线,麦克风和放大器使用I2S协议,tft lcd表面看是I2C协议,实际是spi协议,sd使用spi协议,播放音频放大器在main修改,TFT屏在user_setup中修改,支持很多种屏幕,按自己买的TFT屏幕修改,默认是ST7735,麦克风在i2S中修改,要根据esp32引脚功能和模块支持的协议修改:

一。麦克风:

VDD -> 3.3v
GND -> GND
SD -> GPIO22
WS -> GPIO15
SCK -> GPIO4
还有个左右声道的,接个低电平就行


二,音频放大模块:

Vin -> VIN
GND -> GND
LRC -> GPIO27
BCLK -> GPIO26
DIN -> GPIO25
三,1.8寸OLED屏幕:

VDD -> VIN
GND -> GND
SCL -> GPIO18
SDA -> GPIO23
RST -> GPIO12
DC -> GPIO32
CS -> GPIO5

有个背光的,接个高电就可以

四,我接一个温湿度传感器,温度还可以,湿度感觉不太准,数据偏湿,不清楚啥原因

温湿度传感器data接gpio33.

五。接个了测试LED灯,使用gpio16

六。接了SD卡

// SPI GPIOs

#define SD_CS 21

#define SPI_MOSI 19

#define SPI_MISO 13

#define SPI_SCK 14

引脚可以修改,不过比较麻烦,esp32的引脚每个功能不一样,接错了就会出各种问题。后面还想接个T 卡。引脚可以参数下面别人写的引脚分配。

开发的环境:

vscode, esp-idf,PIO HOME,

代码:

https://github.com/blogercn/ESP32_AI_LLM

参考:

ESP32 引脚分配_esp32 sd0引脚-CSDN博客

常见机内总线——I2C、SPI、I2S、UART、TDM-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535413.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【React源码解析】深入理解react时间切片和fiber架构

时间切片 假如React一个更新需要耗时200ms,我们可以将其拆分为40个5ms的更新(后续会讲到如何拆分),然后每一帧里只花5ms来执行更新。那么,每一帧里不就剩余16.7 - 5 11.7ms的时间可以进行用户事件,渲染等…

立足本土,面向全球 | 全视通闪耀亮相Medical Fair Asia新加坡医疗展

Medical Fair Asia是亚洲地区最大的医疗设备、医疗器械和医疗技术展览会之一,自1997年创办以来,每两年在新加坡举办一次。该展会不仅是新加坡医疗行业交流的龙头平台,也是亚洲乃至全球医疗企业和专业人士共聚一堂、展示最新产品和技术的重要舞…

非关系型数据库Redis

文章目录 一,关系型数据库和非关系型数据可区别1.关系型数据库2.非关系型数据库3.区别3.1存储方式3.2扩展方式3.2事务性的支持 二,非关系型数据为什么产生三,Redis1.Redis是什么2.Redis优点3.Redis适用范围4. Redis 快的原因4.1 基于内存运行…

某讯/企鹅滑块验证码逆向(一)

文章目录 免责声明前言请求分析collect参数 总结 免责声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由…

面试爱考 | 设计模式

一、概述二、创建型 1. 单例(Singleton) IntentClass DiagramImplementationExamplesJDK 2. 简单工厂(Simple Factory) IntentClass DiagramImplementation 3. 工厂方法(Factory Method) IntentClass Diagr…

C/C++教程学习视频网盘资源分享

正如大家所了解的,C语言和C是两种编程语言,它们有一些相似之处,也有一些明显的区别。今天与大家一起来探讨、学习和回顾一下,希望对正在学习或准备学习编程语言的小伙伴,能有帮助哦! C/C区别之处&#xff…

Linux环境使用Git同步教程

📖 前言:由于CentOS 7已于2024年06月30日停止维护,为了避免操作系统停止维护带来的影响,我们将把系统更换为Ubuntu并迁移数据,在此之前简要的学习Git的上传下载操作。 目录 🕒 1. 连接🕘 1.1 配…

路由策略原理与配置

🐣个人主页 可惜已不在 🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 一. 原理概述 二. 实验目的 实验内容 实验拓扑 实验配置 三. 实验结果 一. 原理概述 路由策略Route-P…

【docker】docker 关键技术 —— 镜像制作

docker 镜像制作 镜像制作及原因Docker 镜像制作方式快照方式制作镜像制作命令 Dockerfile 制作镜像Dockerfile 是什么Dockerfile 格式为什么需要 Dockerfilegitee 详细使用 Dockerfile 教程 镜像制作及原因 镜像制作是因为某种需求,官方的镜像无法满足需求&#x…

Docker基本使用(持续更新中)

1 常用命令 1.1保存镜像到本地 命令如下: docker save -o nginx.tar nginx:latest 举例 结果:在当前目录下多了一个nginx.tar的包 1.2加载本地镜像 命令如下: docker load -i nginx.tar 举例: 查看当前镜像是没有nginx的 加载本地镜…

C++入门基础知识67(高级)——【关于C++ 文件和流】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 文件和流的相关内容! 关于…

数据库索引底层数据结构之B+树MySQL中的页索引分类【纯理论干货,面试必备】

目录 1、索引简介 1.1 什么是索引 1.2 使用索引的原因 2、索引中数据结构的设计 —— B树 2.1 哈希 2.2 二叉搜索树 2.3 B树 2.4 最终选择之——B树 2.4.1 B树与B树的对比(面向索引)【面试题】 3、MySQL中的页 3.1 页的使用原因 3.2 页的结构 3.2.1 页文件头和页文件…

【批量图片发票识别表格】批量识别发票明细导出Excel表格,批量识别扫描发票,批量识别拍照发票,发票识别改名

我们在生活中有很多发票要处理,有的是扫描的图片,有的是拍照的图片,需要将这些发票的信息导出整理成Excel表格,手打一两张还可以,数量大是不太现实的,那么今天教下大家如何快速的将这些发票整理下Excel表格…

基于Java、SpringBoot、Vue的加油站管理系统设计

摘要 本系统是一个基于Java、SpringBoot和Vue的加油站管理系统。它旨在提高加油站的运营效率,优化客户服务体验,并通过数据分析支持更精准的业务决策。该系统包括用户管理、汽油管理、站点管理等功能模块。通过这些功能,管理员可以方便地管理…

Chrome扩展程序上架全流程

1. 开发一个扩展 首先开发好一个扩展, 在构建之后压缩打包为 zip 格式的文件 2. 注册开发者账号 首次需要创建谷歌开发者账号,需要一次性收取5美元的注册费 注册步骤 打开注册链接,如下图所示,同意协议点击支付注册费 需要…

GDPU Vue前端框架开发 计数器

计数器算不到你双向绑定的进度。 重要的更新公告 !!!GDPU的小伙伴,感谢大家的支持,希望到此一游的帅哥美女能有所帮助。本学期的前端框架及移动应用,采用专栏订阅量达到50才开始周更了哦( •̀ .̫ •́ )✧…

一步到位:通过 Docker Compose 部署 EFK 进行 Docker 日志采集

一、EFK简介 Elasticsearch:一个开源的分布式搜索和分析引擎,用于存储和查询日志数据。它是 EFK 的核心组件,负责高效地存储和检索日志信息。 Filebeat:一个轻量级的日志采集器,主要用于将日志文件数据发送到 Logsta…

Python之NumPy超详细学习指南:从入门到精通(上篇)

文章目录 Python NumPy学习指南:从入门到精通第一部分:NumPy简介与安装1. 什么是NumPy?2. 安装NumPy使用pip安装:使用Anaconda安装: 第二部分:NumPy数组基础1. NumPy数组的创建从列表创建一维数组&#xff…

第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)

第四天:从贾登峪到喀纳斯风景区入口,晚上住宿贾登峪; 从贾登峪到喀纳斯景区入口(贾登峪游客服务中心): 搭乘贾登峪①路车,路过三湾到达景区换乘中心,路程时长约40分钟; …

在服务器上开Juypter Lab教程(远程访问)

在服务器上开Juypter Lab教程(远程访问) 文章目录 在服务器上开Juypter Lab教程(远程访问)一、安装anaconda1、安装anaconda2、提权限3、运行4、同意协议5、安装6、是否要自动初始化 conda7、结束8、检查 二、Anaconda安装Pytorch…