1. 引言
随着科技与经济的不断发展,人们对于定位服务的需求急剧提高。当前,以GPS (全球卫星定位系统)为代表的卫星定位系统已基本满足了室外定位的需求,但对于卫星信号难以穿透的室内环境却并不适用。与此同时,随着智能设备的普及,室内定位在商业领域、公共安全及军事等领域日益受到重视 [1] 。当前,室内定位技术主要包括Wi-Fi定位、红外定位、超声定位等,这些定位技术虽然能满足室内定位需求,但通常需要铺设许多传感器,设备环境复杂、使用成本较高 [2] ,这些缺点极大地限制了室内定位技术的发展。但近年来,随着固态照明技术突飞猛进,LED以其低功耗、使用寿命长 [3] 等特点逐渐成为了主要的照明手段,极大地降低了照明的成本,在此基础上,利用可见光进行室内定位的技术也得到了广泛重视,相比于其他传统的室内定位技术,利用可见光进行室内定位具有功耗低、成本低、兼顾照明、无电磁干扰、应用场合广等优点 [4] 。
目前,基于白光LED的室内可见光定位技术主要有LED-ID定位方法、TOA (到达时间)定位方法、RSS (接收信号强度)定位方法等 [5] 。其中,LED-ID定位方法给每盏LED分配固定的ID,探测器通过读取接收信号中的ID信息以确定自身所处位置 [6] ,这种定位方法的精度主要取决于LED的布局,提高LED的数量可以有效增加精度,但对应的算法复杂程度也会随之提升;TOA定位方法通过LED发送信息的时间与探测点接收信息时间之差来进行测距 [7] ,缺陷在于发送端的时钟必须与接收端的时钟严格一致;RSS定位方法则通过探测器所接受到的信号强度来测算探测点与LED之间的距离 [8] ,RSS定位方法的特点在于能在对发送端和接收端的时钟无任何要求的同时实现较精确的定位效果,且结构简单,易于实现 [9] ,是当前使用较多的一种室内可见光定位方法。
文章研究了一套基于可见光的室内定位系统,采用STM32作为核心处理器,发射端使用3个LED以不同的频率高速闪烁,发送携带位置信息的光信号,接收端光电探测器与STM32的ADC相连,STM32对光电探测器输出的模拟信号进行采样处理,并从采样信号中提取出待测点位置信息,最终得到待测点的坐标,整个系统结构简单,定位精度较高,满足室内定位的要求。
2. 室内定位系统的定位原理
2.1. 定位原理
通常,我们认为白光LED符合朗伯辐射模型,模型如图1所示。一般情况下LED的辐射范围远大于LED自身直径,故将LED简化为图中S点,O点为S点在水平光照面上的投影,d为S点与O点的垂直距离,n为光照面法线方向,光电探测器A与O点距离为r。
此时若探测器水平放置(此时LED辐射角与探测器入射角相等),则接收信号光信道直流增益可表示为(1)、(2)式的形式 [10]:
(1)
(2)
其中A为探测器的接收面积;Ts(θ)为探测器光滤波增益;g(θ)为探测器的光聚能增益;m称为光源辐射模式,是表征发光方向性的参数 [11] ;θ1/2为光源的半功率角,即强度为最大光强一半的光束与n的夹角 [7] ,在光源与光照面选定的情况下,θ1/2为一个常量。
又从图1中,有
(3)
故可知,在光源处于固定高度d时,探测器在光照面上各点接收到的光照强度将随着半径r而改变,通过测量待测点接收的光强度,可得到待测点距离LED垂直投影点O的距离r。
已知待测点分别距3个LED垂直投影点的距离r1、r2、r3,可通过三角测量法对待测点的坐标进行定位,三角测量法原理如图2所示。O(x, y)为探测器所处位置,A(x1, y1)、B(x2, y2)、C(x3, y3)分别为三个LED在光照面上的垂直投影。
![](//html.hanspub.org/file/5-1270439x14_hanspub.png)
Figure 2. Triangulation method illustration
图2. 三角测量法
由圆的几何关系,可给出以下方程组:
(4)
(5)
(6)
由此即可得到O点的坐标x、y,为简化起见,我们选择的三个LED的垂直投影坐标分别为A(0, 0)、B(−300, 300)、C(−300, −300),故O点的x、y分别表示为:
(7)
(8)
2.2. 滤波原理及实现
为了得到每个LED所产生的光照强度,必须给每个LED赋予不同的标识,这里我们选择以光信号频率作为标识来区分每个LED,即以不同频率的PWM波驱动LED闪烁发出不同频率的光信号,并在接收端以滤波器对接收信号进行处理。由于我们仅需要光信号的强度而对相位没有要求,因此所采用的滤波器应拥有较好的频率选择性和通带内较为平坦的幅度特性,综上考虑,我们选用可以较少的阶数获得较好的频率选择性,通带内也较为平坦,同时在运算效率上更占优势的IIR滤波器 [12] 。IIR滤波器的输入输出关系可用如(9)式的N阶差分方程表示:
(9)
其中bi和ai分别是输入信号x(n)与输出信号y(n)的i阶延时加权系数。在已知所需滤波器的设计指标时,bi和ai的值均可由数学软件Matlab中附带的Fdatool工具给出。
在系统的实际设计中,由于实际采样频率与滤波器预设的采样频率不严格匹配,实际采样信号的频点与预设频点有一定偏离。同时由于LED所发出的信号是方波信号,其频谱并不如正弦波一般集中,因此在设计滤波器的通频带时还须对实际采样信号的频谱进行分析。
如图3所示,我们对测试点1(−200, 0)、测试点2(−100, 0)以及测试点3(0, 0)采集的信号进行400点FFT,并将得到三组信号的频谱并将其绘制在同一张图上,可见在560 Hz处,测试点3接收到的光信号频谱尖峰达到最大,而测试点3的坐标(0, 0)正好处于频率标识位500 Hz的LED正下方,因此我们取560 Hz作为对应该LED的滤波器的中心频点。同理对于频率标识位2000 Hz及3000 Hz的LED,对应滤波器的中心频点为2240 Hz及3300 Hz。
图4给出了测试点1(−200, 0)处的实际滤波效果,可见信号在经过一段时间的群延时后波形趋于稳定,此时我们分别取3个信号的幅值,即可得到接收信号中每个LED的光电流值。
3. 室内可见光定位系统的实现
3.1. 系统硬件组成
系统的整体组成框图如图5所示,定位系统由主控芯片STM32、灯架(LED)、PIN光电探测器以及LCD显示屏组成。灯架大小为760 mm*760 mm*910 mm,实际实验面积大小为600 mm*600 mm,灯架顶部放置三盏LED,对应光照面的垂直投影坐标为A(0, 0)、B(−300, 300)、C(−300, −300)。发射端部分以占空比为50%,频率分别为500 Hz、2000 Hz、3000 Hz的PWM波对LED光源进行驱动,使3个LED光源按不同的频率进行高速闪烁。灯架底部绘制标定板,X坐标范围为−300至300,Y坐标范围为−300到300,最小刻度为1 cm。PIN光电探测器置于标定板上,将接收到的光信号转化为电信号。STM32通过ADC对光电探测器输出的模拟信号进行采样,并对采样信号进行处理,最终结果由LCD显示出来。
![](//html.hanspub.org/file/5-1270439x23_hanspub.png)
Figure 5. Overall block diagram of the system
图5. 系统组成框图
在本系统中,由于数字滤波器需要进行大量的浮点数运算,故核心MCU选用STM32F407,与STM32F103相比,F407系列芯片采用Cortext-M4内核,内部集成了FPU指令,运算速度远快于F103系列,同时集成了DSP库函数,在程序编写上可以节省大量时间。
3.2. 系统软件模块
系统的信号运算流程如图6所示。
在系统中,预设采样频率为22,400 Hz,但STM32F407的AD时钟频率远高于预设采样频率,为了使实际采样频率与预设采样频率尽可能的接近,我们令STM32在某时刻进行多次采样,取均值作为该点采样值,并在每次采样中加入延时函数以达到逼近预设采样频率的目的,400点A/D采样的函数为:
void GetSampleValue(void)
{
u16 i;
for(i=0;i
{
Sample[i]=Get_Adc_Average(ADC_Channel_4,4)*(3.3/4096);
delay_us(21);
}
}
在滤波方面,主控芯片STM32F407的库函数已经包含了大多数DSP功能,同时采用Cortext-M4内核,内部集成了FPU指令,对于浮点数运算速度极快,可以满足系统的需求,因此不需要外置其他滤波手段。系统中,IIR滤波器所用函数如下所示。
void filter(void)
{
arm_biquad_casd_df1_inst_f32 S1;
arm_biquad_cascade_df1_init_f32(&S1,NumStages,(float32_t*)&IIRCoeffs[0],(float32_t *)&IIRState[0]);
arm_biquad_cascade_df1_f32(&S1,Sample,Output,Samplelength);
}
在函数中,NumStages为2阶滤波器的个数,IIRCoeffs []数组存储滤波器滤波系数,即(9)式中的bi和ai,IIRState []为运算过程中的缓存数组,Output为存储滤波后输出信号的数组。
为了得到光照强度与LED-探测器距离的关系,我们可以采用两种方法。一是测量每个LED的半功率角,以式(1)进行计算;二是采集一些数据点进行曲线拟合。在实际应用中,由于单个LED灯珠的光照度并不能满足照明需求,因此每个LED均由多个灯珠组合而成,此时若空间距离不够,LED辐射模型将偏离朗伯模型,按(1)式进行定位会产生较大误差,因此综合考虑,我们选择采用曲线拟合的方式得到光照强度与LED-探测器距离的关系。
为了更准确的拟合定位曲线,我们将整个光照平面按待测点与LED投影点的距离进行区域划分,以频率为3000 Hz的LED为例,半径小于350 mm的近区和半径大于350 mm的远区定位曲线分别如图7、图8所示,图中x坐标代表电压幅值,y坐标代表距光源的距离(mm),每相隔50 mm采集一个数据点。在探测时首先判定待测点所属区域位于哪个区域,然后调用该区域的数据曲线进行定位,得到待测点的坐标。实验表明,通过这种方式进行定位,准确度能得到大幅提升。
![](//html.hanspub.org/file/5-1270439x25_hanspub.png)
Figure 7. Relationship between amplitude of 3kzh signal and distance from near area
图7. 3khz光源近区电压–距离曲线
![](//html.hanspub.org/file/5-1270439x26_hanspub.png)
Figure 8. Relationship between amplitude of 3kzh signal and distance from far area
图8. 3khz光源远区电压–距离曲线
得到待测点距3个LED光源的距离之后,调用(7)式、(8)式即可得到待测点的坐标值,最终将结果通过LCD返回。
4. 测试结果及分析
为了验证系统定位效果,我们在平面上选取一些点进行测试,测量结果如表1所示。
由测试结果可见,在600 mm*600 mm,最小刻度为1 cm (10 mm)的标定板上,大部分测试点的绝对误差在30 mm以内,测量结果较为准确,而有些探测点则误差较大,其主要原因包括:
1) 由于随着待测点与LED光源的距离逐渐增大,探测器接收到的光强减小幅度逐渐放缓,使得点与点之间接收到的光强度相差不大,最终导致了在RSS测距时引入了误差。
2) 实验所用的LED灯具较为简陋,并不严格符合朗伯光照模型,即便在以LED光源为圆心的统一圆半径上的点,探测到的光强也有些许误差,在光强变化放缓的远区将会导致定位产生偏差。
由于数据样本有限,拟合曲线只能尽可能符合所采集数据,但仍然会引入一定误差。提高数据样本个数可以有效降低此类误差,但相应的也会增加数据采集的难度。
5. 结语
随着固态照明技术的不断发展,VLC技术以其功耗低、成本低、易于铺设等特点逐渐成为了室内定位技术的热门选择,本文设计了一种基于STM32的VLC室内定位系统,采用内置软件运算的方式实现滤波、RSS测距及三角定位,最终实现室内定位的目的。系统整体硬件构成简单,成本低廉,精度也基本满足室内定位的需求,整个实验验证了室内可见光定位的可操作性,具有较好的工程应用价值。
基金项目
广西自然科学基金项目面上项目(项目编号:2018JJA110048);2017年度广西高等教育本科教学改革工程项目(项目编号:2017JGA133); 2017年广西大学实验室建设和实验教学改革项目(项目编号:201707)。
NOTES
*通讯作者。