辜渝傧

13037102709

027-87870986

教学实训

您当前的位置:首页 > 教学资源 > 实训方案 >

物联网智能家居实训||实验九 语音识别控制实验

发布者:唯众    布时间:2020-09-23 14:19:43    点击量:

实验环境
 
软件环境:JDK1.6、SDK、ADT、Eclipse
 
硬件环境:DC5V2个、DC12V1个、节点板1块、ZIGBEE节点1个、ZIGBEE协调器1个、A9网关1块、语音识别1个
 
实验内容
 
       节点板上显示当前语音识别模块的结果(语音命令的首字母大写,例如“开灯”,则显示“KD”),并通过ZIGBEE通讯将语音识别的结果上传给A9,A9接收到语音命令后进行相应的处理,可联动网络内其它执行模块。
 
语音识别控制实验
实验原理
 
       唯众语音模块采用了STC的51单片机STC11L08XE和ICROUT公司的语音识别芯片LD3320。该单片机(STC11L08XE)编程方式与51、52系列单片机编程方式一样,用户无需从新查看学习新的单片机寄存器,到手即可编程使用;预留16个单片机IO口,其中有一组8位IO扩展接口、1个定时器、1个外部中断,可做为单片机最小系统实现控制功能,无需配套其他单片机独自完成工作。
       传感器使用通用2排7pin排针与节点底板连接,排针功能如图所示。 
语音识别控制实验原理
 
硬件接口原理
 
       如图3.18所示,MIC2为咪头,LD3320为语音识别芯片,STC11L08XE为8位单片机,咪头采集到声音信号后,经过LD3320进行识别,识别后的信号传给STC11L08XE处理后,通过串口RXD,TXD与ZIGBEE通讯模块的单片机CC530进行通讯,CC2530根据识别的命令执行相应的控制。
语音识别控制实验原理图
图3.18
 
软件设计
 
1. CC2530语音识别流程图
 
CC2530语音识别流程图
 
2. CC2530语音识别软件
 
1. void GenericApp_Init( uint8 task_id )
 
2. {
 
3. GenericApp_TaskID = task_id;
 
4. GenericApp_NwkState = DEV_INIT;
 
5. GenericApp_TransID = 0;
 
6.
 
7. GenericApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;//单播
 
8. GenericApp_DstAddr.endPoint = GENERICAPP_ENDPOINT;
 
9. GenericApp_DstAddr.addr.shortAddr = 0x0000;//向协调器单播
 
10. GenericApp_epDesc.endPoint = GENERICAPP_ENDPOINT;
 
11. GenericApp_epDesc.task_id = &GenericApp_TaskID;
 
12. GenericApp_epDesc.simpleDesc
 
13. = (SimpleDescriptionFormat_t *)&GenericApp_SimpleDesc;
 
14. GenericApp_epDesc.latencyReq = noLatencyReqs;
 
15. afRegister( &GenericApp_epDesc );
 
16.
 
17. init_buzzer();
 
18. init_key();
 
19. init_sensor_io();
 
20. SensorId = *get_sensor_id(); 
 
21.
 
22. //初始化oled显示屏
 
23. oled_initial();
 
24. oled_disp_string(1,1,"武汉唯众智创科技");
 
25. oled_disp_string(3,1,"有限公司");
 
26. Delay_ms(500);
 
27.
 
28. //对传感器数据口P0.0 P0.1 P0.2 P0.3进行分类初始化
 
29. if(SensorId == S2_YYSB){
 
30. halUARTCfg_t uartConfig; //定义个串口结构体
 
31. uartConfig.configured = TRUE; //串口配置为真
 
32. uartConfig.baudRate = HAL_UART_BR_9600;
 
33. //波特率为9600
 
34. uartConfig.flowControl = FALSE; //流控制为假
 
35. uartConfig.callBackFunc = rxCB; //当模块收数据时,会调用这个函数进行处理
 
36. HalUARTOpen(HAL_UART_PORT_0,&uartConfig);
 
37. }else switch(SensorId){
 
38. case S12_DZ: 
 
39. Init_MAX7219();
 
40. break;
 
41. case S20_SYJC: //声音检测
 
42. P0DIR &=~0X02;
 
43. P0_1=0;
 
44. P0IEN |=0X02;
 
45. PICTL &=~0X01;
 
46. IEN1 |=0x20;
 
47. P0IFG &=~0X02;
 
48. EA=1;
 
49. break;
 
50. default: //P00获取传感器模拟值(单独初始化IO)  P01获取传感器开关值
 
51. init_data_io(0x11);
 
52. break;
 
53. }
 
54. }
 
