树莓派通过串口驱动LD3320语音模块

news2024/9/21 10:56:45

树莓派通过串口驱动LD3320语音模块

文章目录

  • 树莓派通过串口驱动LD3320语音模块
    • 一、LD3320语音模块的认知
      • 1.1 模块参数:
      • 1.2 模块结构介绍:
      • 1.3 模块的串口连接:
      • 1.4 验货测试方法:
      • 1.5 配套程序识别语句修改方法:
    • 二、树莓派串口驱动LD3320语音模块
      • 2.1 修改配置代码:
      • 2.2 测试语音模块:
      • 2.3 树莓派和语音模块硬件连接:
      • 2.4 代码编写:

一、LD3320语音模块的认知

在这里插入图片描述

1.1 模块参数:

在这里插入图片描述

1.2 模块结构介绍:

在这里插入图片描述

1.3 模块的串口连接:

在这里插入图片描述

1.4 验货测试方法:

在这里插入图片描述

在这里插入图片描述

1.5 配套程序识别语句修改方法:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

用户可以根据自己的使用情况在相对应的识别码后添加识别成功后的操作。那么在设备到某句话后就会执行相应的动作,实际上此段程序是判断识别到那个识别码然后执行相应的动作,属单片机的程序应用处理部分。

二、树莓派串口驱动LD3320语音模块

2.1 修改配置代码:

我们知道了我们的配置代码如何修改之后,我们就任意修改代码,以达到我们的需求,我们这里简单修改一下配置代码为我们的测试代码所用。

/* LDChip.c */
uint8 code sRecog[DATE_A][DATE_B] = {
																				"rao nai bao",\		
																				"kai fa ban yan zheng",\
																				 "dai ma ce shi",\
																				 "kai yi hao deng",\
																				 "kai er hao deng",\
																				 "kai san hao deng",\
																				 "kai si hao deng",\
																				 "guan deng"
																			};/* 添加关键词 */
uint8 code pCode[DATE_A] = {
															CODE_CMD,\
															CODE_KFBYZ,\
															CODE_DMCS,\
															CODE_LED1,\
															CODE_LED2,\
															CODE_LED3,\
															CODE_LED4,\
															CODE_OFFLED
														 };/* 添加识别码 */
/* LDChip.h */
//识别码修改处
#define CODE_CMD  0x00   		//该命令码0x00用户不可修改
#define CODE_DMCS	0x01		//代码测试
#define CODE_KFBYZ	0x02		//开发板测试
#define CODE_LED1 	0x04		//打开一号灯
#define CODE_LED2 	0x05		//打开二号灯
#define CODE_LED3 	0x16		//打开三号灯
#define CODE_LED4 	0x17		//打开四号灯
#define CODE_OFFLED	0x2f		//关所有灯
void User_handle(uint8 dat)
{
    if(0==dat)
    {
        G0_flag=ENABLE;
        LED=0;
        PrintCom("收到\r\n");
    }
    else if(ENABLE==G0_flag)
    {	
        G0_flag=DISABLE;
        LED=1;
        switch(dat)		  
        {
            case CODE_DMCS:			
            	break;
            case CODE_KFBYZ:	
           		break;
            case CODE_LED1:			
            	PrintCom("open ledone\r\n"); 
            	break;
            case CODE_LED2:				
            	PrintCom("open ledtwo\r\n"); 
            	break;
            case CODE_LED3:				
            	PrintCom("open ledthree\r\n"); 
            	break;
            case CODE_LED4:				
            	PrintCom("open ledfour\r\n"); 
            	break;
            case CODE_OFFLED:		
            	PrintCom("close ledown\r\n"); 
            	break;																						
            default:PrintCom("请重新识别发口令\r\n"); break;
        }	
    }	
    else 	
    {
    	PrintCom("请输出一级指令\r\n"); 
    }
}	 

修改完成然后编译,生成Hex文件,然后下载到我们的模块当中,下载软件是:STC-ISP,因为语音模块上的芯片是STC11系列,所以下载很简单,我们就不演示了。

2.2 测试语音模块:

我们修改完代码之后,也把固件烧录到我们的语音模块中了,接下来就是测试语音模块是否可行

