基于nRF24LE1的校园警情定位系统设计
报,同时触发LED指示,表示警报信息已经被成功捕获,否则重新发送。这样设置是为了加强系统的可靠性,万一分站的蜂鸣器坏了,求助者无法通过蜂鸣器呜叫来确认求助信息是否被成功捕获。
3.2 分站软件
与无线遥控器供电方式不同,分站采用连续的供电方式,其工作流程图如图4所示。分站不断循环检测是否有警报信息需要处理。若有警报信息需要处理,首先发出应答包,接着往预定的目标地址发送警报数据包。该目标地址可以是其他分站,也可以是中心站,是根据实际需要设定的。
![](../img/eep/emb/emb-44511m2olgislzxb.jpg)
3.3 中心站软件
中心站和分站的软件实现在整体上有相似之处,稍微区别是当分站确认接收到警报数据包后,便向预定的目标地址(其他分站或者中心站)发送该警报包,而中心站接收到警报数据包后,通过EM310往预定的目标IP地址发送,其流程图如图5所示。
3.4 网站设计实现
本校园警情快速定位网站的地图应用设计采用百度地图的JavaScript API。其是一套由JavaScript语言编写的应用程序接口,可帮助在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发。
用户通过浏览器访问该网站,即向该网站发出了服务请求,该网站便向数据库提取警情数据,同时向百度请求地图服务,最后把两者数据融合,返回给用户,刷新浏览界面,用户看到就是在百度地图中对应的位置上标记的警情信息和固定警力信息。
4 关键技术讨论
4.1 数据包定义
本系统通信的数据包类型有应答包和警报包。警报包又分为遥控器直接发出的警报包(称为遥控器警报包)和分站转发的警报包(称为分站警报包),数据包类型标识定义如表1所列。
![](../img/eep/emb/emb-44512zj3vx3tc14g.jpg)
为了形式上的统一,把各种数据包都规定为30个字节长度,数据包中各个字节的定义如表2所示。
![](../img/eep/emb/emb-44513xs4r0yrzwds.jpg)
某遥控器待发送的警报包数据存放在如下的数组中:
![](../img/eep/emb/emb-44514yfacayez2ka.jpg)
4.2 nRF24LE1数据包发送和接收
在nRF24LE1中,集成了一个功能齐全的2.4GHz收发器核nRF24L01+和一个加强型8051微控制器核。该微控制核和收发器核nRF24L01+是通过其专用的SPI接口进行通信,因此数据包收发是通过SPI读写操作来完成的。
TxMode函数的参数分别描述如下:TxAddress:存放目标地址数据的数组;TxAdrWidth:目标地址长度;TxData:存放待发送数据的数组;TxDataLength:待发送的数据长度。
无线遥控器发送的警报是一个广播性质的数据,所有分站都有同等的机会接收该警报数据,因此在本系统中所有分站必须开启一个能接收广播类型数据的通道,也就是所有分站都具有同样的接收广播的地址。
nRF24LE1有6个接收数据的通道地址,能满足这样的要求,本系统仅仅用了2个接收数据的通道地址,一个是该分站专用的接收地址(即分站ID),另一个是该分站跟其他分站相同的接收地址,配置操作略——编者注。
无线遥控器发送数据是广播型,因此发送就是向共有的接收地址发送。另外还需要开通一个接收应答数据包的通道,因为应答包是有固定的指向,因此无线遥控器只需要开通一个专用的接收数据通道(即遥控器ID),其相关配置略——编者注。
为了增加系统的可靠性和可控性,这里只是允许接收中断,而且接收中断在某种情况下,还根据需要进行关闭,然后再次开启等。
4.3 随机调整发包时间间隔参数策略
时间间隔调整是靠Delay函数里面的Temp参数的调整来确定的。Delay(Temp)延时时间大约为Temp值的1/10 s。延时参数Temp值等于基数10加上一个小于10的随机数,具体实现如下:
![](../img/eep/emb/emb-44515g1vehf5njp1.jpg)
Delay(Temp)实现的延时是以1 s为基础加上一个小于1的随机小数,总共有4个1 s左右的延时叠加,因此该延时是以4 s为基数进行调整的,该参数的配置是根据实验测试并统计B从接收警报包,到转发警报包,再到接收应答包的时间,再适当加上一定余量,权衡得出来的。
每一个设备都把自己认为重要的事情做好,并且又能够互相配合,使得整个系统可靠性和实时性达到一个相对完美的配合。
4.4 远程应用服务器操作策略
网络组网方案是数据中心服务器端采用公网固定IP地址,EM310直接通过IP地址访问Internet。其中,最关键两个动作就是EM310连接远程应用服务器操作和EM310往远程应用服务器发送数据包。
本文从实时性角度出发,采用最简的操作步骤,如表3所示。
![](../img/eep/emb/emb-445161dur1fkmwcd.jpg)
4个步骤之间紧密相连,缺一不可。每个AT指令发送出去后,会返回一个字符串,只有确认返同字符串中有“OK”字符,才能认为该AT指令操作成功,才可以进入下一个步骤的操作,否则重新发送该AT指令。这种方法可以获得最高的可靠性,同时也会带来一定风险,程序会一直在循环等待
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)