手撸六足机器人(二)----------确定通信方式:HC05模块使用方法及配置步骤示例[STM32实现]
对于遥控器和机器人之间通讯方法,考虑到机器人动作的多样化和一些反馈,要寻找一种无线的、稳定的、不贵的通讯方式,于是我决定使用HC05蓝牙模块,模块不贵(正点原子卖的贵,用别的商家也一样,我用的不是原装版,是兼容版,缺点是密码修改不了,不过按如下锁定地址的连接也没有啥大问题),下面是HC05的简介和配置过程。
蓝牙模块HC05
图3是正点原子的,正版,死贵死贵的。
引脚
EN:拉高时进入AT命令模式,低时为通讯模式
RXD:串口接收引脚
TXD:串口发送引脚
GND:接地
VCC:接 3.3V到6V
STATE:连接上其他蓝牙模块时输出高电平
AT指令集
-
AT+ROLE设置主从模式
AT+ROLE?是查询主从状态;
AT+ROLE=1是设成主,AT+ROLE=0 是设成从;
AT+ROLE=2设成回环角色(Slave-Loop)被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙。
-
AT+RESET:HC-05复位
-
AT+VERSION?:获取HC-05的软件版本号,只能获取,不能修改。
-
AT+ORGL:恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。
-
AT+ADDR?:获取HC-05的蓝牙地址码,只能获取,不能修改。
-
AT+NAME?:获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体名字自行修改。
-
AT+CLASS?:设置查询设备的类型,尽量不要去修改此参数。默认是1F00。
-
AT+IAC?:查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。
-
AT+PSWD?:查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.
-
AT+UART:AT+UART?是查询当前模块的波特率,AT+UART=波特率是设置.
-
AT+CMODE:
AT+CMODE?是查询当前连接模式。
AT+CMODE=0,1,2
0——指 定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置)
1——任意蓝牙地址连接模 式(不受绑定指令设置地址的约束)
2——回环角色(Slave-Loop)默认连接模式: 0
- AT+BIND:
AT+BIND?查询当前绑定地址
AT+BIND=NAP,UAP,LAP(用逗号隔开)。
-
AT+RMADD:从蓝牙配对列表中删除所有认证设备.
-
AT+STATE?:获取蓝牙模块工作状态.
-
AT+LINK=NAP,UAP,LAP:与远程设备建立连接。
-
AT+DISC:断开连接.
-
AT+RNAME?NAP,UAP,LAP:获取远程蓝牙设备名称.
-
AT+ADCN?:获取蓝牙配对列表中认证设备数。
-
AT+MRAD?:获取最近使用过的蓝牙认证设备地址。
-
AT+INQM:设置查询模式 AT+INQM=1,9,48(1-带RSSI信号强度指示,9-超过9个蓝牙设备响应则终止查询,48-设定超时为48*1.28=61.44秒)
两个蓝牙模块连接
可以用程序控制连接,也可以用TTL转USB模块进行控制连接,模块如下
第一步:进入AT指令模式
进入AT指令有两种方式
连接好TTL和蓝牙模块, VCC-VCC GND-GND RXD-TXD TXD-RXD
第一种: 蓝牙模块上的一个黑色的开关(正点原子的蓝牙模块没有该按键)在EN引脚位置,一直按住开关,
再将USB插入电脑,此时灯是慢闪, 松开开关,进入AT命令模式,默认波特率是38400。
此模式为原始模式。原始模式下一直处于AT命令模式状态。
第二种:HC-05先上电开机,红灯快闪,再按住按键或EN拉高,HC-05进入AT命令模式,默认波特率是9600;
此模式为正常模式。正常模式下只有按住按键或拉高EN才处于AT命令模式状态。
HC-05只支持一种数据格式: 数据位8 位,停止位1 位,无校验位,无流控制。
第二步:配置串口调试助手

如图配置
第三步:设置HC05配对参数
对两个蓝牙模块发送测试指令:
AT 返回ok则可以执行以下指令
分别获得蓝牙A和B 的地址:
AT+ADDR? 记录两个蓝牙地址
对蓝牙A进行设置:
AT+ORGL 恢复默认设置
AT+NAME=bluetooth_master 蓝牙名字
AT+ROLE=1 设置为主机
AT+ROLE? 确认设置成功
AT+PSWD=1234 设置配对码
AT+PSWD? 确认设置成功
AT+UART=115200,0,0 设置串口波特率数据位停止位
AT+UART? 确认设置成功
AT+CMODE=0 设置为绑定地址连接模式
AT+CMODE? 确认设置成功
AT+BIND=18,e4,3623dc(蓝牙B的地址,注意为逗号分隔) 绑定要连接的蓝牙地址
AT+RMAAD 清空当前所有认证设备
AT+INIT 初始化
对蓝牙B进行设置:
AT+ORGL 恢复默认设置
AT+NAME=bluetooth_slave 蓝牙名字
AT+ROLE=0 设置为从机
AT+ROLE? 确认设置成功
AT+PSWD=1234 设置配对码
AT+PSWD? 确认设置成功
AT+UART=115200,0,0 设置串口波特率数据位停止位
AT+UART? 确认设置成功
AT+CMODE=0 设置为绑定地址连接模式
AT+CMODE? 确认设置成功
AT+BIND=18,e4,362299(蓝牙A的地址,注意为逗号分隔) 绑定要连接的蓝牙地址
AT+RMAAD 清空当前所有认证设备
AT+INIT 初始化
一切正常的话,重新上电就能连接了,每隔一段时间快闪两次。
这个就没有代码了,只要改改串口程序就行了,没啥大问题。