【学习目标】
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所示。
一、蓝牙知识准备
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所示
(2)设置手机文本转语音(TTS)功能引擎:
开启手机TTS引擎中的语音识别接口即可实现将文本转化为语音,也可以实现将语音识别为文本。本例主要是实现将语音识别转为文本的功能,反之亦然。以讯飞语音为例,可进入手机系统的“设置”——“常规管理”——“语言和输入”——“文本转语音”菜单(不同手机,菜单进入顺序可能有所不同),选择讯飞语音+的设置功能,并开启其系统识别接口,如图13-6所示:
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、提高任务:自行设计、编写一个实用性较强的语音控制软件。
欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) | Powered by Discuz! X3.3 |