清泛IT社区

标题: App Inventor 2 手机蓝牙及语音控制 [打印本页]

作者: App Inventor 2     时间: 2023-06-09 13:51
标题: App Inventor 2 手机蓝牙及语音控制
来源:http://www.zsqz.com/chuangke/13.htm

【学习目标】
  1.掌握蓝牙客户端或服务端组件的使用;
  2.学会编写手机蓝牙APP,并向Arduino发送控制指令;
  3.学会编写手机语音控制程序,并能通过语音控制Arduino等设备。

  【项目范例】
  1. 情境
  通过对APPInventor和Arduino的学习,我们对两个平台已经初步有了认识和了解,如何打通两个平台,实现利用手机对Arduino设备进行控制呢?
  蓝牙是一个非常成熟的无限近程控制技术,通过蓝牙,我们可以将两者有机结合,再加上讯飞语音,甚至能够实现语音远程控制。
  2.主题:手机蓝牙及语音控制
  3.问题:
  (1)手机如何与Arduino硬件建立联系?
  (2)如何使用语音识别功能并用此控制其他设备?
  4.规划:
  (1)利用蓝牙,通过APPInventor程序连接Arduino蓝牙模块;
  (2)利用蓝牙客户端组件编写手机蓝牙发送程序,发送动作控制Arduino上的LED灯;
  (3)利用科大讯飞语音+程序,开发语音识别功能,并通过蓝牙对Arduino进行控制。
  5.成果:
  语音控制LED灯运行的截图如图13-1所示。


  图13-1 手机控制“移动机械手”运行

  【学习过程】

  一、蓝牙知识准备
  1. APP相关知识
  列表选择框组件:便于用户从预设的条目中选择,如选择与手机配对的外部蓝牙设备;
  蓝牙客户端组件:用于建立手机蓝牙与外部蓝牙设备的配对连接,并向外部蓝牙设备发送指令。
  

  2. 蓝牙模块HC-05
  蓝牙技术设备在全球通用的频段为2.4GHz,数据速率为1Mb/s,可使相距30米以内的设备互相连接。 一般地,一个蓝牙设备一旦搜寻到另一个蓝牙设备,马上就可以建立联系,而无须用户进行任何设置,而且系统稳定。
  蓝牙模块HC-05是主从一体化模块,默认状态为从模块,若要变成主模块,可以进入AT状态,通过AT指令进行设置。 蓝牙模块HC-05与Arduino开发板的连接如图13-2所示。注意,除了RX、TX的交叉连接外,VCC应接Arduino开发板的3.3V。


  图13-2 HC-05与Arduino开发板的连接

  
  二、蓝牙发送程序
  登陆App Inventor网站,增加屏幕Screen,将屏幕“标题”属性设为“蓝牙控制LED”,并在手机上运行AI伴侣进行测试连接。
  1. 界面设计
  向界面编辑区拖入标签、按钮、列表选择框组件及蓝牙客户端组件,并进行相应的界面设计,如图13-3所示。


  图13-3 手机App程序界面

  2. 逻辑设计
  进入逻辑设计状态后,按如下思路编程:
  (1)利用“列表选择框”让用户选择已与手机配对的外部蓝牙设备;
  (2)当“列表选择框”完成后,让用户知道外部蓝牙设备与手机蓝牙可以通信;
  (3)根据“按钮”的功能(如“开”“关”等)让手机蓝牙向外部蓝牙设备发送指令。
  具体的逻辑设计,如图13-9所示。


  图13-4 手机APP逻辑设计

  三、语音控制
  在APPInventor中使用语音识别功能主要分为以下几步:
  (1)安装TTS引擎:

语音控制需要用到手机的TTS(文本转语音)功能,很多手机都可能已经内置了此项功能,但实际使用效果较好较方便的如“科大讯飞语音+”,可通过在手机的应用市场中搜索“讯飞语音+”来查找该软件,如图13-5所示


图13-5讯飞语音+软件下载


  (2)设置手机文本转语音(TTS)功能引擎:

  开启手机TTS引擎中的语音识别接口即可实现将文本转化为语音,也可以实现将语音识别为文本。本例主要是实现将语音识别转为文本的功能,反之亦然。以讯飞语音为例,可进入手机系统的“设置”——“常规管理”——“语言和输入”——“文本转语音”菜单(不同手机,菜单进入顺序可能有所不同),选择讯飞语音+的设置功能,并开启其系统识别接口,如图13-6所示:



图13-6 讯飞语音+设置界面
  (3)在APPInventor中调用语音识别功能:
  在开启识别接口后,即可在APPInventor中对此功能进行调用,具体步骤为:

  A. 设置蓝牙连接(见本节前述内容);
  B. 设置语音识别按钮和语音识别器组件,点击按钮调用语音识别功能;(如需将文字转换为语音,则此处应用文本语音转换器或语音合成器)
  C. 当语音识别器完成识别后,取出识别结果(文本),对其进行判断,并调用蓝牙发送动作指令;

  具体设计界面及代码如如13-7和13-8所示:


  图13-7 语音识别程序界面


  图13-8 语音识别程序代码

 四、Arduino接收程序
  不管是通过通过按钮控制还是通过语音识别控制,其最终的指令均通过蓝牙进行传输,因此其Arduino端的程序都是一样的,主要过程为:
  (1)利用蓝牙模块HC-05从串口读取手机蓝牙发来的指令并存入变量getstr中;
  (2)如果指令为“k”,则开灯(数字引脚13高电平);
  (3)如果指令为“g”,则关灯(数字引脚13低电平);

  完整的Arduino程序,可参考图13-9编写。


图13-9 Arduino接收程序



  【课堂任务】

 1、基础任务:根据本课内容,动手实践手机蓝牙和语音控制App的开发和调试运行。
  2、提高任务:自行设计、编写一个实用性较强的语音控制软件。



作者: App Inventor 2     时间: 2024-01-30 14:36
蓝牙硬件通用教程请看这里:
https://www.fun123.cn/reference/iot/ble.html




欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3