首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

强大的防盗定位追踪系统方案,硬件原理、结构框图、软件流程、源码打包奉送(2)

强大的防盗定位追踪系统方案,硬件原理、结构框图、软件流程、源码打包奉送(2)

3 实现原理
3.1 系统原理
当按下寻找指引终端上的按键时,寻找指引终端通过GSM模块向防盗目标终端发出请求信息,防盗目标终端接收到该信息后,通过GPS信号接收器接收卫星信号,FPGA通过DTE接口接受该信息并在gps模块中提取出经纬度信息,该信息在加密模块中进行加密然后又通过开发板上的DCE接口传送给GSM模块,GSM模块将该息发送给寻找指引终端,寻找指引终端通过GSM模块接收该信息,并在解密模块中对信息进行解密,同时用与防盗目标终端相同方式确定自身位置,防盗目标终端传来的位置信息和寻找指引终端自身接受的位置信息一并传入相对位置计算模块。在相对位置计算中寻找指引终端计算出两终端的相对位置以及防盗目标终端相对于寻找指引终端的方位。


系统原理示意图

3.2各模块实现原理
3.2.1 UART模块实现原理:

FPGA使用LVTTL或LVCMOS电平提供串行数据给Maxim 器件——用来电平转换的,以满足RS-232电压的电平。反之,Maxim 器件转换相应的LVTTL电平以满足RS-232串行输入数据给FGPA。在Maxim与FPGA的RXD管脚之间串联一个电阻,以保护外部逻辑干扰。

连接器不支持硬件流控制。DCD、DTR和DSR信号连接一起,同样,端口的RTS和CTS信号连接在一起。


本系统的UART模块是在EDK 10.1环境中开发完成,利用了开发环境所提供的uartns550_v1_00_b驱动程序,该驱动提供了发送函数void XuartNs550 SendByte (Xuint32 BaseAddress, Xuint8 Data)和接收函数unsigned int XuartNs550 RecvByte(Xuint32 BaseAddress)。从而使程序可以通过Uart每次发送接收一个字节的数据。

3.2.2 GPS模块原理

GPS 定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。GPS 接口:在UP-NETARM2410-S 平台上所选配的GPS 模块是GPS15L/H。


接口特性如下:RS-232 输出,可输入RS232 或者具有RS-232 极性的TTL 电平。可选的波


串口输出协议:输出NEMA0183 格式的ASCII 码语句,输出:GPALM,GPGGA,GPGLL,GPGSA,GPGSV,GPRMC,GPVTG(NMEA 标准语句);PGRMB,PGRME,PGRMF,PGRMM,PGRMT,PGRM(GARMIN 定义的语句)。


还可将串口设置为输出包括GPS 载波相位数据的二进制数据。输入:初始位置、时间、秒脉冲状态、差分模式、NMEA 输出间隔等设置信息。


在缺省的状态下,GPS 模块输出数据的波特率为4800,输出信息包括:GPRMC、GPGGA、GPGSA、GPGSV、PGRME 等,每秒钟定时输出;


3.2.3 经纬度提取模块原理

如果设备和卫星的通讯正常的话,可以接收到的数据格式样如下:
$GPRMC,204700,A,3403.868,N,11709.432,W,001.9,336.9,170698,013.6,E*6E


数据说明如下:
$GPRMC 代表GPS推荐的最短数据
204700 UTC_TIME 24小时制的标准时间,按照小时/分钟/秒的格式
A表示数据"OK",V表示一个警告
3403.868 LAT 纬度值,精确到小数点前4位,后3位 N LAT_DIR N表示北纬,S表示南纬
11709.432 LON 经度值,精确到小数点前5位,后3位 W LON_DIR W表示西经,E表示东经


如果当前没有和卫星取得联系,那么字符串的格式为: $GPRMC,UTC_TIME,V,...

下面是一个例子:  $GPRMC,204149,V,,,,,,,170698,,*3A


在接收进程receive 中收到“\n”之后,表示收到一条完整的信息。系统在void gps_parse (GPS_INFO *GPS) 方法中进行数据的解析,在此方法中程序首先检查接收到的信号是GPRMC信号还是GPGGA信号,然后依次提取小时,分,秒,日, 月,年的值,接着根据“,”提取gps信号接收器的状态(A/V),以及经度,纬度。gps信号中的经度纬度是字符串类型,需要转化为double类型。


