基于OpenHarmony开发的语音小助手

基于OpenHarmony开发的语音小助手

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

一、实验前器材准备

语音识别模块

在这里插入图片描述

语音播放模块

在这里插入图片描述

SD卡

在这里插入图片描述

无源喇叭

在这里插入图片描述

BearPi-HM_Nano开发板

在这里插入图片描述

E53—SC1模块

在这里插入图片描述

面包板

在这里插入图片描述

二、环境搭建

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

参考官方文档

三、电路连接

BearPi-HM_Nano开发板引脚连接

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

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

在这里插入图片描述

语音播放模块引脚连接

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

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

GND——GND(小熊派)

VCC——VCC(小熊派)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jzdgTzjy-1648207410102)(file:///C:\Users\han\AppData\Local\Temp\ksohtml224264\wps9.jpg)]

语音识别模块引脚连接

GND——GND(小熊派)

VCC——VCC(小熊派)

P1.2——GPIO_11(小熊派)

P1.3——GPIO_12(小熊派)

在这里插入图片描述

无源喇叭引脚连接

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

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

四、软件介绍

(1) BearPi-HM_Nano开发板
引脚初始化
GpioInit();

  **//初始化LED灯**

  IoSetFunc(**WIFI_IOT_IO_NAME_GPIO_7**, **WIFI_IOT_IO_FUNC_GPIO_7_GPIO**);

  GpioSetDir(**WIFI_IOT_IO_NAME_GPIO_7**, **WIFI_IOT_GPIO_DIR_OUT**);

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

  IoSetFunc(**WIFI_IOT_IO_NAME_GPIO_11**, **WIFI_IOT_IO_FUNC_GPIO_11_GPIO**);

  GpioSetDir(**WIFI_IOT_IO_NAME_GPIO_11**, **WIFI_IOT_GPIO_DIR_IN**);

  IoSetPull(**WIFI_IOT_IO_NAME_GPIO_11**, **WIFI_IOT_IO_PULL_UP**);

  GpioRegisterIsrFunc(**WIFI_IOT_IO_NAME_GPIO_11**, **WIFI_IOT_INT_TYPE_EDGE**, **WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW**, ON, ***\*NULL\****);

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

  IoSetFunc(**WIFI_IOT_IO_NAME_GPIO_12**, **WIFI_IOT_IO_FUNC_GPIO_12_GPIO**);

  GpioSetDir(**WIFI_IOT_IO_NAME_GPIO_12**, **WIFI_IOT_GPIO_DIR_IN**);

  IoSetPull(**WIFI_IOT_IO_NAME_GPIO_12**, **WIFI_IOT_IO_PULL_UP**);

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

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

**static** **void** ON(**char** ***arg**)

{

  (**void**)**arg**;

  GpioSetOutputVal(**WIFI_IOT_IO_NAME_GPIO_7**, 1);}

**static** **void** OFF(**char** ***arg**)

{

  (**void**)**arg**;

GpioSetOutputVal(**WIFI_IOT_IO_NAME_GPIO_7**, 0);}
(2) 语音识别模块代码介绍
##### **引脚定义**

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

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

##### **功能实现**

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

 {

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

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

PA3=0;//让PA1端口为低电平							break;case CODE_KFBYZ:	 /*命令“关灯”*/

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

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

break;

}

五、实物图

等待指令

在这里插入图片描述

接收到“开灯”指令

在这里插入图片描述

`

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口气吃不成胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值