Bluetooth 5.0 communication protocol

Bluetooth 5.0 communication protocol

Bluetooth 5.0 communication protocol

Contact

Module to PC 1

acceleration angular velocity angle data packet (default) 2

Acceleration calculation method: unit g 3

Calculation method of angular velocity: unit °/s 3

Angle Calculation Method: Unit ° 3

A packet with a single return register 5

Magnetic field output 5

Quaternion output 6

temperature output 6

Host computer to module 7

Send command: 7

read register value 7

Acceleration Calibration and Magnetic Field Calibration 7

save configuration 7

set return rate 8

Read power 8

Register Address Table 9

Module to PC

The module uploads the data of Flag=0x61 (acceleration angular velocity angle) by default.

Flag=0x71 (magnetic field) needs to send the command to read the corresponding register to return.

Bluetooth upload data format: Bluetooth can upload data up to 20Byte each time.

acceleration angular velocity angle data packet (default)

packet header

1Byte

flag bit

1Byte

axL

axH

......

YawL

YawH

0x55

Flag

0xNN

0xNN

......

0xNN

0xNN

Note: 0xNN is the specific value received, the order of data return is acceleration X Y Z, angular velocity X Y Z, angle XYZ,

The low byte comes first, and the high byte follows.

Flag = 0x61 Data content 18Byte is acceleration, angular velocity, angle

0x55

packet header

0x61

flag bit

axL

X-axis acceleration low 8 bits

axH

X-axis acceleration high 8 bits

ayL

Y-axis acceleration low 8 bits

ayH

Y-axis acceleration high 8 bits

azL

Z-axis acceleration low 8 bits

azH

Z-axis acceleration high 8 bits

wxL

X-axis angular velocity low 8 bits

wxH

X-axis angular velocity high 8 bits

wyL

Y-axis angular velocity low 8 bits

wyH

Y-axis angular velocity high 8 bits

wzL

Z-axis angular velocity low 8 bits

wzH

Z-axis angular velocity high 8 bits

RollL

X-axis angle velocity low 8 bits

RollH

X-axis angle velocity high 8 bits

PitchL

Y-axis angle velocity low 8 bits

PitchH

Y-axis angle velocity high 8 bits

YawL

Z-axis angle velocity low 8 bits

YawH

Z-axis angle velocity high 8 bits

Acceleration calculation method: unit g

ax=((axH<<8)|axL)/32768*16g(g is the acceleration of gravity, it is desirable 9.8m/s2)

ay=((ayH<<8)|ayL)/32768*16g(g is the acceleration of gravity, it is desirable 9.8m/s2)

az=((azH<<8)|azL)/32768*16g(g is the acceleration of gravity, it is desirable 9.8m/s2)

Calculation method of angular velocity: unit °/s

wx=((wxH<<8)|wxL)/32768*2000(°/s)

wy=((wyH<<8)|wyL)/32768*2000(°/s)

wz=((wzH<<8)|wzL)/32768*2000(°/s)

Angle Calculation Method: Unit °

roll angle (x-axis)Roll=((RollH<<8)|RollL)/32768*180(°)

pitch angle (y-axis) Pitch=((PitchH<<8)|PitchL)/32768*180(°)

Yaw angle (z axis) Yaw=((YawH<<8)|YawL)/32768*180(°)

Note:

1. The coordinate system used in the settlement of the attitude angle is the northeast sky coordinate system, and the module is placed in the positive direction, such as "4 pin description"

Left is shown for the X axis, forward for the Y axis, and up for the Z axis. The rotation order of the coordinate system when the Euler angle represents the attitude

It is defined as Z-Y-X, that is, first rotate around the Z axis, then around the Y axis, and then around the X axis.

2. Although the range of the roll angle is ±180 degrees, in fact, because the coordinate rotation sequence is Z-Y-X, it represents the attitude

When , the range of the pitch angle (Y axis) is only ±90 degrees, and after exceeding 90 degrees, it will be changed to less than 90 degrees, and at the same time