3.2.4 GSM模块实现原理
GSM(Global System of Mobile communication)是一种无线数字蜂窝通信系统网络规范。它定义了建设该网络及提供服务的各种标准。SMS(Short Message Service,短信息服务)属于GSM第一阶段的标准。短信息业务按其实现的方式可分为点到点短信息业务和小区广播短信息业务。本系统利用了点到点短信息业务来实现两终端间的通信。其实现的硬件基础主要是两个GSM集成电路板模块及两篇SIM卡。两个GSM模块分别通过Spartan-3E板上的RS-232串口(在本作品中使用DCE RS-232串口)与FPGA进行通信。

实现的软件基础可分为GSM控制程序与AT命令集。下面分别对这两部分进行阐述。

GSM控制程序最基本的实现原理是通过XUartNs550_RecvByte与XUartNs550_SendByte函数对串口进行操作。两个函数的API分别为 Xuint8 XUartNs550_RecvByte ( Xuint32 BaseAddress ), void XUartNs550_SendByte uint32 BaseAddress,Xuint8 Data)。其中BaseAddress为串口的基地址,编写程序时可使用RS-232 DCE的基地址(在xparameter.h中定义),这样XUartNs550_RecvByte会返回从DCE收到的数据,而XUartNs550_SendByte就会向DCE串口发送Data中的数据。并且这两个函数对数据的接受与发送都是阻塞的,即XUartNs550_RecvByte执行后会阻塞直到数据被接收到,XUartNs550_SendByte执行后会阻塞直到数据被发送到串口的数据寄存器中。因此该阻塞机制确保了发送与接受的数据不会丢失。综上所述,通过使用这两个基本的串口通信函数,实现了FPGA对GSM模块的控制,从而实现了对短信息的接收与发送,进而实现了防盗目标终端和寻找指引终端之间的通信。


AT命令是被广泛采用的调制解调器命令语言,它实现了计算机或终端与调制解调器的通讯,提供了计算机或终端对调制解调器的控制接口。在GSM模块的应用中,AT命令实现了对GSM大多数的操作控制,例如atd命令用以实现呼叫命令,at+cmgs命令用于短信的发送,at+cmgr命令可以实现短信息的读取等。当FPGA需要对GSM进行控制时,只需向DCE串口发送相应的命令。因此短信息发送函数的实现为通过XUartNs550_SendByte函数向GSM发送”at+cmgs=SIM号码”+信息内容。以此类推,可以实现短信息接收函数和短信息分析函数等基本函数及程序模块。


3.2.5加密解密模块实现原理

本系统采用DES加密算法,DES(Data Encryption Standard)满足了国家标准局欲达到的4个目的:提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,首先,DES把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换(输入的第58位换到第一位,第50位换到第2位,依此类推,最后一位是原来的第7位),最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算


每个8位数据的传输必须被分解为两次4位传输,间隔至少1us。先传高4位,再传低4位。每两个字节之间至少要间隔40us。


本系统使用的LCDIP核分为两部分——硬件部分和软件部分。硬件部分用VHDL实现LCD时序,管脚连接,时序仿真 软件部分用C语言进行验证,向寄存器中送入数据。完成LCD显示功能。硬件与软件是通过VHDL程序中寄存器的基地址来联系起来的。在本设计中,选择了两个32位寄存器,即slv_reg0和slv_reg1。寄存器的基地址是在制作LCD IP核的过程中定义的。所编写C语言程序需要包括对LCD的初始化命令,字符或字符串的显示命令和延时程序,并且可以设置所要显示的字符的首地址。初始化命令具体如下:

(1)功能设置命令,写入0x28。配制对显示屏的操作。
(2)输入方式命令,写入0x06。设置地址指针自动加1。
(3)显示开关控制命令,写入0x0C。打开显示屏。
(4)初始地址命令。
(5)清屏命令。

时钟频率设为1us。
在user logic中定义了四个输出端口,LCD_E,LCD_RS,LCD_RW,lcddata_out[7:4]

选择两个32位的寄存器,slv_reg0和slv_reg1。Slv_reg0作为字节的传输,不论是指令字节还是数据字节都送入slv_reg0。而slv_reg1中选择后三位作为发送数据标志位和指令或是数据的选择位。具体如下:

定义slv_reg1的第29位即slv_reg(29)为发送数据标志位,即当slv_reg(29)为1时,表示数据已准备好,可以传输。slv_reg1的第30,31位为判别输入的是数据还是指令的标志位。当slv_reg(30 to 31)为01时,表示写入的数据为指令数据,当slv_reg(30 to 31)为10时,表示写入的数据为要显示的数据。

当向slv_reg1写入控制数据后,slv_reg0中的32位数据中的低8位就将按照所编写的LCD时序进行操作。送入LCD进行显示
返回列表