当前位置: 首页 > news >正文

语音模块——LSYT201B模组(超详细)

写在前面:

        在嵌入式的学习过程中,语音模块是必不可少的,无论是做项目组合还是单个测试,对于语音模块我们应当有一款合适的模块。今天给大家介绍的是一款质量好、成本低、功能齐全的语音模块——LSYT201B语音模组。它的技术支持详细,能够使得用户更好的理解和使用产品,降低开发难度,缩短开发周期。

免费样品 (longsto.com)大家可以在深圳市雷龙发展有限公司对需要的样品进行免费申请。

同时,我们也感谢雷龙发展有限公司对本篇博客的硬件支持!

一、模块简介

        YT2228 是根据智能语音交互市场需求及思必驰算法的发展方向定义开发的 “芯片+算法”人工智能人机语音交互解决方案,具有高性能、低功耗等特点。该芯片通过软硬融合的方法,具备快速赋予各类设备语音交互的能力,极大的提高了用户体验和产品灵活性。该芯片支持家居5m交互,本地最多可识别150词,具备多轮交互能力。可以广泛应用在智能家电、玩具、空调伴侣等领域。

产品实物:

产品的尺寸为:34.22*18.16,引脚间距为2.0mm。由此可见模块的尺寸是很少的。 

引脚介绍:

由上图所示,该模块的引脚共有24个,下表为具体功能说明:

编号名称功能说明编号名称功能说明
1VCC电源输入3-5.5V13SPK2喇叭接线端
2GND地脚14SPK1喇叭接线端
3PC4IO口15GND地脚
4PC5IO口16GND地脚
5TX串口输出17PB1IO口
6RX串口输入18PB3IO口
7PA2IO口19PB5IO口
8DMUSB-20PB8IO口
9DPUSB+21PB10IO口
10PC3IO口22PB9IO口
11PA3IO口23GND地脚
12PA4IO口24MIC+麦克风输入

       如上表所示为该模块的引脚说明,其中红色表出来的是我们需要注意的,基本的使用需要进行连接的引脚。

二、功能介绍

        在上面我们介绍了该模块的通信方式为串口通信,那我们需要对串口通信具有一定的了解,详细的串口介绍可以看我之前的博客。

51单片机---串行口通信(小白可入)_串行接口给单片机传输信息-CSDN博客

STM32——串口(UART)使用_stm32串口-CSDN博客

        模块的串口接线如上图所示,右图为该语音模块,左图为MCU或者其他含有串口的设备例如:串口模块等等 。

串口通信需要一定的串口通信通信协议,其中该模块的通信格式为:

波特率:9600;

数据位:8位;

校验位:无;

停止位:1位;

数据流控:无;

参考词条:

对于上述表格做出解释:

        首先 ,当模块连接正确后,通电一瞬间,模块会进行语音播报欢迎使用雷龙智能监控系统。如果10秒内,没有给出回应,模块会进行语音播报:有需要再叫我

        如果我们进行唤醒,即说出:“你好小龙”,模块会回应我在,并且通过串口输出“FE 04 00 01 03 FD”,后面我们再说出其他的命令词,语音模块会进行对应的回应,以及通过串口输出对应的数据。

        期间如果10s没有任何命令,模块依旧会进行语音播报:有需要再叫我。

        我们可以通过对应的串口输出来进行对应的操作,后面有对应的案例实验。

三、硬件电路

1、 参考电路:

其中主要为四处连接:

1、通过单片机想模块供电:此处建议供电为5V;

2、串口连接RX\TX:用于接收模块对应的串口输出;

3、麦克风连接:用于进行语音输入;

4、喇叭:用于进行语音输出;

        此处为MCU连接,也可以用串口助手连接,性质是一样的。

2、串口连接实物图

3、单片机连接实物图

四、案例测试

1、串口助手测试

说明:利用串口模块连接语音模块,然后进行语音通信,通过串口助手查看语音模块的串口输出。

串口助手+语音模块

2、单片机测试

 说明:利用单片机来实现相关的语音控制,此处没有接防晒与水泵,依旧是利用LED灯来进行对应的测试。

MCU+语音模块

3、测试代码

单片机测试需要用到以下的代码:

main.c

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/UART1/uart1.h"
#include "./BSP/LED/led.h"int main(void)
{ HAL_Init();                              /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9);      /* 设置时钟, 72Mhz */delay_init(72);                          /* 延时初始化 */uart2_init(9600);led_init();while(1){ if(led==1){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);}else{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);}if(water==1){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);}else{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);}if(sunblock==1){}else {}}
}

uart1.c