55.
 
56. void rxCB(uint8 port,uint8 event)
 
57. {
 
58. u8 len=0;
 
59. switch(SensorId){
 
60. case S2_YYSB:   
 
61. len = HalUARTRead(0,(uchar*)RxBuf,sizeof(RxBuf));
 
62. memcpy(Rxdata,RxBuf,len-2);
 
63. oled_clear_vertical(2);
 
64. oled_disp_string(3,1,(char*)Rxdata);
 
65.
 
66. if(Rxdata[0]=='Y'&&Rxdata[1]=='E'&&Rxdata[2]=='S')
 
67. {
 
68. RfTx.Pack.Len = 2;                      
 
69. RfTx.Pack.Data[0] = 'Y';
 
70. RfTx.Pack.Data[1] = 'S';
 
71. }
 
72. else if(Rxdata[3]=='K'&&Rxdata[4]=='D')
 
73. {
 
74. RfTx.Pack.Len = 2;                      
 
75. RfTx.Pack.Data[0] = 'K';
 
76. RfTx.Pack.Data[1] = 'D';
 
77. }
 
78. else if(Rxdata[3]=='G'&&Rxdata[4]=='D')
 
79. {
 
80. RfTx.Pack.Len = 2;                      
 
81. RfTx.Pack.Data[0] = 'G';
 
82. RfTx.Pack.Data[1] = 'D';
 
83. }
 
84. else if(Rxdata[3]=='K'&&Rxdata[4]=='C'&&Rxdata[5]=='L')
 
85. {
 
86. RfTx.Pack.Len = 2;                      
 
87. RfTx.Pack.Data[0] = 'K';
 
88. RfTx.Pack.Data[1] = 'C';
 
89. }
 
90. else if(Rxdata[3]=='G'&&Rxdata[4]=='C'&&Rxdata[5]=='L')
 
91. {
 
92. RfTx.Pack.Len = 2;                      
 
93. RfTx.Pack.Data[0] = 'G';
 
94. RfTx.Pack.Data[1] = 'C';
 
95. }
 
96. else if(Rxdata[3]=='D'&&Rxdata[4]=='Q'&&Rxdata[5]=='W')
 
97. {
 
98. RfTx.Pack.Len = 2;                      
 
99. RfTx.Pack.Data[0] = 'D';
 
100. RfTx.Pack.Data[1] = 'W';
 
101. }
 
102. else if(Rxdata[3]=='D'&&Rxdata[4]=='Q'&&Rxdata[5]=='S')
 
103. {
 
104. RfTx.Pack.Len = 2;                      
 
105. RfTx.Pack.Data[0] = 'D';
 
106. RfTx.Pack.Data[1] = 'S';
 
107. }
 
108. else if(Rxdata[3]=='T'&&Rxdata[4]=='G'&&Rxdata[5]=='Y')
 
109. {
 
110. RfTx.Pack.Len = 2;                      
 
111. RfTx.Pack.Data[0] = 'T';
 
112. RfTx.Pack.Data[1] = 'Y';
 
113. }
 
114. else if(Rxdata[3]=='T'&&Rxdata[4]=='G'&&Rxdata[5]=='E')
 
115. {
 
116. RfTx.Pack.Len = 2;                      
 
117. RfTx.Pack.Data[0] = 'T';
 
118. RfTx.Pack.Data[1] = 'E';
 
119. }
 
120. else if(Rxdata[3]=='T'&&Rxdata[4]=='G'&&Rxdata[5]=='S')
 
121. {
 
122. RfTx.Pack.Len = 2;                      
 
123. RfTx.Pack.Data[0] = 'T';                        
 
124. RfTx.Pack.Data[1] = 'S';
 
125. }
 
126. else if(Rxdata[3]=='R'&&Rxdata[4]=='E')
 
127. {
 
128. RfTx.Pack.Len = 2;                      
 
129. RfTx.Pack.Data[0] = 'R';
 
130. RfTx.Pack.Data[1] = 'E';                                                                                       
 
131. }
 
132. else if(Rxdata[3]=='K'&&Rxdata[4]=='F')
 
133. {
 
134. RfTx.Pack.Len = 2;                      
 
135. RfTx.Pack.Data[0] = 'K';
 
136. RfTx.Pack.Data[1] = 'F';                                                                                       
 
137. }
 
138. else if(Rxdata[3]=='G'&&Rxdata[4]=='F')
 
139. {
 
140. RfTx.Pack.Len = 2;                      
 
141. RfTx.Pack.Data[0] = 'G';
 
142. RfTx.Pack.Data[1] = 'F';                                                                                       
 
143. }
 
144. else if(Rxdata[3]=='Z'&&Rxdata[4]=='J')
 
145. {
 
146. RfTx.Pack.Len = 2;                      
 
147. RfTx.Pack.Data[0] = 'Z';
 
148. RfTx.Pack.Data[1] = 'J';                                                                                       
 
149. }
 
150. else
 
151. {
 
152. RfTx.Pack.Len = 0;
 
153. }
 
154.
 
155. if(RfTx.Pack.Len == 2){
 
156. AF_DataRequest(
 
157. &GenericApp_DstAddr, &GenericApp_epDesc,
 
158. SensorId,
 
159. sizeof(RfPacket_t),
 
160. (byte *)&RfTx.Buf,
 
161. &GenericApp_TransID,
 
162. AF_DISCV_ROUTE, 
 
163. AF_DEFAULT_RADIUS);
 
164. }
 
165. memset(RxBuf, 0, sizeof(RxBuf));//清空接收缓冲区
 
166. memset(Rxdata, 0, sizeof(Rxdata));
 
167. break;168. }169. }
 
