语音AI小夜灯项目

一、项目简介

使用ESP32-S3N8R8模块作为主控芯片,S3内核增加了用于加速神经网络计算和信号处理等的指令,这使得我们可以使用它来快速解析训练好的语音模型进行语音识别的功能。

二、原理解析

本项目由四个部分组成,电源部分、LED照明部分、主控部分、语音识别拓展部分,本项目主要是通过麦克风接收语音信号并进行处理,提取人声进行解析比较,当声音符合指令后,进行对应的控制操作。

2.1 电源电路

采用TYPE-C-16P接口作为供电接口,同时使用对应的USB数据引脚接入S3对应的USB引脚处(USBD+ IO20),(USBD- IO19),直接使用USB 作为下载和调试,无需转换为串口信号。在CC1和CC2引脚处加入5.1K下拉电阻,便于不同主机识别和配置。

使用AMS1117作为5V转3.3V降压LDO,ESP32S3在开启无线射频或做语音解析运算时,消耗电流较大,再加上有其余外设电路的存在,在进行电源芯片选型时,因选择输出电流至少在600mA以上的,AMS1117输出电流为1A,能够满足。

2.2 LED照明电路

使用四个RGB三色灯分布在板的四周,通过改变RGB三色灯不同颜色的亮度可以获得不同的显示效果。这里考虑到红灯、蓝灯、绿灯在所需电流上不一致,使用不同的电阻分开串联在对应的支路上,后续可以通过调整阻值来使亮度达到统一。同时将每一个颜色的灯串在一起,通过SI2302N沟道mos管进行统一导通和关闭,也可以通过PWM控制导通时间来进行亮度调整。

2.3 主控部分

使用ESP32S3N8R8模组作为主控芯片,这里需要注意,如果需要进行语音识别,所需的资源库是比较大的,建议选择Flash和PSRAM在8M以上。注意在带有OSPI PSRAM(即内置芯片为ESP32-S3R8及以上)的模组中,管脚IO35,IO36,IO37用于连接至模组内部集成的OSPI PSRAM,不可用于其他功能,这里我们需要在对应引脚上打上非连接标识。

在ESP32S3中,一共有4个Strapping引脚,在进行引脚分配时,尽可能不要去在这些引脚处加入上拉或下拉电阻去改变它的默认状态。

2.4 语音识别拓展部分

使用I2S数字硅麦克风接收语音信号,在I2S信号线处,为了获得更好的抗干扰效应,可以尝试串联小电阻进行阻抗匹配。

使用I2S信号的D类功放芯片进行语音输出,在声音输出路径中,加入磁珠与电容组成LC滤波电路,降低输出干扰。外部喇叭使用GH1.25*2P接口进行连接。

喇叭.png

ESP32S3带有两个I2S控制器,所有IO都可以经过内部矩阵复用为I2S引脚,大家可以随意分配。

加入震动传感器,当手拍打桌面时,也能进行不同灯光的切换,增加可玩性。震动传感器内部为弹簧结构,可以简单理解为弹簧按键。

震动传感器.png

三、器件焊接

3.1 物料清单

3.2 焊接辅助工具

焊接时可以在嘉立创EDA的PCB页面里点击顶部菜单栏的工具选择焊接辅助工具,会跳转到交互式BOM页面,实时交互显示元器件在PCB板上对应的坐标位置,可勾选隐藏或显示已焊接元器件,高效率焊接。

四、实物演示

4.1 3D渲染图

4.2 实物成品

4.3 软件资料链接:乐鑫语音藤球灯

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp二维码有效期倒计时三分钟的效果是实现

需求&#xff1a; 会员码时效只有3分钟有效期&#xff0c;需要在页面倒计时3分钟&#xff0c;没有长按保存的效果实现 效果&#xff1a; 代码&#xff1a; <templete> <view> <uni-list> <view class"custom-list-item" click"onCode(c…

java代码规范(适合写程序之前先了解有助于开发协同)

目录 一、类定义 二、方法定义 三、接口定义 四、变量定义 1、命名规范&#xff1a; 2、类型规范&#xff1a; 3、常量规范&#xff1a; 五、static关键字 1、静态变量&#xff08;类变量&#xff09;&#xff1a; 2、静态方法&#xff08;类方法&#xff09;&#x…

AUTOSAR软件手册文档缩写描述,AUTOSAR_TR_PredefinedNames

由于AUTOSAR文档中的缩写太多&#xff0c;入门者看起开不方便。例如TR、SWS、SRS、EXP模块。 下载链接&#xff1a;https://www.autosar.org/fileadmin/standards/R21-11/FO/AUTOSAR_TR_PredefinedNames.pdf

android——自定义TextView

效果展示&#xff1a; 代码解析&#xff1a; 1、首先设置自定义属性&#xff08;res/values下新建一个attrs.xml文件&#xff09; <?xml version"1.0" encoding"utf-8"?> <resources><!-- name 自定义view的名字 CustomTextView--&…

Spring Bean的生命周期(钩子函数)