Let the angle of the X axis be greater than 180 degrees. For the detailed principle, please Baidu the relevant information about Euler angle and attitude representation.

3. Since the three axes are coupled, they will show independent changes only at small angles, and the posture at large angles

The angle will be coupled and changed, for example, when the Y axis is close to 90 degrees, even if the attitude only rotates around the Y axis, the angle of the X axis

It will also change greatly, which is the inherent characteristic of Euler angles to express attitude.

illustrate:

1. Data is sent in hexadecimal, not ASCII.

2. Each data is transmitted sequentially in low byte and high byte, and the two are combined into a signed short type data.

For example, X-axis acceleration data Ax, where AxL is the low byte, and AxH is the high byte. The conversion method is as follows:

Assuming that Data is the actual data, DataH is its high byte, and DataL is its low byte, then: Data=((short)DataH<<8)|DataL. It must be noted here that DataH needs to be cast to a signed short first

The data of type will be shifted later, and the data type of Data is also a signed short type, so that negative numbers can be represented.

A packet with a single return register

A single return data packet needs to send a read register instruction first, and the instruction format is as follows:

--XX refers to the corresponding register number, the number of the register is for reference, and the example of sending the command is as follows:

function

command

read magnetic field

FF AA 27 3A 00

read four elements

FF AA 27 51 00

read temperature

FF AA 27 40 00

read power

FF AA 27 64 00

After sending this command, the module will return a data packet beginning with 0x55 0x71, which contains the corresponding start register address data, the start of the start register address and the following 7 register data (8 registers are fixedly uploaded), and the returned data format is as follows:

Start register (2Byte) + register data (16Byte, 8 registers)

packet header

sign

Start register address low

Start register address high

Start (1st) register data low bit

Open (1st) register number high bit

......

The low bit of the 8th register data

The 8th register data high bit

0x55

0x71

RegL

RegH

0xNN

0xNN

......

0xNN

0xNN

Note: 0xNN is the specific value received, the low byte comes first, and the high byte follows.

Magnetic field output

0x55

0x71

0x3A

0x00

HxL

HxH

HyL

HyH

HzL

HzH.....

Calculation method: unit mG

Magnetic field (x-axis) Hx=(( HxH<<8)| HxL)

Magnetic field (y axis) Hy=(( HyH <<8)| HyL)

Magnetic field (z axis) Hz =(( HzH<<8)| HzL)

Example: Send the command to read the magnetic field on the APP: FF AA 27 3A 00 (refer to 7.2.8 Read Register Value)

The module returns data to APP: 55 71 3A 00 68 01 69 00 7A 00 00 00 00 00 00 00 00 00 00 00, a total of 20 bytes.

For the 5th to 10th bytes, calculate as above, the magnetic field x=360, y=105, z=122.

Quaternion output

0x55

0x71

0x51

0x00

QxL

QxH

QyL

QyH

QzL

QzH.....

Calculation method:

Q0=((Q0H<<8)|Q0L)/32768

Q1=((Q1H<<8)|Q1L)/32768

Q2=((Q2H<<8)|Q2L)/32768

Q3=((Q3H<<8)|Q3L)/32768

checksum:

Sum=0x55+0x59+Q0L+Q0H+Q1L +Q1H +Q2L+Q2H+Q3L+Q3H

temperature output

0x55

0x71

0x40

0x00

TL

TH

......

Temperature calculation formula:

T=((TH<<8)|TL) /100 ℃

Host computer to module Send command:

read register value

FF AA 27 XX 00

read register value

--XX refers to the corresponding register.

example:

Read magnetic field: FF AA 27 3A 00

Read four elements: FF AA 27 51 00

Read temperature: FF AA 27 40 00

After sending this command, the module will return a data packet beginning with 0x55 0x71, which contains the corresponding start register address data, the beginning of the start register address and the following 7 register data (8 registers are fixedly uploaded), and the return data format refers to

Acceleration Calibration and Magnetic Field Calibration

FF AA 01 01 00