我们首先将我们的语音模块和USB转TTL模块交叉相连,然后一起插入电脑的USB口

在这里插入图片描述

接着打开我们的串口助手,我们这边用的是:STC-ISP串口助手

在这里插入图片描述

我们打开串口助手之后,选择COM3端口号,然后选择波特率9600,然后打开串口开关,通过语音可以向我们串口助手发送我们的指令,说明我们的语音测试没有问题

2.3 树莓派和语音模块硬件连接:

在这里插入图片描述

在这里插入图片描述

2.4 代码编写:

#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main()
{
    int fd;
    int n_read;
    char cmd[128] = {'\0'};

    if(wiringPiSetup() == -1){                          //初始化wiringPi
        printf("初始化wiringPi失败! \n");
    }

    fd = serialOpen("/dev/ttyAMA0", 9600);              //打开串口
    if(fd < 0){
        printf("打开串口设备失败!\n");
        return -1;
    }

    while(1){
        n_read = read(fd, cmd, sizeof(cmd));                    //读取串口数据
        if(strlen(cmd) == 0){
            printf("超时\n");    
            continue;
        }
        printf("收到命令:%s\n", cmd);
        if(strstr(cmd, "open") != NULL){
            printf("开灯\n");
        }
        if(strstr(cmd, "close") != NULL){
            printf("关灯\n");
        }
        memset(cmd, '\0', sizeof(cmd)/sizeof(char));
    }

    return 0;
}

在这里插入图片描述

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

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

相关文章

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG、Mongodb数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享…

Stream 流式编程

优质博文&#xff1a;IT-BLOG-CN 大家都知道可以将Collection类转化成流Stream进行操作&#xff08;Map并不能创建流&#xff09;&#xff0c;代码变得简约流畅。我们先看下流的几个特点&#xff1a; 1、流并不存储元素。这些元素可能存储在底层的集合中&#xff0c;或者是按需…

信号与槽,QMainWindow中常用类的使用

QMainWindow菜单栏和工具栏 菜单栏&#xff0c;工具栏&#xff0c;状态栏&#xff0c;中心部件&#xff0c;铆接部件&#xff08;浮动窗口&#xff09; 菜单栏 //创建菜单栏QMenuBar *bar menuBar();//指定父组件this->setMenuBar(bar);this->resize(600,400);this-&g…

老师发布月考成绩的必备小程序

随着新学期的到来&#xff0c;教师们面临着诸多挑战&#xff0c;从课程规划到班级管理&#xff0c;再到学生的个别指导&#xff0c;每一项任务都至关重要。是否有工具能够帮助教师们在这些繁忙的事务中找到一丝轻松呢&#xff1f; “易查分”小程序正是为了解决这一问题而设计…

云原生学习交流

欢迎加入技术交流群&#xff0c;与阿里、腾讯、字节、华为等运维大佬面对面交流和互相学习。 请扫码备注 加群&#xff0c;<城市>-<公司/自由职业>-<昵称>&#xff0c;如“加群&#xff0c;广州-阿里-行则”&#xff1a;

基于SpringBoot的教师人事档案管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 教师管理 奖惩…

本地服务器部署Text generation并添加code llama实现远程多人协作

文章目录 前言1. 本地部署Text generation Web UI2. 安装CodeLlama大模型3. 实现公网远程使用Code Llama4. 固定Text generation Web UI公网地址 前言 本篇文章介绍如何在本地部署Text generation Web UI并搭建Code Llama大模型运行,并且搭建Code Llama大语言模型&#xff0c;…

关于HashMap的put方法

前言&#xff1a; HashMap的底层是数组加链表的形式实现&#xff0c;是线程不安全的&#xff0c;在jdk1.7之前put都是采用的头插法&#xff0c;但是使用头插法在多线程的环境下是有可能导致死循环&#xff0c;所以在jdk1.8就将put方法改成了尾插法。 1.产生死循环的原因&…

mfc140u.dll错误是什么情况?如何将mfc140u.dll丢失的解决方法详细分析

mfc140u.dll是 Microsoft Foundation Class (MFC) 库的一部分&#xff0c;通常与 Visual Studio 2015 及其后续版本相关联。如果系统中缺少 mfc140u.dll&#xff0c;可能会导致依赖该库的应用程序无法启动&#xff0c;并显示错误消息&#xff0c;如“程序无法启动&#xff0c;因…

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月9日新模型预测第82弹

