HWT31 Protocol
HWT31 Protocol
Instructions for use:
Enter commands that need to modify or read data
Read format
Data is sent in hexadecimal, not ASCII.
Each data is transmitted in sequence by low byte and high byte, and the two are combined into a signed short type of data. For example, for data DATA1, DATA1L is the low byte and DATA1H is the high byte. The conversion method is as follows: Suppose DATA1 is the actual data, DATA1H is its high-byte part, DATA1L is its low-byte part,
Then: DATA1=(short)((short)DATA1H<<8|DATA1L). It must be noted here that DATA1H needs to be coerced into a signed short type of data before shifting, and the data type of DATA1 is also a signed short type, so that negative numbers can be represented.
Protocol header | Data content | Data lower 8 bits | Data high 8 bits | Data lower 8 bits | Data high 8 bits | Data lower 8 bits | Data high 8 bits | Data lower 8 bits | Data high 8 bits | SUMCRC |
0x55 | TYPE【1】 | DATA1L[7:0] | DATA1H[15:8] | DATA2L[7:0] | DATA2H[15:8] | DATA3L[7:0] | DATA3H[15:8] | DATA4L[7:0] | DATA4H[15:8] | SUMCRC【2】 |
【1】TYPE(data content):
TYPE | Remark |
0x51 | Acceleration |
0x53 | Angle |
【2】SUMCRC(Data and Checksum):
SUMCRC=0x55+TYPE+DATA1L+DATA1H+DATA2L+DATA2H+DATA3L+DATA3H+DATA4L+DATA4H
SUMCRC is a char type, taking the lower 8 bits of the checksum
Acceleration output
0x55 | 0x51 | AxL | AxH | AyL | AyH | AzL | AzH | TL | TH | SUM |
Name | Description | Remark | ||||||||
AxL | Acceleration X low 8 bits | Acceleration X=((AxH<<8)|AxL)/32768*16g (g is the acceleration of gravity, preferably 9.8m/s2) | ||||||||
AxH | Acceleration X high 8 bits | |||||||||
AyL | Acceleration Y low 8 bits | Acceleration Y=((AyH<<8)|AyL)/32768*16g (g is the acceleration of gravity, preferably 9.8m/s2) | ||||||||
AyH | Acceleration Y high 8 bits | |||||||||
AzL | Acceleration Z low 8 bits | Acceleration Z=((AzH<<8)|AzL)/32768*16g (g is the acceleration of gravity, preferably 9.8m/s2) | ||||||||
AzH | Acceleration Z high 8 bits | |||||||||
TL | 8-bit lower temperature | Temperature calculation formula: temperature=((TH<<8)|TL) /100 ℃ | ||||||||
TH | 8-bit high temperature | |||||||||
SUM | Checksum | SUM=0x55+0x51+AxL+AxH+AyL+AyH+AzL+AzH+TL+TH |
Angle output
0x55 | 0x53 | RollL | RollH | PitchL | PitchH | 0x00 | 0x00 | TL | TH | SUM |
Name | Description | Remark | ||||||||
RollL | Roll angle X lower 8 bits | roll angle X=((RollH<<8)|RollL)/32768*180(°) | ||||||||
RollH | Roll angle X high 8 bits | |||||||||
PitchL | Pitch angle Y low 8 bits | Pitch angle Y=((PitchH<<8)|PitchL)/32768*180(°) | ||||||||
PitchH | Pitch angle Y high 8 bits | |||||||||
0x00 | meaningless | meaningless | ||||||||
0x00 | meaningless | |||||||||
VL | The lower 8 bits of the version number | Version number calculation formula: Version number=(VH<<8)|VL | ||||||||
VH | Version number high 8 bits | |||||||||
SUM | Checksum | SUM=0x55+0x53+RollL+RollH+PitchL+PitchH+VL+VH |
Write format
The following data, all use Hex code hexadecimal
protocol header | protocol header | register | Data lower 8 bits | Data high 8 bits |
0xFF | 0xAA | ADDR | DATAL[7:0] | DATAH[15:8] |
The data is sent in hexadecimal not ASCII.
Each data is transmitted in sequence by low byte and high byte, and the two are combined into a signed short type of data. For example, data DATA, where DATAL is the low byte and DATAH is the high byte. The conversion method is as follows: assuming that DATA is the actual data, DATAH is the high byte part, DATAL is the low byte part,
Then: DATA=(short)((short)DATAH<<8|DATAL). It must be noted here that DATAH needs to be coerced into a signed short type of data before shifting, and the data type of DATA is also a signed short type, so that negative numbers can be represented.
CALSW(Calibration mode)
Register Name: CALSW Register Address: 1 (0x01) Read and write direction: W Default: 0x0000 | ||
Bit | NAME | FUNCTION |
15:1 | ||
0:0 | CAL | To set the calibration mode: 1(0x01): Addition calibration |
Example: FF AA 01 01 00 (plus calibration) |
BAUD(Serial port baud rate)
Register Name: BAUD Register Address: 4 (0x04) Read and write direction: W Default: 0x0000 | ||
Bit | NAME | FUNCTION |
15:1 | ||
0:0 | BAUD | Set the serial port baud rate: 0(0x00): 115200bps 1(0x01): 9600bps |
Example:FF AA 04 00 00(Set the serial port baud rate115200) |
DELAYT(Alarm signal delay)
Register Name: DELAYT Register Address: 89 (0x59) Read and write direction: W Default: 0x0000 | ||
Bit | NAME | FUNCTION |
15:0 | DELAYT[15:0] | Unit: ms After the angle alarm occurs, the port will generate a corresponding alarm signal. When the alarm disappears, the alarm signal will continue to delay DELAYT[15:0] before disappearing. |
Example:FF AA 59 E8 03(Set the alarm signal delay1000ms) |
XMIN~XMAX(X-axis angle alarm threshold)
Register Name: XMIN~XMAX Register address: 90~91 (0x5A~0x5B) Read and write direction: W Default: 0x0000 | ||
Bit | NAME | FUNCTION |
15:0 | XMIN[15:0] | Set the X-axis angle alarm minimum value X-axis angle alarm minimum value=XMIN[15:0]*90/32768(°) |
15:0 | XMAX[15:0] | Set the X-axis angle alarm maximum value X-axis angle alarm maximum value=XMAX[15:0]*90/32768(°) |
Example: FF AA 5A 72 FC (set -2.5 degrees), 0xFC72=-910, -910*90/32768=-2.5 FF AA 5B 8E 03 (set 2.5 degrees), 0x038E=910, 910*90/32768=2.5 The X axis will not alarm between -2.5°~2.5°, once it exceeds this range, an alarm will occur |
YMIN~YMAX(Y-axis angle alarm threshold)
Register Name: YMIN~YMAX Register address: 94~95 (0x5E~0x5F) Read and write direction: W Default: 0x0000 | ||
Bit | NAME | FUNCTION |
15:0 | YMIN[15:0] | Set the Y-axis angle alarm minimum value Y-axis angle alarm minimum value=YMIN[15:0]*90/32768(°) |
15:0 | YMAX[15:0] | Set the Y-axis angle alarm maximum value Y-axis angle alarm maximum value=YMAX[15:0]*90/32768(°) |
Example: FF AA 5E 72 FC (set -5 degrees), 0xFC72=-910, -910*90/32768=-2.5 FF AA 5F 8E 03 (set 5 degrees), 0x038E=910, 910*90/32768=2.5 The Y axis will not alarm between -2.5°~2.5°, once it exceeds this range, an alarm will occur |
Last updated