借鉴&#xff1a;https://www.cnblogs.com/liweimingbk/p/17843970.html https://blog.csdn.net/lxz352907839/article/details/128634404 一、Spring Bean生命周期 如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口&#xff0c;那么在加载Spring配置文…

Flood Fill算法总结

算法思想 从一个起点开始&#xff0c;每一次随机选择一个新加进来的格子&#xff0c;看一下它周围能否扩展新的格子。如果能扩展&#xff0c;那么就扩展进来&#xff0c;直到不能扩展新的格子为止。当然需要判重&#xff0c;同样一个格子只能覆盖一次&#xff0c;这样能够保证时…

DataLoader与Dataset

一、人民币二分类 二、DataLoader 与 Dataset DataLoader torch.utils.data.DataLoader 功能&#xff1a;构建可迭代的数据装载器 &#xff08;只标注了较为重要的&#xff09; • dataset: Dataset类&#xff0c;决定数据从哪读取及如何读取 • batchsize : 批大小 • num_…

机器学习异常值处理 逻辑汇总一

一 清除数据中恒定不变值 如果某个数据长时间不变&#xff0c;默认异常&#xff0c;清除掉该部分数据&#xff1a; # 使用 shift 和 cumsum 来创建一个分组键&#xff0c;每次值改变都会增加组号 g (df[沉淀池3号进水流量] ! df[沉淀池3号进水流量].shift()).cumsum()# 使用…

案例253:基于微信小程序的懂球短视频管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SpringBoot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …

GC8549 大电流,双通道 12V,短地短电源保护等功能 可替代ONSEMI的LV8548/LV8549

GC8549 可以工作在 3.8~12V 的电源电压上&#xff0c;每 通道能提供高达 1.5A 持续输出电流或者 2.5A 峰值 电流&#xff0c;睡眠模式下功耗小于 1uA。具有 PWM&#xff08;IN/EN&#xff09;输入接口,与行业标 准器件兼容&#xff0c;并具有过温保护&#xff0c;欠压保护&…

【计算机网络】网络层

文章目录 网络层提供的服务虚电路数据报服务虚电路与数据报服务比较 虚拟互连网络IP地址IP层次结构IP地址分类特殊地址子网掩码 子网划分变长子网划分超网合并网络规律 IP地址与MAC地址ARP协议ARP欺骗的应用 数据包数据包首部 路由ICMP协议RIP动态路由协议OSPF协议BGP协议 VPNN…

进程等待(wait和wait函数)【Linux】

进程等待 wait和wait函数【Linux】 进程等待的概念进程等待的必要性进程等待的方法wait函数waitpid函数 非阻塞等待和阻塞等待的对比阻塞等待&#xff1a;非阻塞等待 进程等待的概念 进程等待就是通过 wait/waitpid的方式&#xff0c;让父进程对子进程进行等待子进程退出并且将…

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】

【信号处理&#xff1a;小波包转换&#xff08;WPT&#xff09;/小波包分解&#xff08;WPD&#xff09; 】 小波包变换简介WPT/WPD的基础知识WPT/WPD的主要特点The Wavelet Packet Transform 小波包变换前向小波数据包变换最佳基础和成本函数数学中波纹的最佳基础其他成本函数…

酷狗高级Java面试真题

今年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验…

洛谷普及组P1044栈,题目讲解(无数论基础,纯打表找规律)

[NOIP2003 普及组] 栈 - 洛谷 我先写了个打表的代码&#xff0c;写了一个小时&#xff0c;o(╥﹏╥)o只能说我真不擅长dfs。 int n; std::unordered_map<std::string, int>map; void dfs(std::vector<int>&a, int step,std::stack<int>p, std::string …

Nginx中include配置文件,方便管理多域名

目录 1.加上include配置 2.配置 server 记录 一个网站对应一个server 记录&#xff0c;这样管理起来相对麻烦。我们可以将每个网站记录单独拆分出来即可&#xff0c;这就需要用到 nginx 中的 conf.d 文件 1.加上include配置 先进入到 nginx.conf 文件&#xff0c;然后将所有…

CentOS7搭建Elasticsearch与Kibana服务

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里先创建一个网络&#xff1a; docker network create es-net 1.2拉取elasticsearch镜像 docker pull elasticsearch:7.11.1 1.3.运行 运行docker命令&#xff0c;部…

paddle v4 hubserving 部署

环境准备&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7/deploy/hubserving#24-%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1 服务器启动命令 hub serving start -c deploy/hubserving/ocr_system/config.json客户端请求 python tools/test_hubserving.…

Java ORM 框架 Mybatis详解

&#x1f4d6; 内容 Mybatis 的前身就是 iBatis &#xff0c;是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点&#xff0c;结合 Mybatis 底层源码分析&#xff0c;图文并茂的讲解 Mybatis 的核心工作机制。 …

面向对象编程(高级)

面向对象编程&#xff08;高级&#xff09; 1、类变量和类方法 &#xff08;1&#xff09; 概念 类变量&#xff0c;也称为静态变量&#xff0c;是指在类级别声明的变量。它们与特定类相关联&#xff0c;而不是与类的实例&#xff08;对象&#xff09;相关联。每个类变量只有…