DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2777|回复: 1
打印 上一主题 下一主题

[待整理] 基于ARM的智能车载终端设备系统的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2015-5-2 11:11:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  摘要: 设计了一种新型智能车载终端设备系统,以ARM微处理器LPC2103为硬件核心,在嵌入式μC/OSII操作系统平台上,运用IC刷卡、GPS、GPRS等技术,实现了公交车刷卡消费、语音提示、LCD液晶显示、实时定位和远程监控、调度等功能。本文主要对智能车载终端系统的总体方案、硬件设计和软件设计进行了详细的介绍。
  关键词: ARM;LPC2103;μC/OS-II;GPS;GPRS
  引言
  公共交通是城市交通的一个重要组成部分,公交运行管理的智能化、人性化是提高公共交通服务水平的基础,也是提高运营效率、改善公交运营调度机制与企业管理的必要手段。智能车载终端设备系统将先进的信息技术、数据通信技术、卫星定位技术及计算机技术等有效地集成运用于一体,建立一个实时、准确、高效的综合交通管理系统。
1 系统的整体构建
  智能车载管理系统由智能车载终端设备、GPRS无线通信链路以及主站监控中心3个部分组成。总体结构框图如图1所示。



图1 智能车载管理系统结构框图
  智能车载终端设备主要包括ARM微处理器、IC卡读写模块、语音提示模块、GPS定位模块、GPRS无线数据传输模块、LCD液晶显示模块和电源模块。本文将重点介绍智能车载终端设备的设计和实现,该终端主要实现以下功能:
① 公交刷卡消费:乘客持公交IC卡刷卡消费时由IC卡读写模块从卡内扣除相应的消费额,并把余额写回卡中。如刷卡成功,则蜂鸣器发出“嘀”的提示音;如刷卡出现异常,则语音模块发出“请重刷”或“请充值”等提示音。最后,把乘客每次的消费额和卡内的余额通过LCD液晶显示模块显示。
② GPS实时定位功能:通过不断地接收卫星传来的导航电文,车载终端通过GPRS无线数据传输模块定时向主站监控中心发送车辆当前经纬度、速度等信息,并在车载终端的LCD液晶显示模块上显示,主站监控中心接收该信息,并将车辆位置实时地显示在电子地图上。
③ 调度功能:车载终端通过GPRS无线数据传输模块接收主站监控中心发来的控制命令和调度信息,实现公交管理系统的实时调度功能。
2 车载终端的硬件设计
2.1 ARM微处理器
  在综合考虑系统性能和产品成本等因素的基础上,本系统选用LPC2103作为中央处理器。LPC2103是基于支持实时仿真的32位ARM7TDMIS核的微处理器,带有32 KB嵌入的高速Flash存储器。具有超小LQFP48封装和很低的功耗,内置宽范围的串行通信接口(包括多个UART接口、SPI和SSP接口、2条I2C总线接口),8 KB的片内SRAM,多个32位定时器,1个改良的10位ADC和多达13个边沿或电平触发的外部中断引脚的32条高速GPIO线,这些特性使其特别适用于工业控制和医疗系统等领域[1]。



图2 IC卡读写模块控制原理图
2.2 IC卡读写模块
  IC卡读写模块采用周立功公司生产的ZLG500A读写卡模块和ZY1730语音模块。IC卡读写模块控制原理图如图2所示。ZLG500A读写卡模块采用Philips公司高集成ISO 14443A读卡芯片MF RC500,与ARM微处理器之间采用三线SPI接口,分别为SCLK、SDATA、SS。ZLG500A读写卡模块通过天线与IC卡之间进行无线数据和能量的传输,最高速率可达106 Kbps,具有真正的反冲突功能,与IC卡通信时需要经过3轮确认,保密级别很高。
2.3 GPS定位模块
  本系统中GPS定位模块采用的是Gstar GS92,GPS定位模块硬件设计原理图如图3所示。该模块支持NMEA 0183 V3.01标准输出,工作电压为3.3~5.5 V,TTL电平接口,波特率可设置[2]。在本系统中,GS92模块的引脚4(RXDA)和引脚5(TXDA)分别与LPC2103的TXD0和RXD0相连,引脚8接LED指示灯,引脚21接3 V的备用电池。工作时,GPS模块与主控制器LPC2103进行通信,通过设置模块定时输出GPS定位数据,由主控制器对GPS数据进行处理,提取出经纬度、时间等有用信息作为GIS监控的基本数据。



图3 GPS定位模块硬件设计原理图
2.4 GPRS无线数据传输模块
  GPRS无线数据传输模块采用Simcom公司的GSM/GPRS双频模块SIM300C,该模块主要为语音传输、短消息和数据业务提供无线接口。SIM300C具有独立的语音接口,配合车载终端上的LCD显示屏和操作键盘,可以方便地拨打电话。SIM300C模块与主控制器LPC2103通过UART1接口进行通信,传输速率设置为115 200 bps。模块与控制器间的通信协议是AT命令集,除了串口发送(TXD)、串口接收(RXD)之外还需要一些硬件握手信号,其中DCD信号用来检测GPRS无线数据传输模块是处于数据传送状态还是处于AT命令传送状态,DTR信号用来通知GPRS无线数据传输模块传送工作是否已经结束[3]。GPRS无线数据传输模块硬件设计原理图如图4所示。



图4 GPRS硬件设计原理图
3 车载终端的软件设计
  本系统选用源代码开放的实时操作系统μC/OSII,下面从μC/OSII操作系统的移植和用户应用程序的编写两方面介绍系统软件的设计。
