基于Linux-ARM的智能家具项目(3)--语音模块与TCP网络

前面两篇,我们介绍了工厂模式;以及工厂模式实际运用在灯上的案例,还有火灾线程,如果有遗忘的这里有传送门。

基于Linux-ARM的智能家具项目(2)-- 灯框架与火灾报警_废话少说~的博客-CSDN博客

基于Linux-ARM智能家居项目(1)--工厂模式_废话少说~的博客-CSDN博客

1、前言

这一节我们来介绍一哈怎么来控制这些灯,以及其他外设(火灾是线程实时监控,无需控制),这里我们选择语音与网络两种模式来控制。网络会用到安卓app,不过这里先介绍网络的框架,安卓app后期呈上。

2、语音模块

一、LDChip.c文件修改

(1)、这里我们的语音模块选择的是LD3320,使用串口的方式与树莓派联系,本模块的驱动程序已经是写好的,需要做的就是进行应用程序的修改,修改为可以进行灯控制的方式。

(2)、模块的使用,分为一级指令与二级指令,一级指令为语音模块的名字,二级指令为需要说的语音。模块出厂的名字叫“小杰”,可以自己修改,我修改为“小明同学”。

(3)、一级指令的修改,要依据原厂件的代码进行修改uint8 code sRecog[DATE_A][DATE_B] ,这里的第一条便是一级指令(也就是语音模块的名字,要先有一级指令,才能有二级指令),还要修改对应的地址码,这个也是在这个文件夹内,是uint8 code pCode[DATE_A],对应的CODE——CMD,后面这个地方还要进行修改,注意只能用拼音。

(4)、二级指令的修改,和一级指令一样,uint8 code sRecog[DATE_A][DATE_B],写上对应的修改词条,uint8 code pCode[DATE_A]表示对应的地址码。

//打开LDChip.c文件夹


uint8 LD_AsrAddFixed()
{
	uint8 k, flag;
	uint8 nAsrAddLength;
	#define DATE_A 10   /*数组二维数值*/
	#define DATE_B 20		/*数组一维数值*/
	uint8 code sRecog[DATE_A][DATE_B] = {
																				"xiao ming tong xue",\		
																				"kai chu fang deng",\
																				 "guan chu fang deng",\
																				 "kai er lou deng",\
																				 "guan er lou deng",\
																				 "kai ke ting deng",\		 
																				 "guan ke ting deng",\
																				 "wo hui jia le",\
																				 "da kai jian kong"
																			};	/*添加关键词,用户修改*/
	uint8 code pCode[DATE_A] = {
															CODE_CMD,\
															CODE_KCFD,\
															CODE_GCFD,\
															CODE_KELD,\
															CODE_GELD,\
															CODE_KKTD,\
															CODE_GKTD,\
															CODE_WHJL,\
															CODE_DKJK
														 };	/*添加识别码,用户修改*/	

二、LDCHIP.c文件修改

(1)、这里便是对于地址的修改,注意0x00是一级指令,也就是名字,这里不能修改,其他根据上面的地址符号,对应,可以从0x01开始写

//识别码客户修改处 
#define CODE_CMD  0x00   //该命令码0x00用户不可进行修改。
#define CODE_KCFD	0x01		//开厨房灯
#define CODE_GCFD	0x02	    //关厨房灯
#define CODE_KELD 0x04			//开二楼灯
#define CODE_GELD 0x05			//关二楼灯
#define CODE_KKTD 0x16			//开卧室灯
#define CODE_GKTD 0x17			//关卧室灯
#define CODE_WHJL 0x2f			//开摄像头人脸识别
#define CODE_DKJK 0x03			//打开监控

//数值越大越灵敏识别距离越远,但误识别率就越大, 根据自己的实际情况调节。
#define MIC_VOL 0x55	 //咪头增益(灵敏度调节) 范围:00-7f 
#endif

三、main.c文件的修改

(1)、因为是使用串口打印,所以当识别成功后,要输出相应的值,这里在对应的switch的case中进行修改,还有在PrintCom写上要串口发生的值,因为这里后面这里发送后,会在树莓派中识别,然后进行相应的运行

/***********************************************************
* 名    称:用户执行函数 
* 功    能:识别成功后,执行动作可在此进行修改 
* 入口参数: 无 
* 出口参数:无
* 说    明: 					 
**********************************************************/
void 	User_handle(uint8 dat)
{
     //UARTSendByte(dat);//串口识别码(十六进制)
		 if(0==dat)
		 {
		  	G0_flag=ENABLE;
			LED=0;
			PrintCom("receive !\r\n"); /*text.....*/
		 }
		 else if(ENABLE==G0_flag)
		 {	
		 		G0_flag=DISABLE;
				LED=1;
			 switch(dat)		   /*对结果执行相关操作,客户可删除Printcom 串口输出语句替换为其他需要控制的代码*/
			  {
				    case CODE_KCFD:			/*命令“测试”*/
						PrintCom("1 KCFD\r\n"); /*text.....*/
													 break;
					case CODE_GCFD:	 /*命令“全开”*/
						PrintCom("2 GCFD\r\n"); /*text.....*/
													 break;
					case CODE_KELD:		/*命令“复位”*/				
						PrintCom("3 KELD\r\n"); /*text.....*/
													break;
					case CODE_GELD:		/*命令“复位”*/				
						PrintCom("4 GELD\r\n"); /*text.....*/
													break;
					case CODE_KKTD:		/*命令“复位”*/				
						PrintCom("5 KKTD\r\n"); /*text.....*/
													break;
					case CODE_GKTD:		/*命令“复位”*/				
						PrintCom("6 GKT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值