蓝牙串口通信不稳定怎么办?试试这几个妙招!

tmyb

大伙儿晚上今天得空,想跟大家伙儿聊聊我最近捣鼓蓝牙串口的那些事儿。这玩意儿说简单也简单,说麻烦起来也真能让人抓狂一阵子。我就从头到尾,把我的实践过程给大家细细道来。

起初的念头:无线通个信

是手头有个小项目,需要让单片机和我的电脑或者手机能无线通个信,传点简单数据。琢磨了一下,蓝牙串口模块,像是什么HC-05、HC-06之类的,便宜又大碗,感觉挺合适。于是我就从网上淘换了一个回来,准备开干。

蓝牙串口通信不稳定怎么办?试试这几个妙招!

模块到手,接线初体验

模块一到手,我先仔细瞅了瞅引脚。一般就是VCC、GND、TXD、RXD这几个关键的。VCC接个3.3V或者5V,看模块具体要求,GND接地。然后TXD(发送)接我单片机的RXD(接收),RXD(接收)就接单片机的TXD(发送),交叉连接,这是基本操作了。心里想着,这不就几根线嘛分分钟搞定!

第一次尝试:不出所料的“没反应”

线接好了,程序也按最简单的串口收发来写,信心满满地给单片机和蓝牙模块上了电。手机打开蓝牙串口助手,搜索,配对……咦?怎么搜不到模块?或者搜到了,点连接,要么连不上,要么连上了,发数据,屁反应没有。

这时候我就开始犯嘀咕了,第一反应是:

    蓝牙串口通信不稳定怎么办?试试这几个妙招!

  • 是不是线接错了?VCC和GND肯定没问题,TX、RX会不会虚接或者不小心弄反了?我拔下来又重新插了一遍,确保接触良
  • 电源是不是有问题?电压够不够?电流足不足?换了个稳当的电源试试。

折腾了一轮,还是老样子。得,看来没那么简单。

排查之路:波特率和AT指令

冷静下来想了想,串口通信,最重要的参数之一就是波特率了。我单片机程序里设置的波特率,和蓝牙模块默认的波特率,必须得一样才行!很多模块默认是9600,但我也不确定我这个模块出厂是啥设置。这时候,就得靠AT指令了。

蓝牙串口通信不稳定怎么办?试试这几个妙招!

大部分蓝牙串口模块都支持AT指令配置。一般是需要把模块的某个特定引脚(比如KEY引脚或者EN引脚)拉高或者在特定时序下拉高再上电,模块才能进入AT指令模式。我查了查我这个模块的资料,按照说明操作,让它进了AT模式。

进了AT模式后,我就用电脑的串口助手通过另一个USB转TTL模块连接到蓝牙模块的TXD和RXD,注意这里连接电脑的时候,蓝牙模块的TXD连USB转TTL的RXD,RXD连TXD。然后打开串口助手,选择正确的COM口,波特率通常是AT模式下固定的一个值,比如38400。发送“AT”,如果模块返回“OK”,那就说明AT模式进对了,通信也正常。

我就用AT指令查了查模块当前的波特率(比如发送AT+UART?之类的指令,具体看模块手册),如果不是我想要的,就用指令修改它(比如AT+UART=9600,0,0,表示设置波特率为9600,1位停止位,无校验)。顺便还改了改蓝牙名称和配对码,方便自己识别。

再次尝试:柳暗花明

把蓝牙模块的波特率改成和单片机程序一致后,拔掉进入AT模式的跳线,重新给蓝牙模块和单片机上电。再次打开手机蓝牙串口助手,搜索,连接……连上了!手机发送一个字符,单片机那边的串口接收中断马上就收到了!单片机再发送数据回去,手机也正常显示了!那一刻,真是松了一口气。

在这个过程中,我还遇到过几个小插曲:

蓝牙串口通信不稳定怎么办?试试这几个妙招!

  • 信号干扰问题:有一次怎么也连不上,后来发现旁边开着微波炉……把蓝牙模块挪远点就好了。这玩意儿确实容易受干扰。
  • 串口助手编码问题:有时候发送中文,接收到的是乱码,后来发现是串口助手的编码格式没选对,改成GBK或者UTF-8就好了。
  • 手机蓝牙兼容性:偶尔用某台老旧手机连接,稳定性就是差一些,换个新点的手机就没问题。

总结一下

蓝牙串口通信不稳定怎么办?试试这几个妙招!

搞这个蓝牙串口,最关键的几点就是:

  1. 接线要正确且牢固:VCC、GND、TX、RX千万别搞错,虚焊虚接更是要命。
  2. 波特率必须一致:单片机、蓝牙模块、上位机(手机或电脑串口助手)这几者的波特率得统一。
  3. 模块配置要熟悉:如果是HC-05这类可主可从的模块,还得配置主从模式、配对地址啥的,AT指令是必须要会的。
  4. 耐心排查:遇到问题别慌,从最基础的电源、接线查起,再到参数配置,一步步排除。很多时候,问题就出在一个很不起眼的小地方。
  5. 蓝牙串口通信不稳定怎么办?试试这几个妙招!

我这实践下来,感觉蓝牙串口虽然有时候会闹点小脾气,但只要把原理和配置方法摸清楚了,还是挺好用的一个无线通信方案,至少对于我这种简单的点对点数据传输需求来说,是足够了。以前也偶尔碰到过连不上的情况,大部分时候拔插一下或者重启设备就好了,但这回算是系统地从头到尾捋了一遍,感觉收获还是挺大的。希望我这点折腾经验能给同样在捣鼓这玩意儿的朋友们一点点启发!