0
点赞
收藏
分享

微信扫一扫

基于OpenHarmony开发的语音小助手

本教程将演示如何在BearPi-HM_Nano开发板上使用GPIO输入功能去读取语音模块信息,实现开关灯自由!!

一、实验前器材准备

​​语音识别模块​​

基于OpenHarmony开发的语音小助手_引脚

​​语音播放模块​​

基于OpenHarmony开发的语音小助手_引脚_02

​​SD卡​​

基于OpenHarmony开发的语音小助手_ios_03

​​无源喇叭​​

基于OpenHarmony开发的语音小助手_引脚_04

​​BearPi-HM_Nano开发板​​

基于OpenHarmony开发的语音小助手_ios_05

​​E53—SC1模块​​

基于OpenHarmony开发的语音小助手_语音识别_06

​​面包板​​

基于OpenHarmony开发的语音小助手_鸿蒙_07

二、环境搭建

(1)搭建小熊派的开发环境

​​参考官方文档​​

三、电路连接

​​BearPi-HM_Nano开发板​​引脚连接

GPIO_11——P1.2(语音识别模块)

GPIO_12——P1.2(语音识别模块)

基于OpenHarmony开发的语音小助手_引脚_08

语音播放模块引脚连接

IO1——P1.2(语音识别模块)

IO2——P1.3(语音识别模块)

GND——GND(小熊派)

VCC——VCC(小熊派)

基于OpenHarmony开发的语音小助手_ios_09

语音识别模块引脚连接

GND——GND(小熊派)

VCC——VCC(小熊派)

P1.2——GPIO_11(小熊派)

P1.3——GPIO_12(小熊派)

基于OpenHarmony开发的语音小助手_ios_10

​​无源喇叭​​引脚连接

正极---SPK1(语音播放模块)

负极---SPK2(语音播放模块)

四、软件介绍

(1) BearPi-HM_Nano开发板

引脚初始化
GpioInit();

<strong>//初始化LED灯</strong>

IoSetFunc(<strong>WIFI_IOT_IO_NAME_GPIO_7</strong>, <strong>WIFI_IOT_IO_FUNC_GPIO_7_GPIO</strong>);

GpioSetDir(<strong>WIFI_IOT_IO_NAME_GPIO_7</strong>, <strong>WIFI_IOT_GPIO_DIR_OUT</strong>);

<strong>//初始化GPIO_11按键,设置为下降沿触发中断</strong>

IoSetFunc(<strong>WIFI_IOT_IO_NAME_GPIO_11</strong>, <strong>WIFI_IOT_IO_FUNC_GPIO_11_GPIO</strong>);

GpioSetDir(<strong>WIFI_IOT_IO_NAME_GPIO_11</strong>, <strong>WIFI_IOT_GPIO_DIR_IN</strong>);

IoSetPull(<strong>WIFI_IOT_IO_NAME_GPIO_11</strong>, <strong>WIFI_IOT_IO_PULL_UP</strong>);

GpioRegisterIsrFunc(<strong>WIFI_IOT_IO_NAME_GPIO_11</strong>, <strong>WIFI_IOT_INT_TYPE_EDGE</strong>, <strong>WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW</strong>, ON, ***\*NULL\**<strong>);

</strong>//初始化GPIO_12,设置为下降沿触发中断<strong>

IoSetFunc(</strong>WIFI_IOT_IO_NAME_GPIO_12<strong>, </strong>WIFI_IOT_IO_FUNC_GPIO_12_GPIO<strong>);

GpioSetDir(</strong>WIFI_IOT_IO_NAME_GPIO_12<strong>, </strong>WIFI_IOT_GPIO_DIR_IN<strong>);

IoSetPull(</strong>WIFI_IOT_IO_NAME_GPIO_12<strong>, </strong>WIFI_IOT_IO_PULL_UP<strong>);

GpioRegisterIsrFunc(</strong>WIFI_IOT_IO_NAME_GPIO_12<strong>, </strong>WIFI_IOT_INT_TYPE_EDGE<strong>, </strong>WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW<strong>, OFF, </strong>*\*NULL\****);
中断调用函数

      这部分代码主要分析语音识别到指令触发中断的功能代码,这里以ON函数为例,语音识别模块P1.2的引脚与主控芯片的GPIO_11连接,首先通过调用IoSetFunc()和GpioSetDir()将GPIO_11设置为普通GPIO的输出模式。从前面原理图可知,当收到指令时,GPIO_11会被下拉到地,所以这里要使用IoSetPull()将GPIO_11引脚设置为上拉,这样才能产生电平的跳变。最后通过GpioRegisterIsrFunc()将中断类型设置为边沿触发,且为下降沿触发,当按键被按下时,GPIO_11会从高电平转为低电平,产生一个下降,这个时候就会触发中断并回调ON函数。在ON函数中实现点亮LED灯操作。

<strong>static</strong> <strong>void</strong> ON(<strong>char</strong> *<strong>arg</strong>)

{

(<strong>void</strong>)<strong>arg</strong>;

GpioSetOutputVal(<strong>WIFI_IOT_IO_NAME_GPIO_7</strong>, 1);}

<strong>static</strong> <strong>void</strong> OFF(<strong>char</strong> *<strong>arg</strong>)

{

(<strong>void</strong>)<strong>arg</strong>;

GpioSetOutputVal(<strong>WIFI_IOT_IO_NAME_GPIO_7</strong>, 0);}

(2)​ ***\*语音识别模块代码介绍\****

##### <strong>引脚定义</strong>

sbit PA3=P1^2; //对应板上标号 P1.2

sbit PA4=P1^3; //对应板上标号 P1.3

##### <strong>功能实现</strong>

switch(dat) /*对结果执行相关操作*/

{

case CODE_DMCS: /*命令“开灯”*/

PrintCom("命令识别成功\r\n"); //串口输出提示信息

PA3=0;//让PA1端口为低电平 break;

case CODE_KFBYZ: /*命令“关灯”*/

PrintCom("命令识别成功\r\n");//串口输出提示信息

PA4=0;//让PA2端口为低电平

break;

}

五、实物图

等待指令

基于OpenHarmony开发的语音小助手_引脚_11

接收到“开灯”指令


基于OpenHarmony开发的语音小助手_ios_12

举报

相关推荐

0 条评论