Acceleration Calibration

FF AA 01 05 00

Acceleration Calibration L

FF AA 01 06 00

Acceleration Calibration R

FF AA 01 07 00

Magnetic Field Calibration

FF AA 01 00 00

Complete Magnetic Field Calibration

save configuration

FF AA 00 SAVE 00

save configuration

SAVE: set

0: save the current configuration

1: Restore the default configuration and save

set return rate

FF AA 03 RATE 00

set return rate

RATE:return rate

0x01:0.1Hz

0x02:0.5Hz

0x03:1Hz

0x04:2Hz

0x05:5Hz

0x06:10Hz(default)

0x07:20Hz

0x08:50Hz

0x09:100Hz

0x0A:200Hz

Read power

FF AA 27 64 00

Read the power of the module

return data:55 71 64 00 48 03 00 00 AA 00 00 00 00 00 00 00 00 00 00 00

Among them, the two data of 48 03 represent the power, which is 0348 when converted into a hexadecimal number, and 840 when converted into a decimal number, which means that the corresponding power is 100%.

The power relationship corresponding to the decimal number is as follows:

Greater than 830 is 100%

Register valueVoltage valueBattery percentage

>396

> 3.96V

100%

393-396

3.93V-3.96V

90%

387-393

3.87V-3.93V

75%

382-387

3.82V-3.87V

60%

379-382

3.79V-3.82V

50%

377-379

3.77V-3.79V

40%

373-377

3.73V-3.77V

30%

370-373

3.70V-3.73V

20%

368-370

3.68V-3.70V

15%

350-368

3.50V-3.68V

10%

340-350

3.40V-3.50V

5%

<340

<3.40V

0%

Register Address Table

address

symbol

meaning

0x00

SAVE

save current configuration

0x01

CALSW

calibration

0x02

SAVE

0x03

RATE

return data rate

0x04

BAUD

Serial baud rate

0x05

AXOFFSET

X-axis acceleration zero bias

0x06

AYOFFSET

Y-axis acceleration zero bias

0x07

AZOFFSET

Z-axis acceleration zero bias

0x08

GXOFFSET

X-axis angular velocity zero bias

0x09

GYOFFSET

Y-axis angular velocity zero bias

0x0a

GZOFFSET

Z axis angular velocity zero bias

0x0b

HXOFFSET

X-axis magnetic field zero bias

0x0c

HYOFFSET

Y-axis magnetic field zero bias

0x0d

HZOFFSET

Z-axis magnetic field zero bias

0x0e

D0MODE

D0 model

0x0f

D1MODE

D1 model

0x10

D2MODE

D2 model

0x11

D3MODE

D3 model

0x12

SAVE

0x13

SAVE

0x14

SAVE

0x15

SAVE

0x16

SAVE

0x17

SAVE

0x18

SAVE

0x19

SAVE

0x1a

SAVE

0x1b

SAVE

......

......

......

0x30

YYMM

Year,month

0x31

DDHH

day, time

0x32

MMSS

minutes, seconds

0x33

MS

millisecond

0x34

AX

X-axis acceleration

0x35

AY

Y-axis acceleration

0x36

AZ

Z-axis acceleration

0x37

GX

X-axis angular velocity

0x38

GY

Y-axis angular velocity

0x39

GZ

Z-axis angular velocity

0x3a

HX

X-axis magnetic field

0x3b

HY

Y-axis magnetic field

0x3c

HZ

Z-axis magnetic field

0x3d

Roll

X-axis angle

0x3e

Pitch

Y-axis angle

0x3f

Yaw

Z-axis angle

0x40

TEMP

module temperature

0x49

SAVE

0x4a

SAVE

0x4b

SAVE

0x4c

SAVE

0x4d

SAVE

0x4e

SAVE

0x4f

SAVE

0x50

SAVE

0x51

Q0

Four elements Q0

0x52

Q1

Four elements Q1

0x53

Q2

Four elements Q2

0x54

Q3

Four elements Q3

Last updated