3. Android端软件代码:
 
语音识别控制实验 Android端软件代码语音识别控制实验 Android端软件代码
 
实验步骤
 
1) 将ZIGBEE协调器插在A9网关上
 
2) 将ZIGBEE节点插在节点底板上
 
3) 将语音识别传感器插在节点底板上
 
4) 用DC5V电源给A9网关供电,同时按下电源键3S开启网关
 
5) 用DC5V电源给节点底板供电,观察节点板液晶显示的内容
 
6) 打开语音识别传感器节点 ,打开相应的执行模块;
 
7) 打开A9网关,并打开指定APP ;
 
8) 点击 来设置 串口的波特率和串口号,并设置wifi服务器的端口号(默认情况下,wifi服务器自动开启);
 
9) 用户这是对着语音识别传感器说出指定的命令,当系统判断该命令是正确的时候,将会实现指定动作,开启相应的执行模块。


 

唯众物联网工程应用实训装置带你快速掌握物联网关键技术

唯众物联网实训室工程应用装置
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
1.  产品型号:WZ-IOT-ATP
2.  外型尺寸:
桌面式操作台1个操作台底座1个
3.  电压/功率:220V
4.  配套设备
实训台:
温湿度传感器1个
人体红外监测器1个
高频RFID阅读器1个
光照强度检测器1个
可燃气体监测器1个
RGB三色灯执行器1个
LED显示屏2个
智能语音播放设备1个
继电器1个
 
       物联网教学实训主要用于对物联网核心课程的知识点学习,能够服务于相关课程的实验和实训需求。
       核心课程主要针对学科基础技术的培养,掌握物联网概论,传感器和RFID 等感知设备认知和开发,ZigBee/Wi-Fi/蓝牙等无线网络的配置、维护和开发,物联网互联接入及存储,物联网应用层软件开发,物联网产品整合等基本知识。
       核心课程采用全模块化的实验箱教学产品进行实验,具备优良的教学实验特性:全模块化的设计、开放式的硬件接口、开源的实验代码、完整的教学资源、贴心的售后服务。
       基于ARM Cortex-M4核心的通信网关,支持无线节点模块的双向连接及组网,与配套“可视化编辑器”和“可视化控制器”进行配置和控制。物联网关可以管理不同协议的无线节点模块,并能将多个无线节点模块视作不同设备,将无线节点模块的数据转换为TCP网络通信进行传输,网关同无线节点模块可以互通互联,轻松构建物联网络,共同构成物联应用开发平台。通过本物联网平台,可以迅速降低物联网应用的开发成本和开发时间,开发者即便不会编程,也可以在一两天之内,就迅速使用本平台开发搭建出自己的物联网应用。
       通过电脑PC端可直接以“可见即可得”的方式在此工具上生成不同的设备操作界面,支持指示灯、按键、图片集合、变量视窗、图文链接等五种可视化控件。所有控件的动作都可以直接反应到实际的物联设备(即无线节点模块)上。界面生成后,可以直接导入App使用,而不需要重新编译或安装App。
       通过物联网关、可视化控制器、可视化界面生成器编辑器、万纳模组、物联网传感器/执行器以及配套物联网连件连接件,师生不仅可以完成出基于物联网、远程访问、设备联动等功能的物联网实训项目,还可以迅速开发物联网商业产品\项目,如空气监测仪、电气设备在线监测器等等,并随时实现不同设备间的联动,而这些开发过程,基于本系统的可视化开发工具,可以做到零编程实现物联网应用系统。
       支持家庭常用的各种无线协议(红外、射频),兼容市面绝大多数品牌的空调、电视机、灯光、安防、窗帘等等家电设备,因此可以直接当做一套完备的智能家居系统进行使用,并集成了摄像头功能,可以直接在App中使用摄像头。
       平台所有设备采用模块化、集散化、工业化的设计模式,每个模块都为独立工作单元;模块均接近实际应用系统,能够容纳2-3个学生同时实训,可完成工程项目应用开发系统中硬件设备的安装、布线与调试,完成设备间的无线组网,既具有展示型又具有实操性。能够组建具有行业特色的物联网智能家居实训项目,确保学生可利用设备搭建真实工程项目。
 

