1 前言
国内的当前主流的定位技术有WiFi定位,RFID定位,蓝牙定位,ZigBee定位等几种方法,WiFi无线技术当前主要用于无线局域网的建立与路由功能,具有高速,载波侦听,支持多个用户的特点,由此也决定了其功耗大的结果,且WiFi的软件实现的难度较高,系统成本相对增大且存在严重的同频干扰问题,因此不采用WiFi作为室内定位的无线技术,RFID定位采用近邻法,多边定位法,接受信号强度等方法确定标签所在位置,但由于作用距离近,不具有通信能力,而且不便于整合到其他系统中,无法做到精确定位,布设读卡器和无线需要有大量的工程实验经验难度大。蓝牙技术当前也快速发展,主要被用于低功耗短距离传输,如穿戴设备,蓝牙耳机等,对于室内定位而言,距离至少要覆盖整个房间,由于蓝牙距离受限,定位系统的稳定性跟不上,在复杂的环境下很容易被干扰,成本也相应较高,无法作为室内无线定位技术。此时ZigBee技术就脱颖而出,ZigBee技术主要适用于近距离,小流量,低功率的应用场合。并且ZigBee技术采用直接序列扩频技术提高自身的抗干扰能力,同时,ZigBee无线设备具有低成本,低功耗,延时短的特点。
2 RSSI测距思路
1.路由 A、路由 B 组播(不跨路由)数据给ZigBee协调器、节点。ZigBee协调器获得获得 AS、BS 的 RSSI,节点获得 AN、BN 的 RSSI 数据;
2.由盲节点点播(不夸路由)数据给协调器,并反馈 AN、BN 的数据,ZigBee协调器记录 SN 的 RSSI;
3.根据 RSSI 与距离之间的换算,可以获得 AS、BS、AN、BN、SN 的长度;
4.根据三角形勾股定理,可计算出 X,Y 坐标。
(a-sx)^2+y^2=an^2; x^2+y^2=sn^2;(bs-x)^2+x^2=bn^2;
3 RSSI测距关系式
d=10^((ABS(RSSI)-A)/(10*n));(单位 m)
//A为1米时的RSSI的绝对值,RSSI的真实值为接收包里 rssi-255; 绝对值ABS(RSSI)=255-rssi,A值的最佳范围为45-49,n为环境衰减因子,需要测试矫正,最佳范围在3.25-4.5之间。
#define RSSI_A 60
#define RSSI_N 3.8 float distance;
void rssi_distance(unsigned char rssi)
{
unsigned int a,b;
float c;
if(255<rssi+RSSI_A)//1 米内定位
{
distance=1;
}
else{
a=ABS(255-rssi-RSSI_A);
b=10*RSSI_N;
c=a;
c=c/b;
distance=pow(10,c);
}
printf("distance=%0.1f\r\n",distance);
}
4 下位机设计
ZigBee协调器节点1个+ZigBee终端节点3个。