提高开发效率-蓝牙调试器

蓝牙调试器

    这篇文章的受众是本专科院校有理想的青年或已经踏入社会的电子工程师们。本文章旨在介绍一款在Android设备上通过使用蓝牙功能实现无线调试的应用。

一、蓝牙调试器介绍

    此蓝牙调试器历时一个多月开发完成,其基于安卓设备,通过安卓设备的蓝牙通信功能实现单片机的无线调试。编写这款软件的目的主要是为了盈利, 嗯,当然是为了广大的单片机开发爱好者,拯救他们于繁琐的调试步骤之中。没错,我已经做好了一分钱都收不到的觉悟了,为此我在这个应用的开头加了个广告,至少保证我能一天收入一根冰棍。


   先说一下本应用适用的场景,首先最迫切需要本应用的场景是采用PID或者其它控制器的单片机系统,比如自写飞行器飞控、自写直立车控制、智能车竞赛、板球控制系统、风力摆控制系统、倒立摆控制系统、电机调速系统、温控系统、液位系统等等。总之所有需要不断设置参数以获得最佳效果的单片机系统都是我要搭救的目标。会有人问我为什么有这么足的底气,因为我有过三次电赛经验和两次智能车经验。且电赛的15年和17年分别凭借风力摆和板球拿了国一(软硬兼有,队友买材料)。看他们淘宝卖家秀国一,我也来秀一秀好了。

    不说废话了,前方大量截图警告!!!

在使用本应用前,你首先需要有这种模块(HC-05、HC-06 或者 其它支持串口数据透传的模块):


蓝牙串口模块

    本应用针对一些BLE透传模块专门做过优化,可以支持一部分BLE蓝牙透传模块,如JDY-08型,至于其它的模块由于舍不得买我也就不知道能不能用了。

二、设备的扫描和连接


设备扫描列表

    打开应用,会出现上图的界面。应用提供了一个蓝牙设备扫描和连接的界面,点击下方的圆形按钮可以启动扫描功能,扫描到的设备会出现在列表中。

    点击列表中右方的加号按钮进行连接,初次连接可能会弹出设备配对的对话框,需要输入配对密码,此时不要慌,尝试输入0000或者 1234,一般是会通过的,不然就输入123456,如果还不行那只有一种可能就是此蓝牙模块的配对密码被改动过。

    配对成功后,再次点击加号按钮,此时不出意外的话,就可以连接成功了,连接成功后,加号会变成红色的“X”,如果在点击此“X”号的话,则应用会断开与此模块的连接。

    在连接成功后,界面最上方的状态栏会显示已经连接的设备,并且显示当前蓝牙连接的数据收发的情况。

注意:1.当开启扫描时,应用会自动断开当前正在连接的设备

           2.应用无法连接手机等设备,只能与蓝牙串口模块建立通信

三、简单文本收发


对话模式

    成功连接设备后,可以使用应用直接与蓝牙模块实现文本形式的发送和接收。在下方的输入框输入要发送的文本数据,然后点击向上的箭头,文本就会被发送到蓝牙模块。此时单片机就可以从蓝牙模块的TX口接收到传输的数据。

注意:1、蓝牙模块的串口波特率的设定是非常重要的,单片机的串口在配置时一定要与蓝牙模块的串口波特率一致,否则只能接收到乱码。

           2、在传输较大量的数据时(超过每秒500B),需要确保蓝牙模块被设定为较高的串口波特率。

四、快捷按钮发送


按钮界面

    应用共11个可自定义的按钮,按下和抬起时都会发送不同的数据,从而适用更多的使用场景。画面上方的空白横条将会将会显示从单片机传输过来的数据,可以用来观察单片机的状态。点击右下角的编辑模式,然后点击按钮即可编辑按钮。


按钮编辑

    对于每个按钮,都可以编辑其显示名称、按下时发送的数据和松开时发送的数据。编辑结束后,可以按下“结束编辑”按钮,应用会退出编辑模式,再按按钮时即发送数据,这一点非常人性化,嗯,个人认为。

