有时候,我们希望蓝牙的主机在上电之后自动完成与从机的连接,而无需在每次上电后都发送一些AT指令来完成主从机的配对,该怎么做呢?
1、首先完成从机的设置:
AT+ROLE=0 //设置为从机
AT+PSWD=xxxx //xxxx是配对密码,根据需要设定
AT+UART=115200,0,0, //波特率115200,根据自己需要改变,一位停止位,无校验
AT+CMODE=1 //任意蓝牙地址配对模式
2、设置蓝牙主机:
AT+INIT //初始化SPP规范库(作用在下面会讲述)
AT+ROLE=1 //设置为主机
AT+PSWD=xxxx //与从机配对密码一致
AT+UART=115200,0,0, //与从机的设置必须一致
AT+CMODE=1 //同样设置为任意蓝牙地址配对模式
注:这里的配对过程与我们通常所认为的配对过程不同,平常我们在使用手机蓝牙时,如果要与其他蓝牙设备配对时,需要输入从机的密码,正确输入才能完成配对,于是我们很自然地认为这个过程是主机向从机发送一条连接指令,指令中的参数包含了从机的配对密码。而实际上,并没有任何一条AT指令具有这个功能,要实现主从机的配对,需要通信双方约定好一个共同的配对密码,并通过AT+PSWD来设置,这也解释了为什么连接从机时主机也要设置配对密码。
3、主机与从机进行配对:
①获取从机的模块地址,参考
②从机完成步骤1的配置后,重新给从机上电,使其进入等待配对的工作模式(而非AT指令工作模式)
③实际上,两个未经配对的蓝牙模块,即便有相同的配对密码,在上电后也不能自动完成配对。要让两个蓝牙模块进行配对,需要向主机发送如下配对指令
举例说明:
与从机:12:34:56: ab: cd:ef 配对,最大配对超时20秒
AT+PAIR =1234,56,abcdef,20\r\n
返回
OK
注意:如果返回ERROR(16)表示你没有执行AT+INIT指令,请返回第2步重新执行。
我们获得的蓝牙从机的物理地址一般是以NAP:UAP:LAP(十六进制)形式返回的。在使用AT指令时,要求以4位,2位,6位形式给出蓝牙地址,如果通过查询蓝牙地址的方式获得的蓝牙地址不满足上述格式,则应该用0补齐。例如,查询得蓝牙从机地址2019:5:83686,则使用该地址时应表示为2019,05,083687。执行上面的指令后等待数秒一般就能完成配对了。此时蓝牙模块指示灯连续闪两下,熄灭,再连续闪两下,表示配对成功。
可以通过向主机发送AT+STATE?来验证是否配对成功
4、如果成功连接,那么两个蓝牙模块工作在正常模式(而非AT指令模式)下,上电后将自动完成配对。
5、如果希望建立唯一的配对,即蓝牙主机上电后只搜索特定的从机并与之连接时,则可以通过以下方法实现:
(1)AT+BIND=Param Param:从机蓝牙地址
举例说明:
在指定蓝牙地址连接模式下,绑定蓝牙设备地址:12:34:56: ab: cd:ef 命令及响应如下:
AT+BIND=1234,56,abcdef\r\n
返回OK
(2)AT+CMODE=0 //上电后自动搜索绑定的蓝牙从机