#include "./BSP/UART1/uart1.h"
#include "./SYSTEM/sys/sys.h"
#include "string.h"
UART_HandleTypeDef uart2_handle;
uint8_t RX_buff[6];
uint8_t led=0,water=0,sunblock=0;
void uart2_init(uint32_t bandrate)
{uart2_handle.Instance=USART2;uart2_handle.Init.BaudRate=bandrate;uart2_handle.Init.WordLength=UART_WORDLENGTH_8B;uart2_handle.Init.Mode=UART_MODE_TX_RX;uart2_handle.Init.HwFlowCtl=UART_HWCONTROL_NONE;uart2_handle.Init.Parity=UART_PARITY_NONE;uart2_handle.Init.StopBits=UART_STOPBITS_1;HAL_UART_Init(&uart2_handle);HAL_UART_Receive_IT(&uart2_handle, RX_buff, 6);
}void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{if(huart ->Instance ==USART2){GPIO_InitTypeDef GPIO_InitType;__HAL_RCC_USART2_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitType.Mode=GPIO_MODE_AF_PP;GPIO_InitType.Pin=GPIO_PIN_2;GPIO_InitType.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA,&GPIO_InitType);GPIO_InitType.Mode=GPIO_MODE_AF_INPUT;GPIO_InitType.Pin=GPIO_PIN_3;GPIO_InitType.Pull=GPIO_NOPULL;HAL_GPIO_Init(GPIOA,&GPIO_InitType); HAL_NVIC_EnableIRQ(USART2_IRQn);HAL_NVIC_SetPriority(USART2_IRQn, 0,0);         }}void USART2_IRQHandler(void)
{HAL_UART_IRQHandler(&uart2_handle);
}void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart ->Instance ==USART2){if(RX_buff[4]==0x04)   led=1;         else if(RX_buff[4]==0x05)led=0;               else if(RX_buff[4]==0x06)water=1;else if(RX_buff[4]==0x07)water=0;else if(RX_buff[4]==0x08)sunblock=1;else if(RX_buff[4]==0x09)sunblock=0;HAL_UART_Receive_IT(&uart2_handle, RX_buff, 6);}}

led.c

#include "./SYSTEM/sys/sys.h"
#include "./BSP/LED/led.h"void led_init(void)
{GPIO_InitTypeDef GPIOhandled;GPIOhandled.Mode=GPIO_MODE_OUTPUT_PP;GPIOhandled.Pin=GPIO_PIN_5;GPIOhandled.Speed=GPIO_SPEED_FREQ_HIGH;__HAL_RCC_GPIOB_CLK_ENABLE();HAL_GPIO_Init(GPIOB,&GPIOhandled);__HAL_RCC_GPIOE_CLK_ENABLE();GPIO_InitTypeDef gpio1_init_struct;gpio1_init_struct.Mode=GPIO_MODE_OUTPUT_OD;gpio1_init_struct.Pin=GPIO_PIN_5;gpio1_init_struct.Speed=GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOE,&gpio1_init_struct);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);   HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET); }

代码网盘

链接:https://pan.baidu.com/s/1Ck7KPaw-wXAdCluQfvTu4A 
提取码:1022

总结:本节我们对深圳雷龙语音模块——LSYT201B模组进行了详细的介绍,并且利用模块完成了相关的实验测试,在后面的项目中我们也会用到这个模块,大家如果觉得这个模块好用,也可以进行使用,多多练习,熟能生巧!!

创作不易,感谢您的点赞支持!!!

相关文章:

  • 实用的网站
  • 昇思25天学习打卡营第9天|MindSpore-Vision Transformer图像分类
  • Qt——升级系列(Level Seven):事件、文件
  • MySQL之应用层优化(三)
  • 基于Android Studio外卖系统,订餐系统
  • 【python】OpenCV—QR Code
  • jenkins部署和使用
  • IT行业入门,如何假期逆袭,实现抢跑
  • 基于redisson实现tomcat集群session共享
  • 几种linux开机自启脚本的方法
  • c语言回顾-数组(全网最详细,哈哈哈)
  • Vue 3中 <script setup> 与生命周期钩子函数的详细解析
  • 软考-软件设计师
  • 海云安参编《数字安全蓝皮书 》正式发布并入选《2024中国数字安全新质百强》荣膺“先行者”
  • 深⼊理解MySQL Innodb存储引擎的缓冲池、事务、索引底层工作原理,掌握 MySQL 主从同步,读写分离技术以及集群的搭建,具备分库分表,SQL调优经验
  • iOS小技巧之UIImagePickerController实现头像选择
  • PhantomJS 安装
  • Python学习之路16-使用API
  • React Native移动开发实战-3-实现页面间的数据传递
  • Redis 懒删除(lazy free)简史
  • SpingCloudBus整合RabbitMQ
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Theano - 导数
  • vue数据传递--我有特殊的实现技巧
  • Vue学习第二天
  • 安装python包到指定虚拟环境
  • 缓存与缓冲
  • ------- 计算机网络基础
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 数据可视化之 Sankey 桑基图的实现
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (11)MATLAB PCA+SVM 人脸识别
  • (42)STM32——LCD显示屏实验笔记
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Git) gitignore基础使用
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (离散数学)逻辑连接词
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十三)Flask之特殊装饰器详解
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)ABI是什么
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .net和jar包windows服务部署
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET是什么
  • .net下简单快捷的数值高低位切换
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /boot 内存空间不够
  • @RestController注解的使用