UWB测距基站数据解析源码

无线脉冲测距基站可以用于远距离相互测距,用于天车定位,斗轮机定位测距,有轨设备测距定位实现防撞和自动化控制等用途。
在这里插入图片描述
测距原理:如下图所示,T1时间从基站向主机站会发起测距请求脉冲,T2时刻测距请求脉冲到达主基站完成一次测距,脉冲在主从基站之间的飞行时间就是T2减去T1的所得的结果,已知脉冲运动速度近似为光速C,从而得到主从基站之间的距离D=C*(T2-T1)。
在这里插入图片描述
在这里插入图片描述
产品特点

工业级设计,支持24小时*365天连续使用;

IP67防护等级,防水防尘,使用于室内室外各种恶劣环境;

精准测距,10厘米级实时精准测距,无累计误差,无需校准;

超远距离,支持大于500米远距离实时测距;

支持RS485输出;

支持DC12-24V宽电压供电;

测距精度不受粉尘、雨雾影响;

快速安装,简单、方便、快捷;

支持一对多实时测距。
在这里插入图片描述
在这里插入图片描述
[21:43:20.764]收 55 AA 01 11 AC 01 00 05 00 11 02 00 00 64 00 00 00 00 00 C4 FE
[21:43:21.265]收 55 AA 01 11 AD 01 00 05 00 11 02 00 00 64 00 00 00 00 00 C3 FE
[21:43:21.774]收 55 AA 01 11 AE 01 00 05 00 10 02 00 00 64 00 00 00 00 00 C3 FE
[21:43:22.275]收 55 AA 01 11 AF 01 00 05 00 10 02 00 00 64 00 00 00 00 00 C2 FE
解释:55 AA 01 11 AF 01 00 05 00 10 02 00 00 64 00 00 00 00 00 C2 FE
55AA 包头2字节,每包数据默认为55AA开头。
01 指令类1个字节,01代表正常模式。
11 数据长度1个字节;转为10进制为17代表数据除去包头包尾有17个字节就是34个字符,加上包头包尾字符串长度就为42个字符。
AF 包序1字节;0-255的循环,转为10进制为175,带表第175包数据。
0100标签ID2字节 ;低位在前高位在后就是0001转为10进制标签ID为0001。
0500 基站ID2字节;低位在前高位在后就是0005转为10进制标签ID为0005。
1002 0000 测距距离4字节单位厘米,有符号整数,低位在前高位在后为00001002翻译为10进制,距离为528 cm。
64 电量信息1字节,转为10进制为100。
00 按键1字节,01代表按下,00代表没按下。
00 00 00 00 保留位4字节。
C2FE为检验码2字节。

#define frame_length    200
uint8_t frame[frame_length];
uint8_t  usart_state =0, data_pos =0, pack_len =0, pack_cmd =0;
uint16_t packge_type, heart_id, tag_id, anchor_id, seq ;
int32_t distance;
void DataProcess(uint8_t tmp)  //将收到的数据一个个字节传入函数中
{  uint16_t checksum;
   
        switch(usart_state){
        case 0:   //解析初始状态,等待接收包头55
            if(tmp == 0x55)
                usart_state = 1;
            break;
        case 1:
            if(tmp == 0xaa){   //接收包头AA
                usart_state = 2;
                data_pos = 0;
            }else{
                usart_state = 0;
            }
            break;
        case 2:             //接收CMD
            pack_cmd = tmp;
            frame[data_pos++] = tmp;
            usart_state =3;
            break;
        case 3:         //接收包长度
            pack_len = tmp;
            frame[data_pos++] = tmp;
            usart_state =4;
            break;
        case 4:             //接收数据
            frame[data_pos++] =tmp;
            if(data_pos >= pack_len+2){
                usart_state = 0;
                checksum = Checksum_u16(frame,pack_len);  //计算校验值
                if(checksum ==(frame[pack_len]|frame[pack_len+1]<<8)){  //比较校验值
                    switch(pack_cmd){
                    case 1:     //收到测距信息
                        memcpy(&distance,&frame[7],4);  //距离值
                        seq = frame[2];		//序号
                        tag_id = ( frame[3]|frame[4]<<8);//标签ID
                        anchor_id = (frame[5]|frame[6]<<8);//基站ID
                        packge_type = 1;
                        break;
                    case 2:  //收到心跳包
                        heart_id =  frame[2]|frame[3]<<8;
                        packge_type = 2;
                        break;
                 
                    }
                }
            }
            break;
        default:

            break;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值