经过80多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;70多期一共只错了8次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c…

CCF推荐A类会议和期刊总结(计算机网络领域)- 2022

CCF推荐A类会议和期刊总结&#xff08;计算机网络领域&#xff09;- 2022 在中国计算机学会&#xff08;CCF&#xff09;的推荐体系中&#xff0c;A类会议和期刊代表着计算机网络领域的顶尖水平。这些会议和期刊不仅汇集了全球顶尖的研究成果&#xff0c;还引领着该领域的前沿发…

梨花声音研修院退费普通话学习对国际交流的影响

随着中国在国际舞台上的影响力不断增强&#xff0c;普通话在国际交流中的作用日益显著。普通话不仅是中国的国家通用语言&#xff0c;也是全球范围内越来越重要的一种交流工具。通过学习普通话&#xff0c;不仅可以促进国际合作、增强留学和旅游体验&#xff0c;还能拓展全球就…

哈希表,算法

哈希存储(散列存储) 为了快速定位数据 哈希表 哈希冲突 / 哈希矛盾 关键字不一样&#xff0c;但是映射之后结果一样 如何避免 哈希矛盾&#xff1f; 1、重新设计哈希函数&#xff0c;尽可能均匀散列分布在哈希表 2、开放定址法&#xff1a;向下寻找未存储的位置进行存放数…

【简历】 25届广州某二本JAVA简历:包装的实习经历是不能作为工龄的

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份25届广州某二本学校的Java简历。校招备战上来第一任务就是要定校招层次&#xff0c;因为大中小公司的校招时间点要求、面试官的…

DevExpress WinForms中文教程:Data Grid - 如何自定义绘制?

在本教程中&#xff0c;您将学习如何使用DevExpress grid View&#xff08;网格视图&#xff09;的CustomDraw…事件&#xff0c;您将从一个显示普通任务数据的网格开始。首先使用事件来自定义单元格外观&#xff0c;然后修改相同的事件处理程序&#xff0c;来根据网格数据更改…

java 自定义注解校验实体类属性

直接上代码 1.是否启用参数校验注解 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface EnableArgumentsCheck {/*** 是否启用*/boolean enable() default true;} 2.参数校验自定义注解 /*** 参数校验自定义注解* 属性定义&#…

打造企业专属品牌,就要跟上云微客短视频矩阵新风口

网红经济在经济发展中是一个周期性的事件&#xff0c;很多人还没有意识到短视频带货、直播带货等红利时&#xff0c;有一群人早就已经进去了。但是现在网红带货时代已经结束了&#xff0c;那么新的风口是什么呢&#xff1f; 其实找网红带货&#xff0c;看似是提高了销售业绩&am…

[CTF夺旗赛] CTFshow Web1-12 详细过程保姆级教程~

文章目录 前言Web1Web2Web3Web4Web5Web6Web7Web8Web9Web10Web11Web12 前言 ​ CTFShow通常是指网络安全领域中的“Capture The Flag”(夺旗赛)展示工具或平台。这是一种用于分享、学习和展示信息安全竞赛中获取的信息、漏洞利用技巧以及解题思路的在线社区或软件。参与者会在比…

Linux IO模型(多路复用)

【1】Linux IO模型&#xff1a;IO多路复用 场景假设二 假设妈妈有三个孩子&#xff0c;分别不同的房间里睡觉&#xff0c;需要及时获知每个孩子是否醒了&#xff0c;如何做&#xff1f; 1.一直在一个房间呆着&#xff1a;看不到其他两个孩子 2.每个房间不停的看&#xff1a;可以…

python进阶篇-day09-数据结构与算法(非线性结构与排序算法)

非线性结构(树状结构) 特点: 每个节点都可以有n个子节点(后继节点) 和 n个父节点(前驱节点) 代表: 树, 图...... 概述 属于数据结构之 非线性结构的一种, 父节点可以有多个子节点(后续节点) 特点 有且只有1个根节点 每个节点都可以有1个父节点及任意个子节点, 前提: 根节点除…