今天介绍Arduino上的串口使用方法,配合用APP Inventor编写的手机APP,通过蓝牙通讯模块实现手机APP和NOVA的通讯。
玩法将更加多样、炫酷哦!
在介绍APP Inventor编程和蓝牙通讯模块使用之前,有必要简单介绍一下“串口通讯”的概念。
1
串口通讯
上图是MCU(微控制单元)驱动单个LED的电路,那么驱动多个LED的电路呢?玩过Arduino朋友都不会陌生。如下图:
像上图这样由多个IO口同时传输数据的通讯方式,称为“并口通讯”。
形如上图的通讯方式均为“并口通讯”。不难想到并口通讯方式的优点是传输是速度快,而缺点是线路复杂,一次要传输多少位的数据,就得连接多少根导线。
而“串口通讯”,通常只有“TXD(发送)”和“RXD(接收)两根信号线”,不论有多少数据需要传输,都通过这两根线实现,接线简单。
其中CLK不是一根导线,它是“波特率”,指通过串口发送数据的速度,即单位时间内发送数据的个数。
互相传输数据的两端的波特率设置必须完全相同,才能保证通讯的正常。
一汽车倒车,一路人很热心——“倒……倒……倒……倒不得了!”
可车子一只轮胎已滑进路边水沟。车夫怒气冲冲下来,旁观者说,“那人是一结巴。”
通讯两端波特率不同就会闹出想上面笑话里那样的误会。
NOVA HD主控板上的串口有两个,分别为“串口”和“串口1”,对应USB接口和C0接口。USB串口负责下载程序和串口打印;C0串口1则用来连接蓝牙模块。
这里有的同学可能会问,为什么不叫“串口1”和“串口2”?是因为其命名规则沿用Arduino体系下的“Serial”和“Serial1”。
串口通讯方面的知识告一段落,更详细的串口知识介绍,可以点击“串行外设接口”(以前连载的电路知识系列中为一篇文章)
手机APP、蓝牙模块、NOVA HD主控板三者的连接和数据流向是怎样的呢?
手机APP向NOVA HD主控板发送数据
NOVA HD主控板向手机APP发送数据
2
APP Inventor
App Inventor是一款谷歌公司开发的手机APP编程软件,与是类似于Scratch、Mixly的图形化积木式编程软件。
APP Inventor也有在线编程平台,这里笔者推荐广州电教网的:http://app.gzjkw.net
APP Inventor的相关资料网站推荐:http://www.17coding.net/。
APP Inventor因为没有官方中文版,所以各家中文版平台的翻译略有不同,查阅资料时发现命名上的冲突,最好是查找对应的英文说明。
登录APP Inventor编程平台
可以直接用QQ账号登录。
新建项目:
APP Inventor的项目分为“组件设计”和“逻辑设计”两部分,上图是组件设计界面。
其中,“组件面板”是组件库,里面有按键、文本框、滑动条、画布、蓝牙客户端等一系列组件,可以通过鼠标拖拽的方式添加到APP中。
“工作面板”的内容和最后生成的APP是完全一致的,即可以通过工作面板看到你最后做出APP是什么样子的。
“组件列表”是APP中所有组件的关系树,即屏幕1中有几个组件、屏幕2中有几个组件,名称各是什么。
“组件属性”是各个组件的具体参数设置,大部分参数可以在逻辑程序运行过程中修改。
逻辑设计是用于设计APP各组件对应的程序,即设计当用户操作各组件时,APP做出什么样的反应。
本次教程将通过APP Inventor编写一个控制NOVA端LED灯亮灭的程序。
在编写完整的APP之前,先实现按钮的一个小程序,即按一下按钮,按钮的文本由“ON”变为“OFF”;再按一下按钮,按钮的文本由“OFF”变为“ON”;
这些模块的颜色与Scratch相似,按照不同的功能种类,有不同的颜色,大家可以根据示例程序中各模块的颜色去模块库中寻找,这里不多做赘述。
在做完上述小程序APP后,可以让它在手机上运行。可以用AI伴侣快速的在手机上运行写好的APP。
点击“帮助”菜单下的“AI同伴信息”:
点击链接下载:
浏览器可能会弹出“不安全”提醒,选择继续访问。该网站是安全可靠的,由广州市电教馆开发维护。
手机上打开AI伴侣APP,扫描网页上AI伴侣生成的二维码,即可快速的运行编写好的APP,具体操作流程如下:
3
蓝牙程序的编写
蓝牙相关程序的编写,需要添加一个“蓝牙客户端”组件,它是非可视组件,即在APP中看不见它。
蓝牙模块需要选择之后才能连接,所以这里需要添加一个“列表选择框”组件。
将“列表选择框”组件名和文本名都改为“蓝牙列表”,提升程序可读性。
在逻辑设计界面里编写蓝牙模块选择程序。
程序运行效果:点击“蓝牙列表”组件,弹出蓝牙地址的选择框;再点击选择要连接的蓝牙地址,之后蓝牙连接成功。
接下来配合NOVA HD主控板和蓝牙模块,来实现手机APP和蓝牙模块的连接。
4
NOVA HD主控板与蓝牙模块的连接
NOVA的蓝牙模块上有一个8针的接口
这里的设计是为了实现防反接,两列的4个接口是轴对称的,只要做到与C0 4对4的接插,就一定不会有问题。
因为接的C0是红色接口,所以需外部供电,可以接上电池或适配器。
供电之后,蓝牙模块上的LED灯会闪烁,表示未连接,一旦连接成功,LED将变为长亮。
5
手机与蓝牙模块的配对
这里用的蓝牙模块为蓝牙2.0模块,在连接之前,需要在系统设置中完成配对。
配对示例:(示例系统版本为Android 5.0)
用AI伴侣,将写好的APP在手机上运行。按照下图的操作顺序,实现蓝牙模块的连接。
LED长亮之后,代表蓝牙连接成功。接下去继续编写蓝牙程序,让按钮处于“ON”和“OFF”时发送不同的数值。
在按钮文本切换的程序中添加蓝牙客户端发送数字的程序模块。
这时运行APP,如果未连接蓝牙,
就电机“ON/OFF”按钮,
会弹出一个错误提示,是因为蓝牙无连接情况下发送数字的报错。
所以这里应该添加一个判断条件。即新建一个全局变量“蓝牙连接成功”,它是一个布尔量,只有“true(真)”和“false(假)”两个值可取。
初始化时,变量“蓝牙连接成功”为“false(假)”,当蓝牙地址选择完成之后,将其变为“true(真)”。
手机APP端的程序编写完成,接下来编写NOVA HD端的程序。
全部的编程工作完成,可以用手机控制LED的亮灭了,同学们试试看吧。