五、调试工程

5.1 添加工程


调试工程列表

    调试工程这一功能是应用最核心的功能,它提供了高度自由化的控制界面让你可以为你的设计实时调试参数,实时反馈状态,并以波形的形式显示出来。对于每一个设计你都可以对应的建立一个工程。

点击下面的“+”按钮可以添加新的工程。


添加新工程

    在此,你可以为你的工程命名,并可以选择以横屏或者竖屏的界面来调试。


工程列表

    可以看到已经添加了一个工程,这个工程所有的配置会一直保留,直到你将应用卸载。此时点击此工程可以弹出操作选项。

调试工程下方的四个选项

    工程下有四个选项,第一个是修改名称,同时也可以改变调试的横竖屏方向。第二个是控件布局的编辑,你可以自由定义多种控件以支持你的调试。第三个是通信设置,设置通信结构是最为重要的一个环节,你需要根据实际要反馈的状态和要设定的参数进行配置。第四个是删除工程。

此时点开“编辑控件”按钮。

5.2 编辑控件


控件编辑

    图为编辑控件的界面,右上角有一堆工具,靠上方的分别是:新建控件、控件数据链接、控件参数设置、控件删除以及退出调试。靠右方的三个按钮则是编辑模式切换:分别为位置、大小和旋转。

此时点击“新建控件”。


控件列表

    本应用支持多种控件,可以根据实际要操作的变量合理选择。此时点击“按钮”控件。

为控件链接数据

    此时会出现链接对话框,要求你为新建的控件链接一个变量。之后当你按下按钮时,其链接的变量就会被赋值。然后发送到单片机端。由于我事先没有在“通信设置”中添加变量,因此现在暂时不链接。点击对话框以外的区域跳过此步骤。


按钮

    此时会发现画面中多了一个按钮,你可以按住它并来回拖动,左下方会显示该按钮的坐标以及尺寸。如果你觉得按钮太小,可以点击右上角的缩放按钮,然后手指在屏幕中向右下角滑动


按钮放大

如此就实现了控件缩放的调整。如果你想要控件摆放的不拘一格,那么你可以点击右上角的旋转按钮,然后手指在屏幕中左右滑动。


按钮旋转

    如此就实现了控件的旋转,现在多添加几个控件。


几种不同的控件

    从上到下依次是按钮、开关、文本框、可编辑文本框、能量槽、滑动条和参数微调框。

此外,还有三个大家伙:


三个大控件

分别是X-Y型波形图,摇杆和Y-T型波形图:

X-Y型波形图可以显示由两个变量表示的点,并记录和显示这个点的轨迹。

摇杆,就是摇杆,手指在摇杆区域拖动时,其XY轴链接的两个变量也会变化。

Y-T型波形图其实就是波形图,最多可以显示六个通道的波形。

编辑完成后,可点击右上角的“X”按钮回到主界面。

5.3 调试界面


调试界面

    在主界面中点击调试工程右边的“运行”(三角)按钮。进入调试界面,如上图,此时没有控件编辑的一堆工具了,右上角只有一个“X”,左上角的标签正在显示实时的通信速率。Tx  Rx分别代表手机通过蓝牙发送和接收的速率。而Err则表示手机接收到的数据不准确速率。如果此速率与Rx相近,则说明,单片机没有按照指定的数据包协议传输数据。

    以上是没有链接变量的调试界面,接下来要加入变量了。

5.4 数据设置

5.4.1 数据包结构设置

数据结构设置

    在主界面,点击调试工程下面的黑色按钮“通信设置”。进入通信设置界面,可能你会感到一阵头晕,东西好抽象。其实一点都不抽象,让我来理一理。首先,看界面的上半部分,有一个白色区域,里面有比例条状图形,这个比例条状的图就描述了数据包的结构中各个成分的占比。比如我现在没有添加变量,那么只有一个黑色的包头字节和灰色的校验和包尾字节,共三个字节。点击右上角的“?”看一下数据包的解释。


