# WAX-RX-M矩阵式薄膜压力传感器采集模块 ## 数据采集模块使用视频教程 链接:[https://www.bilibili.com/video/BV1UHEwzDEog](https://www.bilibili.com/video/BV1UHEwzDEog) ## 数据采集模块资料包下载地址 通过百度网盘分享的文件:WAX-RX-M薄膜数据采集模块 链接: [https://pan.baidu.com/s/1OeL8Tst5GxOnQsEyi3vOeg?pwd=cju2](https://pan.baidu.com/s/1OeL8Tst5GxOnQsEyi3vOeg?pwd=cju2) 提取码: cju2 ## 传感器尺寸 ![image-20250514080110299](media/image-20250514080110299.png) ![image-20250514080153312](media/image-20250514080153312.png) ## WAX-RX-M数据采集器使用方法 ![image-20250514081231269](media/image-20250514081231269.png) ![image-20250512214351940](media/image-20250512214351940.png) ![image-20250514233837103](media/image-20250514233837103.png) ![image-20250514233849480](media/image-20250514233849480.png) ![image-20250514233857442](media/image-20250514233857442.png) ![image-20250514233908026](media/image-20250514233908026.png) ## 薄膜压力传感器采集器输出协议格式 本采集器蓝牙/USB/排针串口输出协议统一 串口输出协议数据,115200波特率【默认】,8位数据位,1位停止位,无校验。 ### 数据协议 | 字节数 | 字段名称 | 描述 | | ------ | ------------------ | --------------------------------------------------------- | | 2 | 帧头 | 固定为 `0xAA 0x55` 作为数据起始标志 | | 1 | 命令字 | 表示当前选择的不同传感器,例如0x01代表RX-M0404M-1KG传感器 | | 1 | 数据长度 | 固定为 48(16 个 3字节整数) | | 48 | 数据区 | 传感器而定数据长度 | | 1 | 校验码(Checksum) | 校验数据正确性 | | 1 | 结束符 | 固定 `0x0D`(回车符) | #### 帧头 占用2个字节,固定为 `0xAA 0x55` 作为数据起始标志 #### 命令字 占用1个字节, ``` 0x01 代表当前是RX-M0404M-1KG传感器 0x02 代表当前是RX-M0404M-5KG传感器 0x03 代表当前是RX-M0404M-10KG传感器 0x04 代表当前是RX-M0303M-1KG传感器 0x05 代表当前是RX-M0303M-5KG传感器 0x06 代表当前是RX-M0303M-10KG传感器 ... ``` #### 数据长度 这里只是数据位的长度,并非整个帧长度 0x30:4*4传感器是16组数据,1个传感器数据占用3个字节,总共是16X3=48个字节,16进制是0x30 为了好解析,3*3的传感器也输出48个字节,只不过中间有7X3字节=21个字节填充0不用,具体参考汇总表格 #### 数据区 根据数据长度发送对应长度数据, 比如发送数据是0x01,0x23,0x34....... 代表 ``` 0x012334 十六进制数据 =74548 十进制数据 ``` #### 校验码(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`(回车符) ### 汇总表格 | 字节 | M0404 | M0303 | 介绍 | | ---- | -------------- | ------------- | -------------- | | 1 | AA | AA | 帧头 | | 2 | 55 | 55 | 帧头 | | 3 | 01-03 | 04-06 | 代表传感器型号 | | 4 | 30 | 30 | 数据长度 | | 5 | 传感器A0高8位 | 传感器A0高8位 | 传感器数据 | | 6 | 传感器A0中8位 | 传感器A0中8位 | ... | | 7 | 传感器A0低8位 | 传感器A0低8位 | | | 8 | 传感器A1高8位 | 传感器A1高8位 | | | 9 | 传感器A1中8位 | 传感器A1中8位 | | | 10 | 传感器A1低8位 | 传感器A1低8位 | | | 11 | 传感器A2高8位 | 传感器A2高8位 | | | 12 | 传感器A2中8位 | 传感器A2中8位 | | | 13 | 传感器A2低8位 | 传感器A2低8位 | | | 14 | 传感器A3高8位 | 00 | | | 15 | 传感器A3中8位 | 00 | | | 16 | 传感器A3低8位 | 00 | | | 17 | 传感器A4高8位 | 传感器A3高8位 | | | 18 | 传感器A4中8位 | 传感器A3中8位 | | | 19 | 传感器A4低8位 | 传感器A3低8位 | | | 20 | 传感器A5高8位 | 传感器A4高8位 | | | 21 | 传感器A5中8位 | 传感器A4中8位 | | | 22 | 传感器A5低8位 | 传感器A4低8位 | | | 23 | 传感器A6高8位 | 传感器A5高8位 | | | 24 | 传感器A6中8位 | 传感器A5中8位 | | | 25 | 传感器A6低8位 | 传感器A5低8位 | | | 26 | 传感器A7高8位 | 00 | | | 27 | 传感器A7中8位 | 00 | | | 28 | 传感器A7低8位 | 00 | | | 29 | 传感器A8高8位 | 传感器A6高8位 | | | 30 | 传感器A8中8位 | 传感器A6中8位 | | | 31 | 传感器A8低8位 | 传感器A6低8位 | | | 32 | 传感器A9高8位 | 传感器A7高8位 | | | 33 | 传感器A9中8位 | 传感器A7中8位 | | | 34 | 传感器A9低8位 | 传感器A7低8位 | | | 35 | 传感器A10高8位 | 传感器A8高8位 | | | 36 | 传感器A10中8位 | 传感器A8中8位 | | | 37 | 传感器A10低8位 | 传感器A8低8位 | | | 38 | 传感器A11高8位 | 00 | | | 39 | 传感器A11中8位 | 00 | | | 40 | 传感器A11低8位 | 00 | | | 41 | 传感器A12高8位 | 00 | | | 42 | 传感器A12中8位 | 00 | | | 43 | 传感器A12低8位 | 00 | | | 44 | 传感器A13高8位 | 00 | | | 45 | 传感器A13中8位 | 00 | | | 46 | 传感器A13低8位 | 00 | | | 47 | 传感器A14高8位 | 00 | | | 48 | 传感器A14中8位 | 00 | | | 49 | 传感器A14低8位 | 00 | | | 50 | 传感器A15高8位 | 00 | | | 51 | 传感器A15中8位 | 00 | | | 52 | 传感器A15低8位 | 00 | | | 53 | 校验位 | 校验位 | 校验位 | | 54 | 0D | 0D | 0D | ## 采集器设置协议 在当前波特率下发送这些协议数据有效 ### 数据协议 | 字节数 | 字段名称 | 描述 | | ------ | -------- | ----------------------------------- | | 2 | 帧头 | 固定为 `0xAA 0x55` 作为数据起始标志 | | 4 | 命令字 | 见下表 | | 1 | 结束符 | 固定 `0x0D`(回车符) | ### 命令字 第一个字节,设置传感器 ``` 0x01 代表当前是RX-M0404M-1KG传感器 0x02 代表当前是RX-M0404M-5KG传感器 0x03 代表当前是RX-M0404M-10KG传感器 0x04 代表当前是RX-M0303M-1KG传感器 0x05 代表当前是RX-M0303M-5KG传感器 0x06 代表当前是RX-M0303M-10KG传感器 ... ``` 第二个字节,设置数据发送间隔 ``` 0x01 代表设置100ms 0x02 代表设置200ms 0x03 代表设置300ms 0x04 代表设置400ms 0x05 代表设置500ms 0x06 代表设置1000ms ``` 第三个字节,预留 ``` 0x00 ``` 第四个字节,预留 ``` 0x00 ``` 举例,如果设置采集器想设置波特率为115200,型号RX-M0404M-1KG,发送间隔是100ms,整个设置帧是 ``` AA 55 01 01 00 00 0D ``` ### 采集器回复设置ACK 设置成功会回复: ``` AA 55 00 01 0D ``` 设置失败会回复: ``` 设置错误会回复:AA 55 00 00 0D ``` ## ARDUINO例程介绍 Arduino例程功能: ``` 读取传感器数据后,通过串口打印出来16路传感器数据 ``` 接线方式 ``` ARDUINO UNO R3 采集器 5V --------> 5V GND --------> GND 0 <-------- TXD ``` ![image-20250514214212673](media/image-20250514214212673.png) 注意:因为arduion uno只有一个串口,要用于烧录,所以先烧录固件,打开串口,波特率115200,显示"开始监听传感器数据"后,再接TXD的线。否则,接TXD的线会影响烧录。 ![image-20250514213931666](media/image-20250514213931666.png) 接上TXD的线后,输出输出效果,显示A0-A15总共16路数据,波特率115200 ![image-20250514214303240](media/image-20250514214303240.png) ## 51单片机例程介绍 例程单片机使用STC89C52RC单片机,晶振使用11.0592MHz晶振【注意不能用12MHz晶振】,波特率115200。 例程功能: ``` 读取传感器数据后,通过串口打印出来16路传感器数据 ``` 接线方式 ``` STC89C52RC 采集器 5V --------> 5V GND --------> GND P3.0 <-------- TXD 如果51板子本身有串口输出电路就直接用串口输出,如果没有另外找一个USB-TTL读取打印信息 STC89C52RC USB-TTL P3.1 ---------> RXD GND --------> GND ``` ![image-20250514225651677](media/image-20250514225651677.png) 注意:因为STC89C52只有一个串口,要用于烧录,所以先烧录固件,打开串口,波特率115200,显示"传感器解析开始"后,再接TXD的线。否则,接TXD的线会影响烧录。 例程最终效果,用xcom读取串口,115200波特率数据,A0-A15对应16个传感器 ![image-20250514225825383](media/image-20250514225825383.png) ## STM32F103参考例程介绍 例程单片机使用STM32F103系列单片机,波特率115200。 例程功能: ``` 串口2读取传感器数据后,通过串口1打印出来16路传感器数据 ``` 接线方式 ``` 硬件串口方式连接: 采集器 STM32板子 5V-----------------5V GND------------------GND TX-----------------RX2 PA3 usb-ttl接电脑调试 USB-TTL模块 STM32板子 5V----------------------5V GND--------------------->GND RX---------------------->TX1 PA9 ``` ![image-20250514233419233](media/image-20250514233419233.png) 接串口1的USB-TTL,用XCOM工具,波特率115200,打开串口,按下STM32复位键 串口输出"开始解析传感器数据:" 之后如果采集器和STM32接线接对,就会正常解析数据了,A0-A15对应16个传感器数据。 ![image-20250514233641997](media/image-20250514233641997.png)