初学四旋翼之蓝牙通讯

本项目使用BC-04作为主模块,HC-05作为从模块,配对成功后,主从模块都可以发送消息。

        主模块通过串口与上位机连接;从模块通过UART与飞控连接。四旋翼的姿态,遥控等信息通过蓝牙发送给上位机。上位机采用匿名科创地面站。

(一)   为何需要蓝牙通讯?

        调试时,我们需要实时知道四旋翼的姿态,遥控等信息,从而判断模块是否正常工作;在整定PID参数时,通过蓝牙,可以用上位机更改或者读取PID参数。大大提升了调试效率。

 

(二)   蓝牙通讯原理

        蓝牙技术规定每一对设备之间进行蓝牙通讯时,必须一个为主角色,另一为从角色,才能进行通信,通信时,必须由主端进行查找,发起配对,建链成功后,双方即可收发数据。理论上,一个蓝牙主端设备,可同时与7个蓝牙从端设备进行通讯。一个具备蓝牙通讯功能的设备, 可以在两个角色间切换,平时工作在从模式,等待其它主设备来连接,需要时,转换为主模式,向其它设备发起呼叫。一个蓝牙设备以主模式发起呼叫时,需要知道对方的蓝牙地址,配对密码等信息,配对完成后,可直接发起呼叫。

 

(三)   蓝牙配对操作

BC-04 主模块AT指令及步骤:

1.      先找到当前通讯的波特率(默认为9600,也有可能被设置成其他,如115200),发送 AT ,若返回OK,则找到正确的波特率。

2.      AT+DEFAULT      (恢复默认设置)

3.      将波特率调整为9600;

4.      AT+NAMEBC_MASTER  (蓝牙名字)

5.      AT+PIN5862           (配对码,主从模块配对码必须一致)

6.      AT+ROLE1             (设置为主设备)

7.      AT+CMODE1            (设置连接模式为任意蓝牙地址连接模式)

8.      AT+BAUDA             (设置波特率为460800)

9.      将波特率修改为460800;

10.  AT+RESET               (复位)

 

HC-05 从模块AT指令及步骤:

1.      按住模块上的按钮,然后上电(进入AT模式)

2.      将波特率改为38400,数据位 8 位,停止位 1 位,发送 AT ,若返回OK,则可进行如下步骤

3.      AT+ORGL                 (恢复默认设置)

4.      AT+NAME=HC_SLAVE

5.      AT+PSWD=5862           (配对码,主从模块配对码必须一致)

6.      AT+ROLE=0                (设置为从设备)

7.      AT+UART=460800,0,0        (设置波特率为460800,与下位机一致,数据位 8 位,停止位 1 位)

8.      AT+CMODE=1            (设置连接模式为任意蓝牙地址连接模式)

9.      AT+RESET                 (复位)

10.  正确设置主从模块的波特率后,可以实现通讯。

 

(四)   通讯帧格式

Receive_Data:

帧头为0xAA,0xAF,才对改帧进行解析

功能字:表示改帧要进行的操作。

0x01:校准

0x02:请求返回PID

0x10:写姿态内环pid

0x11:写定高、定点PID

0x12:写外环PID

 

Data_Transmit:

可以用于发送pid参数,遥控状态数据,传感器测量数据,飞行器状态数据(发送不同的数据,对应不同的帧头、功能字,配合匿名地面站)


(五)   代码