蓝牙调试器

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

一、蓝牙调试器介绍

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

先说一下本应用适用的场景,首先最迫切需要本应用的场景是采用PID或者其它控制器的单片机系统,比如自写飞行器飞控、自写直立车控制、智能车竞赛、板球控制系统、风力摆控制系统、倒立摆控制系统、电机调速系统、温控系统、液位系统等等。总之所有需要不断设置参数以获得最佳效果的单片机系统都是我要搭救的目标。

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

在使用本应用前,你首先需要有这种模块(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”。以同样的方法配置其它的控件,返回主界面,进入调试界面:

调试界面

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

六、设置

设置

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

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

其实现在这个应用还远没有做到预期效果,目前正在考虑加入 重力感应控件、二值化图像传输、HEX收发功能,添加TCP/IP网络设备调试等。但我已经花费了一个月多的时间,现在看来并没有多少人用,心中难免失落。

如果你觉得我做的东西有些意义的话, 评论或者打赏支持一下吧,让我有坚持“不务正业”下去的动力。

蓝牙调试器-划时代无线调试器相关推荐

  1. 无线网络管理器到底都有谁在使用

    无线网络管理器是一种用于管理和配置无线网络连接的软件工具. 无线网络管理器在无线网络技术得到广泛应用后产生.最初的无线网络管理器是由各种无线设备供应商开发的专有软件,但是后来随着无线网络技术的不断发展 ...

  2. 无需插数据线,adb通过wifi无线调试

    由于我的MacBook pro 只有两个Type-C接口,一个充电一个外接屏幕,手机调试只好用无线调试,分享一下. 前提准备 通过adb --version命令确认以下你的sdk有没有安装30api或 ...

  3. 自制基于jlink的无线调试器

    一.无线调试器说明 许多单片机支持使用SWD与JTAG接口在线仿真调试,但很多场景下(如无人机.移动机器人),我们没有办法在设备运行的过程中将线缆插到设备上进行有线调试,这时候一个可以远程debug和 ...

  4. linux vc 调试方法,VC实现【API钩取】【调试法】附加调试器

    最近在学习逆向核心,在论坛也发了几篇帖子说说自己的经验,帮助自己巩固知识,也方便了大家. 如果帖子中有什么疏漏甚至不对的地方,请大牛们指出,我会积极改正的! 废话不多说,还是我[Miss丿小沫],上教 ...

  5. Visual Studio调试器指南---自动启动调试器

    visual studio 启动调试器,等待 app 连接 Visual Studio调试器指南---自动启动调试器 Visual Studio调试器指南---自动启动调试器 - 走看看 有时,可能需 ...

  6. python调试器原理_调试器工作原理——基础篇

    本文是一系列探究调试器工作原理的文章的第一篇.我还不确定这个系列需要包括多少篇文章以及它们所涵盖的主题,但我打算从基础知识开始说起. 关于本文 我打算在这篇文章中介绍关于Linux下的调试器实现的主要 ...

  7. 【瑞萨RA4系列】硬件调试器烧录和调试指南

    [瑞萨RA4系列]硬件调试器烧录和调试指南 文章目录 [瑞萨RA4系列]硬件调试器烧录和调试指南 一.背景简介 二.连接调试器 三.设置Keil项目 四.烧录和调试 4.1 Keil中烧录 4.2 K ...

  8. 时代拓灵变声器SDK集成调试过程

    时代拓灵变声器SDK集成调试过程 时代拓灵变声器SDK效果概述 时代拓灵变声器SDK通过"变调不变速"的方法,改变说话人基频的大小,同时保持语速和语义不变,即保持短时频谱包络(共振 ...

  9. [J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明

    郑昀@ultrapower 产品名称 产品版本 Keyword: RssReader RssFeed Channel j2me midp midlet  kxml xmlpull RMS RssOwl ...

  10. STM32使用正点原子无线烧录器无线查看数据波形

    一.所需资源 硬件:正点原子无线烧录器 软件:MiniBalance波形显示上位机 二.CUBE配置 2.1配置串口 使用CUBEMX配置串口,默认使用串口1,波特率为115200 2.1.1将串口模 ...

最新文章

  1. Win8Metro(C#)数字图像处理--2.24二值图像闭运算
  2. 在eclipse上Checkstyle的安装和使用
  3. 什么是协议转换器?协议转换器的定义
  4. Linux系统编程----8(竞态条件,时序竞态,pause函数,如何解决时序竞态)
  5. java 使用接口便于维护程序_Java初学——面向对象接口的应用
  6. JavaScript中注册时间处理程序的方式
  7. 即时系统和非即时系统的区别?_家庭装修,能不能让热水来得快一点——即时热水系统...
  8. OpenCV---膨胀与腐蚀
  9. Java线程的6种状态、NEW、RUNNABLE、BLOCK、TIMED_WAITING、TERMINATED
  10. 东北大学《材料现代研究方法》复习题及答案
  11. 重装系统后如何恢复oracle10g数据…
  12. BlueScreen OS Version: 6.1.7600.2.0.0.256.4 Locale ID: 1033
  13. L3-001 凑零钱 (30 分)——01背包+路径记录
  14. java学习笔记第三周(二)
  15. Codeforces--701B--Cells Not Under Attack
  16. Linux下安装Oracle12c图形化及静默两种方法安装操作手册
  17. 王心凌的「爱你」,我们用Python跳起来!
  18. ACL+SASL的认证配置后的Kafka命令操作(Windows版)
  19. java代码将链接转换为二维码
  20. 轻微课学画画好不好:我的体验反馈

热门文章

  1. vs2013 CodeLens
  2. 第三方SSD问题引起电脑频繁重启问题IONVMeController.cpp:5499
  3. XML解析之 MSXML应用总结 概念篇
  4. 环路稳定性原理与DCDC Buck环路稳定性
  5. case …when… 与纵表转横表
  6. python 公众号付费视频地址_Python下载微信公众号文章内的视频
  7. 自定义IDM的网页嗅探下载浮条样式
  8. PHP支付接口对接curl Post方式提交详解
  9. 怎么自学编程python_怎样自学Python编程?
  10. 矩阵的转置、加和乘法写入C++