APP下载

米思齐的手机蓝牙之路

2018-07-12刘晓静滕永丰

中国信息技术教育 2018年11期
关键词:串口列表控制器

刘晓静 滕永丰

以Arduino为基础的创意电子类创客教育课程正逐步在中小学推广开来。然而,由于受到其本身技术门槛的限制,创意电子类课程的开设对广大师生提出了巨大的挑战(Arduino需要通过C/C++语言编程实现创意,这对低年龄段的学生来说难度太大)。

图形化编程工具可以降低学习的难度,Mixly(全称为Mixly_Arduino,中文名为米思齐)因此应运而生,它是由北京师范大学教育学部创客教育实验室傅骞教授团队开发的图形化编程软件。

教师做桌面创客到了一定的阶段,难免想尝试物联网,想与手机、WIFI相连,但没有一定的C语言功底是不行的,不过不用灰心。Mixly现有版本,支持手机蓝牙与Arduino的连接,这里笔者就以安卓手机结合Arduino控制器,利用Mixly和App Inventor编程,实现手机控制板载LED灯的亮灭。

思路

用Mixly为Arduino控制器编程,用App Inventor编写一款手机控制软件,二者通过蓝牙配对,实现手机控制板载LED灯。

硬件准备

(1)Arduino控制器及USB:本例中用Dfrobot公司的Romeo BLE多合一控制器,它自带了蓝牙模块的接口APC220,而且这个主控板可以驱动电机,做蓝牙遥控车也很方便。

(2)蓝牙模块:App Inventor里面的蓝牙功能对应的是蓝牙2.0,尽管笔者的Romeo BLE控制器自带蓝牙4.0,但受App Inventor的限制,必须换用蓝牙模块2.0标准。

蓝牙模块的选择有两种:一种是Dfrobot生产的,与Romeo BLE控制器相匹配,连接起来相当省事的DF-BluetoothV3蓝牙串口模块(如图1),注意它的蓝牙协议是Bluetooth Specification v2.0+EDR,符合笔者的要求,缺点是价格小贵。

另一种是BT06蓝牙串口模块(如图2),兼容HC-06,蓝牙协议为Bluetooth Specification V2.1+EDR,也符合要求。优点是价格低,缺点是连接要用到四根一头公、一头母的杜邦线,还要注意接法,本例用的就是这种普通的BT-06蓝牙串口模块。

硬件链接

Romeo BLE多合一控制器上有APC220接口专门用于连接蓝牙接口,BT06蓝牙串口模块有四个引脚,其中VCC接5V,GND接GND,TXD接控制器APC220的RX,RXD接控制器APC220的TX,APC220共有七个接口,用了四个,余下三个空着即可(如图3)。

软件准备

Mixly:0.984版本。

App Inventor2:安卓手机端图形化编程软件,目前国内已经有中文服务器了,可以在线编程,手机直接扫描二维码或使用AI伴侣即可运行,比较方便。

编程

Mixly的编程如图4所示。

App Inventor的編程:从“通信连接”拖入一个蓝牙客户端,用于与Arduino通信。拖入一个列表选择框,用于选择需要连接的蓝牙设备。拖入两个标签用于显示蓝牙状态。拖入一个按钮用以断开蓝牙,拖入两个按钮用于发送开灯命令和关灯命令以控制板载的LED灯,界面完成后如图5所示。组件设计完毕,接下来进行程序的编写,总程序如下页图6所示。

现在对程序分别进行说明。

当screen1初始化的时候,将“断开连接按钮”的“启用”属性设置为“false”,由于刚开始运行时蓝牙设备并未连接,因此“断开连接”按钮需要设置为假。蓝牙BT06模块要先成为已配对设备,然后就可以打开列表进行选择,因此第二句的作用是把已配对蓝牙列表显示出来供用户选择。

蓝牙使用的标准流程即配对→连接,配对只在新设备第一次连接时用一次,连接则是每次都需要操作的。因此,蓝牙BT06模块在加电以后,在手机上先要配对成功,这样在“已配对列表中”就可以找到了(如下页图7、图8)。

本例中,蓝牙BT06模块,从模式、初始密码1234、串口缺省波特率为9600bps,这三者可根据所用模块的资料进行相应的修改,需要专门的串口调试模块,此处不再展开,本文所用均为缺省值。

状态指示LED:用于指示蓝牙模块所处状态,LED灯闪烁方式与蓝牙模块状态对应如下页表所示。

接下来,当用户点击了列表中的选项后,就需要连接蓝牙了,首先断开原来连接的蓝牙设备,接下来连接用户选择的蓝牙设备,此处有地址、唯一编号两个参数(如下页图9)。“地址”:Arduino设备上的蓝牙模块对应的MAC地址,也就是上一步操作后的“选中项”;“唯一编号”:

00001101-0000-1000-8000-00805F9B34FB。

此处的唯一编号即UUID,因为笔者使用的是蓝牙串口与Arduino通信,因此使用这个编号,此编号不可以变。

UUID是“Universally Unique Identifier”的缩写,通用唯一识别码的意思。对于蓝牙设备,每个服务都有一个与它对应的UUID(唯一的)。连接蓝牙这个动作会返回連接成功还是失败,成功即为true,失败即为false,此处可以使用如果判断来判断蓝牙连接成功或者失败,如果连接成功就显示“已连接”,同时让“断开连接”按钮可使用,否则连接失败就显示“未连接”,同时让“断开连接”按钮不能使用。

接下来,笔者介绍一下三个按钮的功能:①“断开连接”按钮点击后断开连接,同时设置一下蓝牙状态和按钮禁用;②开灯按钮点击后发送文本“a”,关灯按钮点击后发送文本“b”,即点击两个按钮分别发送不同的字符,那么Arduino程序就可以根据接收到的文本信息判断是需要进行开灯还是关灯操作(如图10)。

App Inventor程序编辑完毕即可打包apk下载到手机进行安装了。Mixly端程序简单,因为蓝牙模块就是串口通信,因此只要设置蓝牙串口然后读取串口数据进行判断即可。程序编写完成上传到Romeo BLE控制板中,注意上传的时候需要拔下蓝牙模块,上传完毕后再插上蓝牙模块,此时模块上的指示灯快速闪烁即为等待连接状态,打开手机配对并连接,指示灯长亮即为已连接,然后点击“开灯”“关灯”就可以尝试控制板载的LED灯。

猜你喜欢

串口列表控制器
南京溧水电子3款控制器产品
水泥生料立磨压差变参数二型模糊控制器设计
扩列吧
基于NFV的分布式SDN控制器节能机制
MCS—51单片机中的多串口通讯技术的应用
列表法解分式方程问题探索
列表画树状图各有所长
全国计算机等级考试机房准备工作探讨
微机串口的测试诊断
智能液位控制器在排水系统中的应用