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

news2025/2/23 2:39:21

写在前面:

        在嵌入式的学习过程中,语音模块是必不可少的,无论是做项目组合还是单个测试,对于语音模块我们应当有一款合适的模块。今天给大家介绍的是一款质量好、成本低、功能齐全的语音模块——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模组进行了详细的介绍,并且利用模块完成了相关的实验测试,在后面的项目中我们也会用到这个模块,大家如果觉得这个模块好用,也可以进行使用,多多练习,熟能生巧!!

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

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

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

相关文章

DataWhaleAI夏令营 对话要素提取 Baseline2 微调进阶

Baseline2链接;基于星火大模型的群聊对话分角色要素提取挑战-baseline2 - 飞桨AI Studio星河社区 (baidu.com) 数据集再构造 因为数据集中的对话数据还是标离散的,我们可以使用大模型自己先对数据集做一次抽取,构建一个新的数据集 这里对原…

12.SQL注入-盲注基于时间(base on time)

SQL注入-盲注基于时间(base on time) boolian的盲注类型还有返回信息的状态,但是基于时间的盲注就什么都没有返回信息。 输入payload语句进行睡5秒中,通过开发这工具查看时间,如图所示,会在5秒钟后在执行,因此存在基于…

【SpringCloud】概述 -- 微服务入门

在Java的整个学习过程中,大家势必会听见一些什么分布式-微服务、高并发、高可用这些专业术语,给人的感觉很高级,有一种高深莫测的感觉。可以看一下这篇博客对这些技术架构的演变有一个初步的认识: 服务端⾼并发分布式结构演进之路-CSDN博客文…

数据结构——单向循环链表

文章目录 1. 概念 2. 区别 2.1 结构区别 2.2 访问方式区别 2.3 优缺点对比 3. 流程 4. 基本操作 5. 代码示例 1. 概念 单向循环链表是一种特殊的单链表,其中最后一个节点的后继指针指向头节点,形成一个环。单向循环链表适合用于需要循环访问数据…

UCOS-III 系统移植

1. 移植前准备 1.1 源码下载 UCOS-III Kernel Source: https://github.com/weston-embedded/uC-OS3.git Micriμm CPU Source : https://github.com/weston-embedded/uC-CPU.git Micriμm Lib Source: https://github.com/weston-embedded…

Intellj idea无法启动

个人电脑上安装的是2024.01版本的intellj idea作为开发工具,引入了javaagent作为工具包 但是在一次invaliad cache操作后,intellj idea就无法启动了,双击无响应。 重装了idea后也无效(这个是有原因的,下面会讲&#…

java项目总结4

1.正则表达式 用于验证字符串是否满足自己所需要的规则。方法:matches 注意:\在Java中有特殊涵义,是将其它的意思本来化,假设"是用来引用字符串的,但是你如果想要输出它,那是不是就变成了System.out…

机器学习---线性回归

1、线性回归 例如:对于一个房子的价格,其影响因素有很多,例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi​表示,那么房价 y y y可以用如下公式表示: y …

基于Qt实现的PDF阅读、编辑工具

记录一下实现pdf工具功能 语言:c、qt IDE:vs2017 环境:win10 一、功能演示: 二、功能介绍: 1.基于saribbon主体界面框架,该框架主要是为了实现类似word导航项 2.加载PDF放大缩小以及预览功能 3.pdf页面跳转…

01--SpringAI接入大模型,chatgpt,Java接入人工智能大模型

01–SpringAI接入大模型,chatgpt,Java接入人工智能大模型 文章目录 01--SpringAI接入大模型,chatgpt,Java接入人工智能大模型一、准备工作?①:环境准备 二、创建一个springAI项目①:创建一个根项目②:创建一个SpringAI模块01.解决…

Dos(命令符窗口)命令

目录 1. 常用Windows组合键 2. 常用DOS命令 3. 复制操作 4. 当前路径 5. 查看电脑ip地址 6. 切换盘符: 7. 目录 8. 自动补齐 8. 进入某路径:cd 路径 9. 直接进入某个位置 10. 新建文件 11. 查看文件内容 12. 关机 13. 强行终止命令的执行:C…

python conda查看源,修改源

查看源 conda config --show-sources 修改源 可以直接vim .condarc修改源,

查看java版本和安装位置-cnblog

查看java位置 进入设置,高级系统设置 打开环境变量 找到path双击 查看java版本 java -version

中电金信:加快企业 AI 平台升级,构建金融智能业务新引擎

在当今数字化时代的浪潮下,人工智能(AI)技术的蓬勃发展正为各行业带来前所未有的变革与创新契机。尤其是在金融领域,AI 模型的广泛应用已然成为提升竞争力、优化业务流程以及实现智能化转型的关键驱动力。然而,企业在积…

刷代码随想录有感(126):动态规划——不相交的线

题干&#xff1a; 代码&#xff1a; class Solution { public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>>dp(nums1.size() 1, vector<int>(nums2.size() 1, 0));for(int i 1; i < num…

Github与本地仓库建立链接、Git命令(或使用Github桌面应用)

一、Git命令&#xff08;不嫌麻烦可以使用Github桌面应用&#xff09; git clone [] cd [] git branch -vv #查看本地对应远程的分支对应关系 git branch -a #查看本地和远程所有分支 git checkout -b [hongyuan] #以当前的本地分支作为基础新建一个【】分支,命名为h…

矢量绘图设计Sketch中文 Sketch直装安装包

Sketch是一款专为UI设计师和UX专家打造的矢量图形设计软件&#xff0c;以其简洁的界面、强大的功能和高效的协作能力而闻名。Sketch支持快速创建高质量的UI界面、图标、图形和插画&#xff0c;其矢量绘图工具让设计细节更加精准。同时&#xff0c;Sketch内置丰富的插件和组件库…

AI文字图片人脸生成原创视频文生图生肖生小程序开发

AI文字图片人脸生成原创视频文生图生肖生小程序开发 无限开 0.12生成 图生视频 AI技术在生成文字、图片、人脸以及视频方面已经取得了显著的进步。以下是一些可能包含在AI文字图片人脸生成原创视频小程序中的功能列表&#xff1a; 文字转视频&#xff1a; 输入文字或文章&…

使用flask的web网页部署介绍

使用flask的web网页部署介绍 文章目录 前言一、网页介绍二、数据库设计介绍总结 前言 flaskbootstrapjquerymysql搭建三叶青在线识别网站&#xff0c;使用nginxgunicorn将网站部署在腾讯云上&#xff0c;配置SSL证书。网站地址&#xff1a;https://www.whtuu.cn 三叶青图像识…

Open3D 在点云中构建八叉树

目录 一、概述 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2构建后点云 一、概述 八叉树&#xff08;Octree&#xff09;是一种树状数据结构&#xff0c;用于递归地将3D空间分割成较小的立方体。八叉树特别适用于3D计算机图形学、点云处理和空间…