来源:so.csdn.net
发布时间:Nov 30, 2020, 4:04:57 AM
原地址:https://blog.csdn.net/qq_48850403/article/details/110390932
用树莓派实现语音模块的识别功能
这里是简单的用语音开关灯来测试树莓派、继电器和语音模块之间相互的联系。
代码如下:
#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define SWIT1 7
int main()
{
int fd;//文件描述符
char cmd[128] = {
'\0'};//用来存放语音传来的数据
int nread;//读到多少个数据
pinMode(SWIT1,OUTPUT);//让引脚变成输出引脚
digitalWrite(SWIT1,HIGH);//给引脚一个高电平,程序运行的时候先让继电器处于断开状态
wiringPiSetup();//端口初始化
fd = serialOpen("/dev/ttyAMA0",9600);//打开并初始化串口,波特率9600
if(fd == -1){
printf("打开串口失败\n");
exit(-1);
}
while(1){
nread = read(fd,cmd,sizeof(cmd)/sizeof(char));//读cmd数组里的数据。
if(strlen(cmd) == 0){
//如果cmd里的没收到数据一直在等待,等系统自动返回一个值再打印超时
printf("超时\n");
continue;
}
if(strstr(cmd,"open") != NULL){
//如果open是cmd的子串则走if里面的程序
printf("open light\n");
digitalWrite(SWIT1,LOW);//给引脚一个低电平让继电器闭合
}
if(strstr(cmd,"close") != NULL){
//如果close是cmd的子串则走if里面的程序
printf("close light\n");
digitalWrite(SWIT1,HIGH);//给引脚一个高电平让继电器断开
}
memset(cmd,'\0',sizoef(cmd));//每次读取之后初始化数组,
}
return 0;
}
以上就是语音控制开灯与关灯的代码简称语音点灯咯。当然了想要更深的更细的控制的话在此基础上进行改造,并且要对语音模块以及C语言进行更深的了解。