# 薄膜压力传感器WAX-ARR-II采集器使用说明 ## 数据采集模块使用视频教程 [哔哩哔哩_https://www.bilibili.com/video/BV1omKH63Ego/](https://www.bilibili.com/video/BV1omKH63Ego/) ## 数据采集模块资料包下载地址 通过网盘分享的文件:WAX-ARR-II薄膜压力数据采集模块 链接: [https://pan.baidu.com/s/1YtGBDUYvC8Ttjd38ft-Zag?pwd=wb3y](https://pan.baidu.com/s/1YtGBDUYvC8Ttjd38ft-Zag?pwd=wb3y) 提取码: wb3y ## 支持传感器列表 ``` RX_M1616M_1KG传感器 RX_M1616M_2KG传感器 RX_M1616M_5KG传感器 RX_M1616M_10KG传感器 RX_M1616M_20KG传感器 RX_M1616M_30KG传感器 RX_M1616M_50KG传感器 ``` ## 使用方法 ![](media/1.jpg) ![2](media/2.jpg) ![3](media/3-1784553388253.jpg) ![4](media/4.jpg) ![5](media/5.jpg) ![6](media/6.jpg) ![7](media/7.jpg) ![8](media/8.jpg) ![10](media/10.jpg) ## 薄膜压力传感器采集器输出协议格式 本采集器蓝牙/USB/排针串口输出协议统一 串口输出协议数据,115200波特率【默认】,8位数据位,1位停止位,无校验。 ### 数据协议 | 字节数 | 字段名称 | 描述 | | ------ | ------------------ | --------------------------------------------------------- | | 2 | 帧头 | 固定为 `0xAA 0x55` 作为数据起始标志 | | 1 | 命令字 | 表示当前选择的不同传感器,例如0x01代表RX_M1616M_1KG传感器 | | 2 | 数据长度 | 固定为 512(16*16 个 2字节整数) | | 512 | 数据区 | 传感器而定数据长度 | | 1 | 校验码(Checksum) | 校验数据正确性 | | 1 | 结束符 | 固定 `0x0D`(回车符) | ### 帧头 占用2个字节,固定为 `0xAA 0x55` 作为数据起始标志 ### 命令字 占用1个字节, ``` 0x01 代表当前是RX_M1616M_1KG传感器 0x02 代表当前是RX_M1616M_2KG传感器 0x03 代表当前是RX_M1616M_5KG传感器 0x04 代表当前是RX_M1616M_10KG传感器 0x05 代表当前是RX_M1616M_20KG传感器 0x06 代表当前是RX_M1616M_30KG传感器 0x07 代表当前是RX_M1616M_50KG传感器 ... ``` ### 数据长度 这里只是数据位的长度,并非整个帧长度 0x02 0X00:16*16传感器是256组数据,1个传感器数据占用2个字节,总共是16X16X2=512个字节, 16进制是0x0200 ### 数据区 根据数据长度发送对应长度数据, 比如发送数据是0x01,0x23 代表 ``` 0x0123 十六进制数据 =291 十进制数据 ``` ### 校验码(Checksum) **计算方式:** 1. **把所有数据区字节相加**(`SUM = byte1 + byte2 + ...`)。 2. **只取低 8 位**(`SUM & 0xFF`)。 以下为例程校验换算C 语言实现(Checksum),这里以6个字节数据为例,实际计算按照实际长度 ``` #include #include // 计算 8 位校验和(Checksum) uint8_t checksum_8bit(const uint8_t *data, uint16_t length) { uint16_t sum = 0; // 16位变量存储总和,防止溢出 for (uint16_t i = 0; i < length; i++) { sum += data[i]; // 逐字节累加 } return (uint8_t)(sum & 0xFF); // 取低 8 位 } int main() { uint8_t data[] = {0x01, 0x40, 0x00, 0x00, 0x30, 0x39}; // 示例数据 uint8_t checksum = checksum_8bit(data, sizeof(data)); printf("校验和: 0x%02X\n", checksum); return 0; } ``` ### 结束符 固定 `0x0D`(回车符) ## 汇总表格 | 字节序号 | RX-M1616 | 介绍 | | -------- | ------------- | -------------- | | 1 | AA | 帧头 | | 2 | 55 | 帧头 | | 3 | 01-07 | 代表传感器型号 | | 4-5 | 0200 | 数据长度 | | 6 | 传感器A0高8位 | 传感器数据 | | 7 | 传感器A0低8位 | ... | | 8 | 传感器A1高8位 | | | 9 | 传感器A1低8位 | | | 10 | 传感器A2高8位 | | | 11 | 传感器A2低8位 | | | ... | ... | //此处规律省略 | | 518 | 校验位 | 校验位 | | 519 | 0D | 0D | ## 采集器设置协议 在当前波特率下发送这些协议数据有效 ### 数据协议 | 字节数 | 字段名称 | 描述 | | ------ | -------- | ----------------------------------- | | 2 | 帧头 | 固定为 `0xAA 0x55` 作为数据起始标志 | | 4 | 命令字 | 见下表 | | 1 | 结束符 | 固定 `0x0D`(回车符) | ### 命令字 第一个字节,设置传感器 ``` 0x01 代表当前是RX_M1616M_1KG传感器 0x02 代表当前是RX_M1616M_2KG传感器 0x03 代表当前是RX_M1616M_5KG传感器 0x04 代表当前是RX_M1616M_10KG传感器 0x05 代表当前是RX_M1616M_20KG传感器 0x06 代表当前是RX_M1616M_30KG传感器 0x07 代表当前是RX_M1616M_50KG传感器 ... ``` 第二个字节,设置数据发送间隔 ``` 0x01 代表设置100ms 0x02 代表设置200ms 0x03 代表设置300ms 0x04 代表设置400ms 0x05 代表设置500ms 0x06 代表设置1000ms ``` 第三个字节,预留 ``` 0x00 ``` 第四个字节,预留 ``` 0x00 ``` 举例,如果设置采集器想设置波特率为115200,型号RX_M1616M_1KG,发送间隔是100ms,整个设置帧是 ``` AA 55 01 01 00 00 0D ``` ### 采集器回复设置ACK 设置成功会回复: ``` AA 55 00 01 0D ``` 设置失败会回复: ``` 设置错误会回复:AA 55 00 00 0D ```