HM-10蓝牙模块设置AT+IMME指令后连接异常问题咨询
解决HM-10仅允许Android设备主动发起连接的配置问题
我来帮你梳理下HM-10的配置问题,你遇到的情况其实是对AT+IMME参数的作用理解有偏差,加上配套参数没设置到位导致的。先给你拆解核心参数的逻辑,再一步步给出解决方案:
关键参数解析
AT+IMME=0:这是自动连接模式,模块会主动尝试连接之前配对过的设备——这就是你遇到“手机开蓝牙就自动连”的原因,同时这个模式下模块默认是可见的,所以能被搜到。AT+IMME=1:这是手动连接模式,模块不会主动发起连接,但默认是不可被发现的——这就是你设置后搜不到模块的核心问题!
正确配置步骤
要实现“仅手机主动发起连接”,需要把模块设为手动模式,同时强制开启可见性,还要清除旧的配对记录避免自动回连,步骤如下:
- 进入AT命令模式:确保模块未连接任何设备,用串口工具(波特率默认9600,8N1)发送
AT,如果返回OK说明进入命令模式成功。 - 清除所有配对设备记录:发送
AT+RMAAD,返回OK即可,这一步是为了让模块忘记之前连接过的Android设备,避免残留的自动连接逻辑。 - 设置为手动连接模式:发送
AT+IMME=1,返回OK,此时模块不会主动发起连接。 - 开启模块可见性:发送
AT+ADVI=1(参数说明:0=不可见,1=持续可见,2=间隔广播可见),选择1或2都可以,只要保证模块能被手机搜到。 - 保存配置(重要):发送
AT+SAVE,返回OK,这样重启模块后配置不会丢失。 - 重启模块生效:发送
AT+RESET,模块重启后就会按照新配置工作。
验证效果
配置完成后:
- Android设备可以正常搜索到HM-10模块
- 只有当手机主动发起连接时,模块才会响应建立连接
- 连接断开后,模块不会主动尝试回连,下次需要手机再次主动发起连接
额外注意点
- 发送AT命令时,要确保串口工具添加了换行符(CR+LF),很多工具默认没开,会导致命令不生效。
- 确认模块角色是从机:发送
AT+ROLE?,如果返回+ROLE:0就是正确的(0=从机,1=主机),如果是1的话发送AT+ROLE=0修改并保存。 - 如果还是搜不到,可以检查模块名称:发送
AT+NAME=你的模块名称设置一个容易识别的名字,再保存重启。
内容的提问来源于stack exchange,提问作者beans




