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

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

树莓派通过串口驱动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){                          //初始化wiringPiprintf("初始化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.mrgr.cn/news/23041.html

相关文章:

  • MySQL JDBC URL各参数详解
  • 基于Spring Boot的旧物置换网站
  • 感知机(Perceptron)—有监督学习方法、非概率模型、判别模型、线性模型、参数化模型、批量学习、核方法
  • 数据结构:(牛客)CM11 链表分割
  • LeetCode刷题:找到第K大的元素
  • 基于人工智能的智能垃圾分类系统
  • 低代码平台:助力企业数字化转型的利器
  • 请解释Java中的线程局部变量的作用和使用场景。什么是Java中的Lock接口?它与synchronized关键字有何区别?
  • 【JUC】13-原子类
  • C++学习笔记----6、内存管理(五)---- 智能指针(1)
  • 学习threejs,创建立方体,并执行旋转动画
  • 本地服务器部署Text generation并添加code llama实现远程多人协作
  • 线程池的应用
  • 九月五日(k8s配置)
  • 外贸人提高潜在客户EDM电子邮件营销参与度的一些建议
  • 电池的电-热-寿命模型是什么?
  • 在debian11下的tightvncserver配置
  • 安全产品概述
  • oracle数据库报ORA-00060错误(死锁)的解决办法
  • AI人工智能如何重塑我们的世界,引领无限可能