资讯动态

HC-05与JDY-31蓝牙模块跨品牌通信:主从配置与AT指令实战

发布时间:2026/8/7 3:53:10 来源:尧图企业网站定制
1. 项目概述当经典遇见新秀搞嵌入式开发的朋友对HC-05这款蓝牙模块肯定不陌生它几乎是很多单片机玩家入门无线通信的“启蒙老师”。稳定、资料多、价格亲民是它的标签。但最近几年市场上涌现了一批像JDY-31这样的新秀模块它们往往宣称功耗更低、成本更优、甚至功能更花哨。于是一个很实际的问题就摆在了面前我手头有一个基于HC-05的老项目或者我熟悉HC-05的配置现在要接入一个使用JDY-31模块的新设备它们俩能“对上话”吗答案是肯定的但过程绝非简单的“即插即用”。这个项目就是深入探讨如何让HC-05与JDY-31这两个不同品牌、不同指令集的蓝牙模块实现稳定、可靠的双向数据通信。这不仅仅是让两个模块配对连接那么简单它涉及到对蓝牙透传模块核心工作模式的理解、对AT指令集的精确操控、对串口通信参数的统一以及对一些隐藏“坑点”的预判和规避。对于开发者而言掌握这种跨模块通信的能力极具价值。它意味着你在设备选型上有了更大的自由度可以不受单一供应商的束缚也意味着你能维护和升级遗留系统让老设备焕发新生更深层次地这是对串口透传蓝牙通信本质的一次深刻实践——剥开品牌的外衣理解它们如何作为无线串口桥梁来工作。2. 通信基础与模块选型解析在动手连接线缆之前我们必须先理清思路。HC-05与JDY-31的通信本质上是两个蓝牙串口透传SPP模块之间的通信。它们将自己伪装成一个虚拟的串口对单片机MCU而言就像在和另一个串口设备通信只不过数据是通过蓝牙空中接口传输的。2.1 核心通信模式主从配置这是实现通信的第一步也是最关键的概念。蓝牙透传模块通常有两种角色主设备Master和从设备Slave。主设备主动发起扫描和连接的设备。可以搜索并连接其他蓝牙从设备。从设备等待被连接的设备。它广播自己的存在供主设备发现和连接。要让HC-05与JDY-31通信必须将一个配置为主模式另一个配置为从模式。通常我们将相对固定、作为服务提供方的设备设为从机将需要发起连接的移动设备或主机设为主机。例如一个蓝牙数据采集器JDY-31作为从机等待一个手持控制器HC-05作为主机来连接。为什么不能两个都是主机或都是从机两个主机会互相扫描但无法连接两个从机则都在等待无人发起连接。因此明确的主从关系是建立通信链路的前提。2.2 HC-05与JDY-31模块简介与对比了解你的“士兵”是打赢战役的基础。HC-05模块核心芯片通常采用英国CSR的BC417系列蓝牙芯片经典可靠。供电典型3.3V注意有些模块兼容5V逻辑电平但供电最好还是3.3V。关键特性支持经典蓝牙2.0EDRSPP协议。自带板载LED状态指示快闪/慢闪/双闪含义不同。AT指令集较为标准且丰富。工作模式通过KEY引脚或使能引脚拉高进入AT命令模式拉低或悬空为通信模式。这是其一大特点。JDY-31模块核心芯片通常采用国产的杰理AC692X系列或其他TWS蓝牙芯片成本控制出色。供电典型3.3V。关键特性支持蓝牙4.2或5.0取决于版本除了SPP可能还支持BLE但不同模式通常需不同固件。功耗宣称较低。AT指令集可能与HC-05有差异且不同批次、不同供应商的固件指令可能微调。工作模式进入AT命令模式的方式多样常见的有① 在模块未连接时直接通过串口发送特定字符如后需在特定时间内收到a确认② 通过拉低某个引脚如PIO11再上电③ 直接上电即为AT模式。务必查阅你手中模块的具体数据手册简单对比表格特性HC-05JDY-31 (常见版本)对通信的影响蓝牙版本2.0EDR (经典蓝牙)4.2/5.0 (可能双模)经典蓝牙间通信无碍若JDY-31只开BLE则无法与HC-05通信。默认角色从模式 (Slave)从模式 (Slave)默认都是“等待者”需手动更改其一为主机。AT指令进入拉高KEY引脚后上电方法多样 (a、引脚控制等)配置方式不同是第一个操作难点。指令集相对标准、统一可能非标不同厂商有差异最大的挑战需找到双方都能理解的指令进行配置。波特率默认通常9600, 可改默认可能为9600或115200通信前MCU与各自模块的串口波特率必须一致。配对码默认1234默认1234或0000需设置为相同密码才能配对。注意市场上模块变种很多以上信息为常见情况。动手前找到你购买模块对应的最新、最准确的数据手册或卖家提供的资料是成功的一半。3. 硬件连接与准备工作理论清晰后我们开始搭建硬件环境。这里假设我们使用两个常见的开发板如Arduino Uno、STM32最小系统板分别连接HC-05和JDY-31并通过它们的串口与模块交互。3.1 所需材料清单HC-05蓝牙模块 x1JDY-31蓝牙模块 x1单片机开发板 x2 (如Arduino Uno 用于配置和测试)USB转TTL串口调试器 x1 (可选但强烈推荐用于直接监控和配置模块)杜邦线 若干电脑 x1 (安装串口调试助手如Putty、SecureCRT或国产的XCOM、ATK-XCOM)3.2 接线示意图与电源警告接线逻辑以3.3V系统为例VCC- 接3.3V严禁接5V虽有些模块耐5V但风险高GND- 接GNDTXD- 接 MCU/串口调试器的RXDRXD- 接 MCU/串口调试器的TXD具体到两个模块HC-05接线VCC- 3.3VGND- GNDTXD- MCU的RX(例如 Arduino的D0/RX)RXD- MCU的TX(例如 Arduino的D1/TX)KEY- 接一个GPIO用于控制进入AT模式如ArduinoD7。不接此脚则无法进入AT指令模式。JDY-31接线VCC- 3.3VGND- GNDTXD- MCU的RXRXD- MCU的TXPIO11(或标识为AT的引脚) - 根据手册可能需要接GPIO控制或上拉/下拉。对于a方式则不需要接此脚。重要提示很多新手烧毁模块的第一原因就是电源接错或电压过高。请务必使用万用表确认你的电源输出是稳定的3.3V。使用USB转TTL调试器时也请确认其VCC引脚输出的是3.3V而非5V。3.3 串口调试助手设置在电脑上打开串口调试助手连接USB转TTL工具。设置关键参数波特率先尝试模块的默认波特率HC-05常用9600JDY-31可能9600或115200。如果AT指令无反应最常见的排查点就是波特率不对。数据位8停止位1校验位NONE流控制NONE务必勾选“加回车换行”绝大多数AT指令需要以\r\n回车换行作为结束符勾选此选项能自动添加。4. 核心步骤分别配置HC-05与JDY-31这是项目的核心实操部分。我们的目标是将其中一个模块例如HC-05设置为主机Master并绑定另一个模块例如JDY-31的蓝牙地址将JDY-31设置为从机Slave并设置好配对密码等参数。4.1 配置HC-05为主设备Master进入AT命令模式给HC-05模块上电前先将KEY引脚连接至高电平3.3V。对于Arduino可以写一段代码将某个引脚如D7设置为HIGH后再给模块供电。更稳妥的方法是先正常接线KEY悬空模块上电后LED慢闪约1秒1次表示进入可配对状态。此时再将KEY引脚接高电平模块LED会变为约2秒1次的慢闪这表示已进入AT命令模式。此时波特率固定为38400大多数HC-05的AT模式波特率请以手册为准。发送AT指令进行配置 打开串口调试助手选择正确的COM口设置波特率为38400发送以下指令每条指令后都会收到OK回应ATORGL\r\n //恢复出厂设置避免遗留配置干扰 ATROLE1\r\n //设置为主设备模式 (1:Master, 0:Slave, 2:Slave-Loop) ATCMODE0\r\n //设置连接模式为指定地址连接 (0:指定地址1:任意地址) ATPSWD1234\r\n //设置配对密码为1234需与从机一致 ATUART9600,0,0\r\n //设置通信波特率9600,停止位1,校验位无 (与MCU通信的波特率)关键一步绑定从机地址。我们需要获取JDY-31的蓝牙MAC地址。先将JDY-31配置为从机并上电使其处于广播状态LED闪烁。让HC-05仍为主机模式搜索它。在AT模式下向HC-05发送ATINQ\r\n //开始搜索附近的蓝牙设备等待几秒HC-05会返回一串类似INQ:98D3:31:XXXXXX,7A0C,FFE0的信息。其中98D3:31:XXXXXX就是JDY-31的蓝牙地址格式可能为XX:XX:XX:XX:XX:XX需要把冒号去掉。记下这个地址例如98D331XXXXXX然后发送绑定指令ATBIND98D331XXXXXX\r\n //绑定指定地址的从设备注意有些HC-05的BIND指令地址格式需要带冒号如ATBIND98D3,31,XXXXXX具体需测试或查手册。退出并重启 发送ATRESET\r\n重启模块或者直接断电。重启后KEY引脚恢复低电平或悬空。此时HC-05会尝试自动连接绑定的JDY-31。成功连接后HC-05的LED会由闪烁变为双闪快速闪烁两次后停顿。4.2 配置JDY-31为从设备SlaveJDY-31的配置因其固件版本差异较大以下以常见的通过a进入AT模式的版本为例。进入AT命令模式将JDY-31的TXD/RXD/GND连接到USB转TTLVCC接3.3V。打开串口助手波特率先尝试9600再尝试115200。发送区输入注意不要勾选“加回车换行”。点击发送。如果模块返回字母a则表示准备进入AT模式。此时你必须在很短的时间如1秒内再发送一个字母a回去同样不加回车换行。如果操作成功模块会返回OK表示已进入AT命令模式。此时后续所有AT指令都需要以\r\n结尾了。发送AT指令进行配置 进入AT模式后发送以下指令期待返回OKATDEFAULT\r\n //恢复出厂设置 (注意有些指令是ATDEFAULT有些是ATRESTORE需确认) ATROLES\r\n //设置为从设备角色 (S:Slave, M:Master) ATNAMEJDY31_SLAVE\r\n //设置模块名称便于识别 ATPIN1234\r\n //设置配对密码为1234 (注意指令可能是ATPASS或ATPSWD) ATBAUD9600\r\n //设置通信波特率为9600 (指令可能是ATUART) ATIMME0\r\n //设置上电立即广播等待连接 (0:立即工作1:等待指令)特别注意JDY-31的AT指令集可能不同。例如设置波特率可能是ATBAUD8其中8代表9600设置密码可能是ATPASS1234。最可靠的方法是向你购买的商家索要最新的AT指令集PDF文档。退出并重启 发送ATRESET\r\n或ATRST\r\n重启模块或者直接断电重启。重启后JDY-31的LED应开始闪烁表示处于广播状态等待主机连接。4.3 连接测试与数据透传将配置好的HC-05Master和JDY-31Slave分别上电。它们应该会自动完成配对和连接。连接成功的标志是HC-05的LED由搜索时的快闪变为双闪。JDY-31的LED由广播时的慢闪变为常亮或有规律的双闪/慢闪取决于模块设计。数据透传测试将HC-05的TXD/RXD连接到单片机A的串口1。将JDY-31的TXD/RXD连接到单片机B的串口1。分别给两个单片机上电并编写简单的串口回环测试程序。在单片机A上通过串口1发送字符串Hello JDY-31。在单片机B上如果通过串口1收到了Hello JDY-31则表示通信成功反之从单片机B发送数据到单片机A也应能成功接收。5. 深度排查与常见问题解决实录即使按照步骤操作也难免会遇到问题。以下是我在实际项目中踩过的坑和总结的排查技巧。5.1 连接建立失败的排查流程如果模块上电后LED状态未显示连接成功请按以下顺序排查电源与接线复查万用表测量VCC-GND是否为稳定3.3VTXD/RXD是否交叉连接连接是否松动角色与模式确认百分之九十的问题出在这里。请再次确认HC-05的ROLE是否为1MasterHC-05的CMODE是否为0指定地址HC-05的BIND地址是否正确无误地填写了JDY-31的地址JDY-31的ROLE是否为SSlave两个模块的配对密码PSWD/PIN是否完全一致包括大小写波特率统一性这是另一个高频问题点。确保AT配置阶段MCU/串口助手与模块通信的波特率正确HC-05 AT模式常用38400JDY-31 AT模式常用9600或115200。透传通信阶段两个模块的通信波特率ATUART或ATBAUD设置的必须一致且与连接它们的单片机串口波特率一致。例如都设为9600。绑定地址有效性确保HC-05绑定的地址是当前JDY-31的实时地址。恢复出厂设置后蓝牙地址可能会变。最稳妥的方法是每次配置JDY-31后都让HC-05重新INQ搜索一次并绑定新地址。干扰与距离初期测试时请将两个模块靠近1米排除障碍物干扰。蓝牙2.0/4.0在复杂环境下性能差异很大。5.2 AT指令无响应的解决方案检查进入模式是否正确HC-05KEY引脚是否在上电前或上电后稳定拉高LED是否变为约2秒1次的慢闪JDY-31发送后是否收到a是否快速回复了a波特率是否尝试了9600和115200检查串口助手设置串口号选对了吗发送新行回车换行选项是否勾选对于AT模式下的指令这是必须的除了JDY-31进入时的和a。流控制RTS/CTS是否全部禁用尝试所有可能波特率如果不知道AT模式波特率用串口助手以不同波特率如38400, 9600, 19200, 57600, 115200连续发送AT\r\n看哪个速率下有OK返回。5.3 数据通信不稳定、丢包或乱码波特率容错问题单片机产生的波特率可能存在误差。如果双方波特率设置值相同但仍丢包尝试将波特率适当调低如从115200降到57600或提高单片机系统主频和优化串口时钟配置。电源噪声蓝牙模块在发射数据时瞬时电流较大。确保电源线够粗并在模块的VCC和GND之间并联一个10uF电解电容和一个0.1uF陶瓷电容以滤除高频和低频噪声。流控制未启用当高速传输大量数据时如果没有硬件流控制RTS/CTS缓冲区可能溢出导致丢包。如果模块和MCU都支持可以启用硬件流控。但对于简单的短指令传输通常不需要。软件缓冲区处理在单片机程序中确保串口接收中断服务函数ISR执行时间尽可能短只做数据搬移。在主循环中及时处理接收缓冲区防止溢出。5.4 独家心得与进阶技巧“指令手册至上”原则永远不要完全相信网络教程。即使是HC-05不同时期、不同厂家的固件版本其AT指令集和细节也可能有微小差别。JDY-31更是“重灾区”。向卖家索要PDF版数据手册并保存好。使用逻辑分析仪或示波器当通信完全没反应时它们是终极武器。可以抓取TXD/RXD线上的实际波形确认单片机是否发出了数据数据格式波特率、起始位、停止位是否正确。我曾用此方法发现过一个单片机串口引脚配置错误的低级问题。编写自动化配置脚本如果产品需要批量生产可以编写一段单片机初始化代码上电后自动通过串口向蓝牙模块发送一系列AT指令进行配置。这样即使模块更换批次也只需更新单片机程序无需人工干预。关于JDY-31的“双模”陷阱有些JDY-31模块支持经典蓝牙SPP和低功耗蓝牙BLE。务必确认你使用的固件是SPP模式。BLE模式下的JDY-31与HC-05是无法通信的因为协议栈不同。连接稳定性优化在HC-05的主机配置中可以尝试ATPOLAR设置连接极性或调整ATINQM设置查询模式但这属于高阶优化一般情况下默认值即可。让HC-05与JDY-31成功通信就像为两个说不同方言的人找到了共同的普通话。这个过程磨练的是你对底层通信协议的理解、对硬件操作的细致程度以及排查问题的系统性思维。一旦打通你会发现无论是HC-05、JDY-31还是其他类似的蓝牙透传模块其核心逻辑都是相通的。掌握这种能力意味着你在物联网设备的无线连接方案上拥有了更灵活的选择权和更强的解决问题的能力。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价