数据包解释

    这已经是我能想到的最简单的一种可以按结构进行数据传输的协议了。包头、校验、包尾的存在意义就是为了同步,将数据按照一定的结构发出去然后从接收端取出来。再看下半部分:


五种类型的变量

    本应用支持五种不同类型的变量:分别为逻辑值、字节值、短整形、整形和浮点型。之所以分类分得如此细,是为了减少通信的数据,减轻单片机的负担,并提高通信的速率。比如逻辑bool类型的值取值只有0和1,而一个逻辑值只占1/8个字节的大小,当控制等的开关,电机的启停、状态的使能时都可以使用bool类型以减轻通信负担。字节类型的取值范围为-128~127,短整形则为-32768~32767,以及范围更大的整形和浮点型。

    对于每一个类型的变量,在右上角都有相应的编辑按钮,“+”为添加变量。绿色按钮为修改名称。“X”为删除变量。

现在添加一个逻辑值变量:


添加一个变量


添加变量后

     可以看到,在界面上半部分的比例条状图中,多出了一个紫色块,下面的列表中多了一个“led1”的圆圈。再多添加几个变量:

添加多个变量

    你可以自由地无限添加变量,数目是没有限制的。配置好发送数据包后,可以在下方可以选择接收数据包,接收数据包描述的是单片机发过来的数据的结构,因此你在通过单片机回传数据的时候,也要以规定的协议发送数据。

5.4.2 通信模式设置

然后是“通信模式”的设置。点击下方的通信模式按钮,进入设置界面:

通信模式设置

    应用支持三种通信行为,一种是定时向单片机发送数据包,单片机接收到数据后,将当前需要的状态数据打包回传到手机。第二种是不发送只接收单片机定时向手机发送的数据包。第三种则是比较高级,由于用户并不是每时每刻都在修改参数,因此定时发送的数据包会有大量的重复,发送没有意义。为了解决这个问题,在第三种模式下,应用只有在用户操作控件时才发送数据包。这样可以大幅减轻单片机处理数据的负担。除了设置通信模式外,还可以设置定时发送时的发送间隔。以及控件操作时发送的数据间隔等。

5.5 控件数据链接

    设置好数据包变量后,进入“控件编辑”界面,为现有的控件链接变量。如下图所示


选中摇杆

点击选中中间的摇杆,然后点击上方的绿色链接按钮,出现如下画面

链接变量

    在此界面中,你可以选择要连接的变量的方向、类型以及名称。这里我链接了之前定义的发送方向、short类型的X变量和Y变量。选定后点击对话框周围的区域进入下一步。

控件参数设定

    应用需要你指定这个摇杆的上下限,默认为-128~127,同时你也可以设置其它参数比如使摇杆在你松开后自动归零。此时点击“OK”。以同样的方法配置其它的控件,返回主界面,进入调试界面:

调试界面

    可以看到在下面的波形显示中已经有一条黄线了,只是由于现在没有配置好接收数据包的结构,因此波形没有起伏。至此调试功能基本就简单的介绍到这了,里面各种控件的使用可以自行摸索。

六、设置

设置

    设置界面主要是设置关于蓝牙的表现,如自动扫描,自动连接等。同时应用支持过滤的功能,你可以通过输入关键字的方式让设备列表中只出现相关的设备,而不会出现手机等设备乱入的情况。

    好了,这就是关于蓝牙调试器的简单介绍了,之后会以实战的形式带大家领略其强大的功能。相信我,用这个应用可以让你把单片机玩出花来。

    欢迎来我的github下载单片机端的示例程序


注:目前这个蓝牙调试器还是初级版本,还有一些想法没有实现,比如二值化图像传输、重力感应控件、wifi网络调试等,但是现在确实支撑不下去了,不管是经济还是时间压力都比较大,如果你对我的应用感兴趣的话,那就赞赏支持一下吧,让我知道自己做的事情还有人在关注。

推荐阅读更多精彩内容