如何制作一个舒服的串口调试工具
Gitee仓库:https://gitee.com/baby-sea/veriusb
开篇介绍
在项目开发中经常需要对代码进行调试,串口调试工具能够让我们在项目调试中更加舒服。
不过市面上的串口调试工具在使用的过程中总会有一些麻烦的地方。比如
- 使用串口助手时需要用线连接产品和电脑,在一些特殊的时候,比如产品不容易挪动的时候调试起来就很不方便。
- 当我们想要知道串口的端口号,通常是打开设备管理器,然后通过插拔串口来看哪一个是所使用的串口。
为了解决这两个问题,我们自己制作了一个无线串口助手。
针对第一个问题:使用无线模块来传输串口信息,这样既可以有线也可以无线连接了。
针对第二个问题:想到的方法是在串口调试工具上安装一块屏幕用来显示自己的串口号,而串口号的获取需要电脑有个上位机实时检测设备的变化来发送信息,这样就不用每次都打开设备管理器来看串口号是什么了。
由此设计了一款由CH9143模块作为串口通讯的串口调试工具,首先我们来看看这个模块的数据手册。(CH9143DS1数据手册:https://www.wch.cn/downloads/BLE2U_PDF.html)
芯片选型
BLE/UART/USB 三通模块 BLE2U 是基于 CH9143 芯片开发,可实现蓝牙、USB接口和串口接口之间数据互传。
开篇概述中就给出了CH9143一些应用方案框图和他的模块封装:
- CH9143的USB接口与其他蓝牙从机或串口设备进行串口通讯框图。
- 蓝牙主机通过CH9143蓝牙与USB主机或者串口设备进行串口通讯框图。
- 两端USB主机使用CH9143蓝牙主从连接进行串口通讯框图。
然后接着往下翻看到第2节可以看到该模块的特点。其中
- 蓝牙传输距离100m。
- 支持3.3V和2.5V工作电压。
- 异步串口默认波特率115200bps,这个参数表明当使用无线远程通讯的时候,接收端波特率默认为115200
后面就是蓝牙模块的尺寸及引脚,我们此次设计的串口助手选用的是BLE2U-A封装。
紧接着翻到第7节可以看到该模块的布局建议。
模块上端为板载天线,将该模块安装到其他PCB上时须注意:天线区域必须远离其他金属器件,其距离必须大于20mm。
下图为模块的参考布局示意图,前三种情况是正确的,只要地层没有超出模块的地层边缘即可。后三种情况是不正确的,左边示例为天线下方有接地层,中间示例为天线周围没有足够的间隙,最后一个示例为电池金属外壳未远离天线区域。
第8节功能说明里提到了如何使用这个模块以及指示灯的功能,我们只需要将两个模块设置为主从一体模式,然后同时上电,当指示灯快闪到常亮时就是配对成功了
最后再看看该芯片的参考原理图,外围电路我们只需要为其通过led指示灯即可。
选完无线模块的问题解决了,后面就是屏幕的选择了,考虑到板子大小的问题所以需要选择一款很小的屏幕来配合。从淘宝搜索发现了中景园的一款0.32寸OLED屏幕,向店家询问数据手册(对应技术资料:https://pan.baidu.com/s/15K1_o4hut2vCnuZQ8lz0Ag 提取码:8888),下载下来发现贴心的商家专门打包了一个文件夹放着原理图,这样我们就不用去摸索芯片手册了,后续我们对电路进行了简化,去掉一些冗余的元件。
电路设计
下面就是这块板子的原理图,使用ME6211C33这款LDO将5V降压至3.3V为整个电路进行供电,使用了CH32V003作为主控用来控制屏幕,
在电路板布局上我们要注意的就是蓝牙模块天线周围不能有金属区域,还有就是OLED的尺寸大小,需要我们去参考一下规格书画出封装,下面就是该板子的PCB。
固件烧录
接下来就是固件烧录,我们需要绿色款的WCH-LinkE才能烧录CH32V003,按下图连接线路SWDIO-->D GND-->G 3V3-->V(板子上有个丝印错了,最右边的为V)。
然后打开固件代码(具体文件位置在这:firmware/USB-TTL-CH32V003),先点击编译(F7),再点击烧录(F8),
此时板子屏幕中出现了“Nothing”就说明烧录成功了。
软件代码
上位机方面我们使用PySide来编写。首先是一些基础的串口调试助手功能如:串口配置,数据发送与接收,数据记录等。
点击端口名旁的刷新,找到需要的串口号,设置好波特率,数据位等参数,点击打开。此时旁边的消息栏就会显示下位机发来的消息
我们也可以在下方的空白栏里填写需要发送的消息,点击发送按键即可发送。
这个串口调试助手还有串口绘图功能,需要下位机按一定的格式发送消息,串口调试助手就能绘制出相应的函数图
最后就是怎么让串口调试板显示串口号了,我们的串口调试工具会扫描电脑硬件变动,给每个新接入电脑的串口发送含有串口号信息的消息,下位机在上电的一段时间内如果接收到了该消息,板子上的屏幕就会显示出串口号。如果没有收到该消息,屏幕就会显示Nothing,最后下位机会关闭单片机串口防止干扰后续串口的工作。(如果屏幕没有显示请重新插拔)
实物演示
板子上有三个信号点:绿色的电源灯,一块OLED和蓝色的指示灯。
指示灯的状态说明可以在模块的数据手册可以看到,具体功能如下图。
这个串口调试工具有以下使用方法:
- 直接作为一个普通的串口调试器,连上USB再连上串口线,就可以正常使用了。
- 如果要想使OLED屏幕上显示串口号,需要在电脑上事先打开编写好的串口助手,然后模块上电就可以了。
- 作为无线串口来使用,这时需要将想要配对的模块在三秒内同时上电,如果双方的指示灯闪烁三下后常亮或常灭(LED方向有关),就说明匹配完成。当有数据传输时,指示灯就会快闪。