3.1 μC/OSII操作系统的移植
  μC/OSII的移植实际上就是对与MCU相关的代码进行重写或修改,移植的主要工作是对与处理器有关的3个文件OS_CPU.H、OSCPU.C和OS_CPU_A.S的编写。
  OS_CPU.H:主要包括了数据类型、堆栈入口宽度、堆栈增长方向、开关中断的宏和进行任务切换的宏定义,宏可由typedef或#define来定义。
  OS_CPU.C:该文件中用C语言编写了6个与操作系统相关的函数:OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、OSTimeTickHook()。其中,OSTaskStkInit()为堆栈初始化函数,必须根据具体的堆栈结构进行编写;OSTaskCreate()和OSTaskCreateExt()通过调用该函数,初始化任务的堆栈结构;后5个函数为钩子函数,必须声明,在移植初期可以为空函数。
  OS_CPU_A.S:该文件中需要对处理器的寄存器进行操作,需要修改3个与处理器相关的函数:最高优先级任务调用函数OSStartHighRdy()、任务切换函数OSCtxSw()、中断任务切换函数OSIntCtxSw()[4]。
3.2 用户应用程序的设计
  本系统采用多任务、多进程模式,将各功能应用程序设计为不同的功能模块,加载为多个不同优先级的并发进程。各功能模块优先次序如下:IC刷卡应用程序设为第1优先级,GPS定位信息采集和处理程序设为第2优先级,GPRS无线数据传输设为第3优先级,LCD显示程序设置为第4优先级。
3.2.1 刷卡模块程序设计
  ZLG500A读写卡模块与IC卡之间的通信流程如图5所示。



图5 ZLG500A对IC操作的基本流程图
  首先,模块上电复位后,请求标准/所有的卡。如果在天线有效范围内有一张以上的卡存在,调用反冲突函数uchar miffs_anticoll(uchar _Bcnt,uchar idata *_SNR),并取得所选择的卡的唯一序列号。选中卡之后,根据所要访问的卡内存储器位置,使用相应的密钥进行3轮确认。在成功确认后,可以对卡内存储器进行读、写、增值、减值等一系列操作。以上这些步骤可以直接调用周立功公司提供的读写卡模块C51函数库[5]实现。
  在主程序中,设置定时器0作为SPI串行接口的看门狗定时器,该定时器被设置成50 ms溢出。数据发送时开定时器中断,若中断之前通信未能完成(ZLG500A在SDATA线上未返回响应信号),而造成该定时器产生中断,则取消本次传输,发送子程序返回SPI_ERR;数据接收时关中断,用软件判断溢出次数,若在500 ms内未收到ZLG500A返回的数据,则退出本次命令的执行,命令返回SPI_ERR。
3.2.2 GPS数据解析及处理
  车载终端工作时,GPS模块会源源不断地把接收到的GPS导航定位信息通过串行口输出给ARM微处理器,这些数据信息主要由帧头、帧尾和帧内数据组成。系统所需的GPS数据,如经纬度、时间日期、速度等信息,均包含在“$GPRMC”帧内。“$GPRMC”的帧格式如下:
  $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
  数据接收时,首先通过依次检测“$GPRMC”的ASCII码是否正确。若检测无误,则确认该帧为有效帧,再接收帧内数据并进行解析。然后按照表1的协议封装成UDP数据包,通过GPRS传输到主控中心,主控中心通过软件将车辆的位置实时显示在电子地图上。GPS数据传输协议如表1所列。
表1 GPS数据传输协议



3.2.3 GPRS数据传输
  由于本系统所用的GPRS模块SIM300C内部嵌入了TCP/IP协议栈,因此只要发送相关AT指令,嵌入式TCP/IP协议就可完成SIM300C接入Internet的工作,实现无线数据传输的功能。
  利用AT指令控制SIM300C模块建立无线信道,并进行数据传输的步骤如下:
① AT+CIPCSGP=1,"CMNET"设置GPRS连接方式。
② AT+CLPORT="TCP","3030"设置TCP端口号。
③ AT+CIPSTART="TCP","主站IP地址","端口号"建立TCP连接,主站的IP地址必须为公网的IP地址,连接成功后返回“CONNECT OK”。
④ AT+CIPSEND等待模块返回“>”后,将要发送的数据送入GPRS模块中,然后再发送回车,数据即可发送出去。
  若建立连接后长时间没有数据传输,移动网关将会自动关闭连接,重新分配IP地址。所以,为了保证网络的正常连接,采用每2 min发送一个心跳包的方式。
结语
  本文提出了一种基于ARM微处理器和μC/OSII操作系统的智能车载终端设计方案,利用GPS、GPRS和IC卡读写等技术,实现公交刷卡消费和实时定位监控等功能的一体化,将城市中所有的公交车连成一个网络系统,形成一个城市交通物联网的雏形。实验证明,该智能车载终端具有模块化、功耗低、性能稳定、可扩展等特点。
参考文献
[1] 周立功公司.LPC2101/02/03 User Manual[EB/OL]. [201204]. http://www.zlgmcu.com.
[2] Gstar Corp.GS92mj GPS RECEIVER MICROCOMPONENT DATA SHEET[EB/OL].[201204]. http://www.gzxintu.com/sitecn/zlxz/list.html.
[3] SIM Technology. SIM300 HARDWARE SPECIFICATION[EB/OL].[201204].http://www.sim.com.
[4] 周立功公司. ARM嵌入式系统基础教程[M]. 2版. 北京:北京航空航天大学出版社,2005.
[5] 周立功公司. ZLG500A读卡模块使用指南[EB/OL].[201204]. http://www.zlgmcu.com.
魏芬(工程硕士),主要从事嵌入式系统设计和教学;王海彬(研究生),主要从事嵌入式系统设计。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 17:36 , 耗时 0.093428 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表