1. 从机测试这件事先把测试目标掰开揉碎做蓝牙模块调试这些年被问得最多的一类问题就是“模块买了线也接了为什么连不上”。问到最后往往发现问题不在于模块坏而在于压根没搞清楚自己手里的模块处在什么角色、要测什么。蓝牙模块测试里的从机测试看起来只是“让它被连上”这么简单实际上一整套流程拆下来涉及的参数、时序、电平、工具判断点相当多。这篇内容就把从机测试这一块从头到尾捋一遍从测试目标定义、硬件连线、AT 指令配置到连通性验证、透传校验、长跑稳定性再到那些让人抓狂的坑尽量写细写透。蓝牙模块这个词覆盖的范围很广从几块钱的 HC05、HC06到 HM10 这类低功耗串口透传模块再到各家厂商的 BLE 模组它们共同点是把复杂的射频和协议栈封装起来对外只留一个串口。从机测试的核心就是验证这个模块作为被连接方时能不能被正确发现、正确配对、正确建链并且在建链之后把数据原原本本搬过去。适合看这篇的人有三类刚拿到模块、连 AT 指令都还没跑通的新手做过主机侧、想补齐从机侧测试方法的人以及需要把蓝牙链路接进自己产品、要对稳定性负责的工程师。不夸张地说从机侧测不透后面接继电器、接传感器、做数据采集全都是在沙子上盖楼。1.1 从机和主机的角色差异别一上来就搞反蓝牙经典串口模块里主机Master负责发起扫描和连接从机Slave负责广播自己、等待被连接。这个分工决定了两边的测试重点完全不同。主机侧你关心的是“我能不能扫到目标、能不能连上、连上之后能不能维持”从机侧你关心的是“我广播得对不对、参数配得对不对、别人连我的时候我配合得好不好”。很多新手拿到两个模块随手一配就想互连结果一个配成了从机、另一个也配成了从机两个都在那儿傻等自然连不上。所以测试从机的第一步是确认对端设备是主机角色或者用手机、电脑这类天然带主机能力的设备来当连接方。手机蓝牙调试 App 是最省事的对端因为它不需要你再去配一个模块省掉一半变量。还有一个容易混淆的点是 BLE 和经典蓝牙的从机概念不一样。经典蓝牙从机是靠配对码和串口协议建立连接BLE 从机则是靠广播包里的服务 UUID 和特征值来暴露能力。HM10 这类模块虽然名字叫串口透传但底层是 BLE它在手机端表现出来的是一个带特定服务的设备而不是“输入配对码”的那种经典蓝牙设备。测试之前先确认自己手里是哪种不然指令集对不上怎么试都是白费功夫。1.2 从机测试的四个核心维度把从机测试拆开我一般按四个维度来组织每个维度都有明确的通过标准而不是“能连上就算过”。可发现性模块上电后能不能被对端扫描到广播名、广播间隔、广播内容是否符合预期。可连接性对端发起连接时能否成功建链配对码校验、连接参数协商是否正常。可透传性建链之后串口数据和空中数据是否一一对应有没有丢包、乱码、截断。可维持性链路能撑多久遇到干扰、距离变化、对端休眠时能否恢复。这四个维度是有顺序的前一个不过后一个根本没法测。实际排错的时候也建议按这个顺序往下查不要跳步。我发现很多人一上来就测透传连都连不上还测什么透传白白浪费时间。1.3 测试前的物料清单与接线确认物料这块理想情况下你需要被测从机模块一块、USB 转 TTL 串口小板一块、杜邦线若干、稳定的 3.3V 或 5V 供电、一台装了串口助手和蓝牙调试 App 的电脑加手机。如果要测距离和稳定性还得准备一个能固定模块的支架避免手拿着晃来晃去影响结果。接线是最容易被忽视的重灾区。VCC、GND、TXD、RXD 四根线接错的概率高得离谱。记住一个原则模块的 TX 接串口板的 RX模块的 RX 接串口板的 TX交叉接。VCC 和 GND 千万不能反反了轻则不工作重则烧模块。另外像 HC05 这类模块KEY 或 EN 引脚是用来进 AT 模式的测试时最好单独引一根线出来接按钮或跳线方便随时切换模式。接线确认这一步做完先别急着上电用万用表量一下 VCC 和 GND 之间有没有短路这个习惯帮我省下过至少两块模块。2. 测试环境搭建硬件连线与串口工具选型环境搭得好后面排错能少走一大半弯路。这一节把供电、电平、串口工具和上电自检讲清楚都是动手前必须落地的环节。2.1 供电与电平匹配最容易翻车的地方蓝牙模块的供电要求看起来简单实际很讲究。HC05 标称工作电压 3.3V 到 6V 都有说法但它的 IO 电平是 3.3V 逻辑。如果你用 5V 的串口板直接连它的 RX长期下来可能把 IO 打伤表现为“能用但偶尔抽风”。我的做法是供电给足信号电平用分压电阻或者电平转换芯片降下来。两个电阻分压是最土但最有效的办法串口板 TX 出来经一个 1k 和一个 2k 电阻分压落到模块 RX 上大约 3.3V成本几毛钱。供电电流也要留意。模块在广播和连接瞬间的电流是脉冲式的峰值可能到几十毫安。如果串口板上的 3.3V 输出能力弱或者 USB 口本身供电不足就会出现“上电亮灯但一连就断”的现象。这种问题特别隐蔽因为空载测电压一切正常。我的经验是给模块单独供一路稳一点的电源或者在手边备一个带电流显示的 USB 电源一眼就能看出是不是电流不够。2.2 USB 转 TTL 模块与串口助手的选择串口板选 CH340 还是 CP2102对模块本身没区别区别在于驱动稳定性和你电脑的兼容性。CH340 便宜但驱动版本杂遇到识别不出来先换驱动再说。串口助手我长期用的是几款轻量工具重点看三个功能能不能发十六进制、能不能自动加回车换行、能不能保存日志。AT 指令测试很多时候要求精确的 CR LF 结尾工具如果不支持这个设置你会以为模块没响应其实是命令没发完整。手机端的蓝牙调试 App 也值得挑一挑。测试 BLE 从机时要选那种能看服务列表和特征值、能手动读写特征的 App而不是只能显示“已连接”的。BLE 透传的读写是分特征的一个负责收、一个负责发用只能看连接状态的应用测你根本判断不出数据到底走没走通。至于自动化测试如果后续要把测试跑成例行任务可以了解下用脚本驱动手机做操作的方式把连接、发数据、读回显、断开这一串动作录成流程减少手工重复但前期还是建议手动把每一步摸熟再谈自动化。2.3 上电前后的自检流程我给自己定了一套固定动作每次测新模块都走一遍。上电前量通断、确认交叉接法、确认 KEY 引脚状态。上电后先看指示灯亮不亮、闪不闪多数模块用快闪表示未连接、慢闪或常亮表示已连接。然后用串口助手发一条最简单的查询指令看有没有回显。回显乱码先查波特率回显没有先查接线和模式。这一套走下来绝大多数“模块坏了”的误判都能被排除掉剩下的才是真正的功能问题。3. AT指令实操把从机参数一条条配明白AT 指令是从机测试的入口配不明白指令后面全是空谈。这一节把进模式、认参数、写参数、验参数四个动作讲透。3.1 进入AT模式的两种方式与判定标准HC05 进 AT 模式一般有两种方式。一种是在上电之前把 KEY 拉高再上电模块进入 AT 模式此时波特率固定为 38400。另一种是上电之后把 KEY 拉高也能进但时序要卡一下。判定进没进模式最直接的办法是发“AT”回“OK”。如果发什么都没反应先确认波特率对不对AT 模式下很多模块波特率是固定的你拿 9600 去问 38400 的模块当然没回音。HC06 相对简单一般上电即处于可配置状态但也有版本差异。遇到hc06蓝牙模块at无响应先别怀疑模块坏按这个顺序查波特率是不是默认值、有没有加回车换行、TX 和 RX 是不是接反、模块是不是已经被别的设备占用了。这几条查完八成问题就没了。3.2 关键参数逐条解析从机测试要配的参数就那么几个但每一个都值得说清楚为什么。参数典型指令作用设置建议设备名称ATNAME广播/显示的名字用可识别英文避免中文乱码角色ATROLE主从切换从机测试设为 0波特率ATUART串口通信速率与上位机一致常见 9600 或 115200配对码ATPSWD经典蓝牙配对密码固定为易记值方便产测连接模式ATCMODE是否允许任意地址连接调试期设为 1 更省事这里面最容易踩坑的是波特率。模块的串口波特率和你串口助手设的必须完全一致差一点都不行而且它和 AT 模式下的临时波特率是两回事。我见过有人 AT 模式配得好好的退出模式之后通信全乱就是因为忘了 AT 模式波特率和正常通信波特率可能不同。3.3 参数写入与回读验证配置完一定要回读。写完 ATNAME 立刻发一次查询看返回的名字是不是你写的那串。回读这个动作能帮你发现“指令发出去了但没生效”的情况这种多半是没加回车换行或者模块还处在旧模式里需要重启。回读还有一个好处是把当前真实配置记下来存档产测阶段这批参数以后要复现没存档就得重新摸一遍。3.4 一个完整的从机配置示例以 HC05 为例一套最小可用的从机配置大致是这样ATROLE0 // 设为从机 ATNAMEBTSLAVE01 ATUART9600,0,0 // 9600 波特率1 位停止位无校验 ATPSWD1234 ATCMODE1 // 允许任意地址连接 ATRESET // 重启生效发完这些记得逐条看回显全 OK 再重启。重启之后再发一次查询确认参数落盘。这套流程我用了很多年基本能覆盖大部分串口蓝牙模块的从机配置换 HM10 这类 BLE 模块时指令名会变但“设角色、设名字、设速率、设密码、重启、回读”这个骨架是一样的理解骨架比记死指令重要得多。注意AT 指令发送时不要粘贴完立刻连发模块处理需要时间逐条发、逐条等回显比一次性刷一屏要可靠得多。4. 连通性测试与透传验证从配对成功到数据能跑配置对了不代表链路能用这一节讲怎么把“连上”和“能用”分开验证。4.1 配对与连接的区别配对是经典蓝牙里的安全握手过程连接是建立数据通道。两者是先后关系但不少人把它们混为一谈以为弹出配对码输入框就等于连上了。实际测试中配对成功但连接失败、连接成功但配对缓存出错都是常见现象。手机端表现尤其明显有时候系统记住了旧的配对信息模块换了密码它还用老密码去连结果反复失败。遇到这种先在手机设置里把旧设备删除再重新配对。BLE 模块没有传统意义上的配对码流程HM10 这类通常是直接连接后在特征值上读写。测试时要注意BLE 连接分“连接上”和“服务发现完成”两个阶段很多 App 显示已连接但服务没扫完这时候发数据是不通的。判断标准是能看到服务的 UUID 列表再往下发数据才靠谱。4.2 透传链路搭建与数据校验方法透传验证我推荐用“可读回显”的方式来做而不是盲目发一串然后看对方有没有反应。具体做法是从机通过串口板接到电脑 A对端模块或手机接到电脑 B或直接用手机的蓝牙串口应用一端发一串有规律的字符另一端看收到的内容是否一模一样。可以用递增数字也可以用固定长度的随机串目的是能一眼看出有没有丢字节、错位、截断。校验的时候别只发一句“hello”那句太短丢了都发现不了。我一般发 64 字节到 256 字节的测试串覆盖几种长度因为有些模块在小包时正常一到大包就因为缓冲区问题出状况。数据量上去之后还要注意流控模块本身一般没有硬件流控发太快会丢那就得靠上位机控制发送节奏。4.3 距离、遮挡、天线方向对链路的影响蓝牙实测距离远没有标称的那么美好。空旷视距下 HC05 标称 10 米实际能稳定跑到七八米就不错隔一堵承重墙可能只剩两三米。测试距离的时候要固定发射功率和收发位置一次只改一个变量不然你根本不知道是距离的问题还是摆放的问题。天线方向也很关键很多模块用的是板载 PCB 天线你把天线贴着手掌或者紧贴桌面金属信号会明显变差。如果测试中发现数据在近距离也断续先怀疑干扰。2.4G 频段现在挤得厉害路由器、无线键鼠、微波炉都在这个频段上。换个房间、换个信道试试很多“模块不稳定”最后发现是环境问题。BLE 模块还有连接参数可以调连接间隔、从机延迟这些参数会影响功耗和响应速度调的时候要权衡间隔太长省电但延迟高间隔太短响应快但耗电。4.4 稳定性长跑测试怎么做短时间能通不代表长时间能稳。我一般安排 2 到 8 小时的连续收发测试间断性地交替收发记录断连次数、重连时间、丢包率。测试时用脚本自动记录时间戳比人工盯着看强太多。结果里最值得关注的是“第一次断连发生的时间”和“断连后的恢复行为”前者反映链路余量后者反映设备健壮性。长跑测试要特别注意散热和供电。有些模块连续工作一两个小时后发烫一发烫参数就漂表现为越跑越不稳。这种情况在小型模块上不罕见测试时摸一下模块温度热得烫手就得考虑降功耗或者改善散热而不是一味怪模块质量差。5. 常见问题排查实录那些让人抓狂的坑这一节基本是血泪史汇总。hc05蓝牙模块连接不上、hc06蓝牙模块at无响应、乱码、掉线这几类问题占了实际咨询的绝大多数我按现象给出排查路径。5.1 HC05连接不上、HC06 AT无响应的典型原因HC05 连不上按这个顺序排角色设没设对、对端是不是主机、配对码是否一致、模块是否已经被占用、供电是否够。其中“模块已被占用”特别容易忽略一个模块同一时间只能连一个经典蓝牙主机如果之前连过没断干净新的连接请求会被拒。解决办法是断电重启或者发指令主动断开。HC06 AT 无响应九成出在通信参数上。HC06 的 AT 模式波特率因固件而异有的 9600、有的 38400你得挨个试。另外注意有些 HC06 需要在未连接状态下才能进 AT一旦被连上就拒绝指令。这两点排完剩下的就是接线问题。5.2 乱码、丢包、断连的排查顺序乱码先查波特率再看数据位停止位校验位最后看是不是电平不匹配。丢包先看发包节奏和包长再看有没有干扰最后考虑模块缓冲。断连先看距离和遮挡再看供电稳定性最后看对端是否主动断开。这个顺序是从最常见到最罕见排的按顺序查效率最高不要凭直觉乱猜。5.3 问题速查表现象优先排查项常见根因扫不到设备供电、广播、角色模块没启动或广播被关能扫到连不上配对码、角色、占用密码错或已被连接AT 无响应波特率、接线、模式参数不匹配或未进 AT数据乱码波特率、电平速率不一致或电平不匹配传着传着断距离、干扰、供电余量不足或电流不够数据丢包包长、发送节奏缓冲溢出或发太快这张表我建议直接贴在工位上出问题先对表比翻手册快。6. 从机测试的效率提升与自动化思路手工测可以但重复劳动没必要。这一节聊聊怎么把从机测试做得更省力。6.1 测试用例模板化把每次都要做的动作固化成用例上电、查版本、配参数、回读、重启、等待广播、连接、发测试串、校验、断开、记录。每条用例写清楚输入、预期输出、判定标准。这套模板一旦成型换任何模块都能套着走只是指令名字改一改。产测阶段批量测的时候模板化能保证不同人测出来的结果有可比性。6.2 用脚本做半自动化串口这块可以用脚本直接读写把“发指令、等回显、比对结果”写成一个循环自动跑完一批用例并生成报告。再进一步把手机端的连接动作也用自动化工具录成流程串起“连、发、读、断”这条链。要注意的是自动化只适合重复性高的部分涉及配对、干扰、距离这类需要现场判断的环节还是得人来观察。前期先把手工流程走顺再逐步把稳定环节替换成脚本比一上来就追求全自动务实得多。6.3 记录与复盘从机测试最值钱的产出不是一次通过的结果而是失败记录。每次失败时把当时的参数、环境、现象、排查过程写下来积累到一定量你就能摸出规律某型号模块在某个波特率下就是容易丢包某类供电方式就是容易断连。这份记录以后再遇到类似问题直接查自己的笔记就行不用从头猜。最后分享一个我个人的小习惯每次测完一块模块我都会把它的最终配置指令存成一个小文本文件文件名带上型号和日期。这个习惯看着不起眼但等到半年后要复现某个产品、或者同事拿同型号模块来问参数翻出文件直接复制粘贴就行。测蓝牙模块这件事麻烦的从来不是单条指令而是变量太多、记忆太不可靠把能固化的都固化下来剩下要动脑的部分就少了。