唯众物联网工程应用实训装置带你快速掌握物联网关键技术

唯众物联网实训室工程应用装置
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
1.  产品型号:WZ-IOT-ATP
2.  外型尺寸:
桌面式操作台1个操作台底座1个
3.  电压/功率:220V
4.  配套设备
实训台:
温湿度传感器1个
人体红外监测器1个
高频RFID阅读器1个
光照强度检测器1个
可燃气体监测器1个
RGB三色灯执行器1个
LED显示屏2个
智能语音播放设备1个
继电器1个
 
       物联网教学实训主要用于对物联网核心课程的知识点学习,能够服务于相关课程的实验和实训需求。
       核心课程主要针对学科基础技术的培养,掌握物联网概论,传感器和RFID 等感知设备认知和开发,ZigBee/Wi-Fi/蓝牙等无线网络的配置、维护和开发,物联网互联接入及存储,物联网应用层软件开发,物联网产品整合等基本知识。
       核心课程采用全模块化的实验箱教学产品进行实验,具备优良的教学实验特性:全模块化的设计、开放式的硬件接口、开源的实验代码、完整的教学资源、贴心的售后服务。
       基于ARM Cortex-M4核心的通信网关,支持无线节点模块的双向连接及组网,与配套“可视化编辑器”和“可视化控制器”进行配置和控制。物联网关可以管理不同协议的无线节点模块,并能将多个无线节点模块视作不同设备,将无线节点模块的数据转换为TCP网络通信进行传输,网关同无线节点模块可以互通互联,轻松构建物联网络,共同构成物联应用开发平台。通过本物联网平台,可以迅速降低物联网应用的开发成本和开发时间,开发者即便不会编程,也可以在一两天之内,就迅速使用本平台开发搭建出自己的物联网应用。
       通过电脑PC端可直接以“可见即可得”的方式在此工具上生成不同的设备操作界面,支持指示灯、按键、图片集合、变量视窗、图文链接等五种可视化控件。所有控件的动作都可以直接反应到实际的物联设备(即无线节点模块)上。界面生成后,可以直接导入App使用,而不需要重新编译或安装App。
       通过物联网关、可视化控制器、可视化界面生成器编辑器、万纳模组、物联网传感器/执行器以及配套物联网连件连接件,师生不仅可以完成出基于物联网、远程访问、设备联动等功能的物联网实训项目,还可以迅速开发物联网商业产品\项目,如空气监测仪、电气设备在线监测器等等,并随时实现不同设备间的联动,而这些开发过程,基于本系统的可视化开发工具,可以做到零编程实现物联网应用系统。
       支持家庭常用的各种无线协议(红外、射频),兼容市面绝大多数品牌的空调、电视机、灯光、安防、窗帘等等家电设备,因此可以直接当做一套完备的智能家居系统进行使用,并集成了摄像头功能,可以直接在App中使用摄像头。
       平台所有设备采用模块化、集散化、工业化的设计模式,每个模块都为独立工作单元;模块均接近实际应用系统,能够容纳2-3个学生同时实训,可完成工程项目应用开发系统中硬件设备的安装、布线与调试,完成设备间的无线组网,既具有展示型又具有实操性。能够组建具有行业特色的物联网智能家居实训项目,确保学生可利用设备搭建真实工程项目。
 


上一篇:物联网智能家居实训||实验八 报警灯控制实验

下一篇:物联网智能家居实训||实验十 语音播报控制实验