手撸六足机器人(二)----------确定通信方式:HC05模块使用方法及配置步骤示例[STM32实现]

手撸六足机器人(二)----------确定通信方式:HC05模块使用方法及配置步骤示例[STM32实现]

对于遥控器和机器人之间通讯方法,考虑到机器人动作的多样化和一些反馈,要寻找一种无线的、稳定的、不贵的通讯方式,于是我决定使用HC05蓝牙模块,模块不贵(正点原子卖的贵,用别的商家也一样,我用的不是原装版,是兼容版,缺点是密码修改不了,不过按如下锁定地址的连接也没有啥大问题),下面是HC05的简介和配置过程。

蓝牙模块HC05

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图3是正点原子的,正版,死贵死贵的。

引脚

EN:拉高时进入AT命令模式,低时为通讯模式

RXD:串口接收引脚

TXD:串口发送引脚

GND:接地

VCC:接 3.3V到6V

STATE:连接上其他蓝牙模块时输出高电平

AT指令集

  1. AT+ROLE设置主从模式

    ​ AT+ROLE?是查询主从状态;

    ​ AT+ROLE=1是设成主,AT+ROLE=0 是设成从;

    ​ AT+ROLE=2设成回环角色(Slave-Loop)被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙。

  2. AT+RESET:HC-05复位

  3. AT+VERSION?:获取HC-05的软件版本号,只能获取,不能修改。

  4. AT+ORGL:恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。

  5. AT+ADDR?:获取HC-05的蓝牙地址码,只能获取,不能修改。

  6. AT+NAME?:获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体名字自行修改。

  7. AT+CLASS?:设置查询设备的类型,尽量不要去修改此参数。默认是1F00。

  8. AT+IAC?:查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。

  9. AT+PSWD?:查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.

  10. AT+UART:AT+UART?是查询当前模块的波特率,AT+UART=波特率是设置.

  11. AT+CMODE

​	AT+CMODE?是查询当前连接模式。

​	AT+CMODE=0,1,2

​		0——指 定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置)

​		1——任意蓝牙地址连接模 式(不受绑定指令设置地址的约束)

​		2——回环角色(Slave-Loop)默认连接模式: 0
  1. AT+BIND:
​	AT+BIND?查询当前绑定地址

​	AT+BIND=NAP,UAP,LAP(用逗号隔开)。
  1. AT+RMADD:从蓝牙配对列表中删除所有认证设备.

  2. AT+STATE?:获取蓝牙模块工作状态.

  3. AT+LINK=NAP,UAP,LAP:与远程设备建立连接。

  4. AT+DISC:断开连接.

  5. AT+RNAME?NAP,UAP,LAP:获取远程蓝牙设备名称.

  6. AT+ADCN?:获取蓝牙配对列表中认证设备数。

  7. AT+MRAD?:获取最近使用过的蓝牙认证设备地址。

  8. 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 位,无校验位,无流控制。

第二步:配置串口调试助手

1613649882446

如图配置

第三步:设置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                                     初始化

一切正常的话,重新上电就能连接了,每隔一段时间快闪两次。

这个就没有代码了,只要改改串口程序就行了,没啥大问题。

猜你喜欢

转载自blog.csdn.net/qq_45704265/article/details/113852505