基于ARM的停车场车辆管理系统

点赞:23228 浏览:106177 近期更新时间:2024-02-19 作者:网友分享原创网站原创

摘 要:为了实现基于ARM的停车场车辆管理系统,本文采用CortexM3内核的STM32微控制器,以此为核心部署了超声波模组作为车辆检测器,液晶屏作为信息显示器,步进电机作为道闸控制器,以及智能卡读写器.为了便于管理员使用,在PC上用VB编写了图形界面,配合Access数据库通过串口对系统进行管理.测试系统功能结果能够完成车辆在停车场的进出场流程,由此验证了该套低成本解决方案的可行性,实用性.

关 键 词:ARMCortexm3;RFID;停车场管理;VB

中图分类号:TN96434文献标识码:A文章编号:1004373X(2014)02010005

0引言

智能停车场管理系统是为了克服传统停车场收费管理系统人工收费方式的缺点,推动停车收费管理系统发展的高技术产物,此系统不仅可以有效地解决乱停乱放造成的交通混乱,而且可以促进交通设施的正规化建设,同时也尽可能地减少车主失车被盗的忧虑.另外,在技术方面,其高技术性匹配于现有其他智能化系统,具有很好的开放性,易于与其他智能化系统组合成更强大的综合系统,顺应各种综合方式的高级管理[1].

本文所讲述的一个智能停车场管理系统,采用的是CortexM3内核的STM32微控制器,以此为核心部署了超声波模组作为车辆检测器,液晶屏作为信息显示器,步进电机作为道闸控制器,以及智能卡读写器.为了便于管理员使用,在PC上用VB编写了图形界面,配合Access数据库通过串口对系统进行管理.

1系统组成

系统框图如图1所示,停车场车辆管理系统以微控制器为核心,由车辆检测器,非接触式IC卡读卡器,液晶显示屏,道闸,以及PC机组成.车辆检测器负责检测是否有出入车辆.微控制器通过非接触式IC卡读卡器向IC卡中写入或者从卡中读取数据.液晶屏显示停车信息给用户.道闸控制器控制车辆的出入.管理员通过PC机向管理系统发布命令同时接收系统反馈的信息.本系统以微控制器为核心对组成系统的一系列设备进行控制,同时负责与PC机进行通信反馈信息与接收命令.系统在空闲时不断检测是否有车辆准备进入或者离开停车场,一旦检测到车辆,立即进入IC卡读写准备流程,读取IC卡内信息,根据用户类型决定下一步动作.同时显示屏显示相关信息给用户,微控制器与PC机进行通信.上述动作全部完成后,微控制器向道闸控制模块发出命令,对符合入场条件或者符合离场条件的用户放行.

2硬件设计

系统总体框架如图2所示.在主板上有一颗STM32微控制器,在主板上引出了接口用来与设备进行连接,其中主板与PC机之间采用9针串口连接.MCU与智能卡读写板之间通过SPI接口进行通信.主板与其他设备之间采用GPIO进行连接.

道闸检测器采用超声波模组构成,道闸控制器采用步进电机.考虑到STM32的I/O口提供的电流较小,在主板与步进电机之间连接了步进电机驱动板来提供较大电流.智能卡读写板上集成了专用智能卡读写芯片与天线.超声波测距模组部分由发射端和接收端两部分组成.发射端由超声波谐振载波调理电路和超声波发射探头组成.接收端由超声波回波接收处理电路和超声波接收探头组成.320×240图形点阵液晶屏由UC8239s液晶控制芯片驱动,利用一个电压跟随电路产生驱动液晶的电压来实现节能操作.智能卡读写模块采用MFRC522智能卡读写芯片驱动读写器天线完成与Mifare1s50智能卡的通信.步进电机部分采用ULN2003驱动阵列进行驱动.串口部分通过STM32UART实现与PC机的通信.

3软件设计

3.1停车场管理系统工程结构

停车场管理系统的软件结构主要分为三层,如图3所示.最底层为STM32固件库,这一层由ST公司提供,为程序编写人员对STM32的内核与片内外设的控制提供了基本的接口.这一层对应图3(b)lib目录下的所有文件.向上一层为设备驱动程序,停车场管理系统需要一些必要的外设以完成其职能,这一层提供了对这些必要外设的驱动.这一层对应图3(b)中extern_lib目录下的文件.需要注意的是在这些文件中,RTC.c、systick.c不对应一个实在的外设,而是对应STM32的片内外设.

图3工程目录结构

最上层是主函数对应图3(b)中User目录下的main.c,在这一层中对停车场管理系统的逻辑功能进行了实现.

3.2程序模块介绍

3.2.1超声波驱动的实现

在本系统中,利用STM32内部的通用定时器TIM2进行定时,配合GPIO_PA1输出电压的翻转来产生40kHz方波.当超声波发送出去后利用TIM3进行计时,当接收到回波时Back_Pulse引脚产生一个高电平信号,利用这个信号作为触发信号通过GPIO_PA2触发外中断来停止TIM3,此时TIM3中的计数值可通过换算得到时间t.即可计算出距离d.需要注意的是,在超声波刚刚发出的时候,由于电路的电器特性导致模块的Back_Pulse引脚马上就会出现高电平,这种现象称之为回波干扰,显然如果由这个信号触发中断就会导致测距的错误.为了避免回波干扰,需要在超声波发出后延时一小段时间再打开中断来接收真正的反射波.如果认为空气中声波的速度为340m/s,经过估计需要延时十个微秒即可,随着测量距离的增大可以适当增加这个延时的时间以保证消除回波干扰.

相关函数如下:

UltraSonic_40KGeneration_Configuration(void)

这个函数对TIM2,GPIO_PA1,以及定时器中断函数进行了初始化.TIM2_IRQHandler(void)

在这个函数中实现了电平的翻转.

UltraSonic_BackPulseResponseConfiguration(void)

这个函数初始化了TIM3,外中断.

EXTI2_IRQHandler(void)

这个函数是由GPIO_PA2触发的外中断怎么写作函数.

u32Ultra_SonicMeasureDistance(void)

这个函数返回了距离d.

3.2.2液晶屏显示的实现

在工程中通过lcd.c提供了驱动液晶屏的基本函数.在本系统中为了在液晶屏上显示信息,需要直接使用的函数如下:

voidSTM3210B_LCD_Init(void)LCD初始化

voidLCD_Clear(u16Color)清屏

voidLCD_SetBackColor(vu16Color)设定背景颜色

voidLCD_SetTextColor(vu16Color)设定文字颜色

voidLCD_DisplayStringLine(u8Line,u8*ptr)

在指定行显示字符串

voidLCD_DisplayChar(u8Line,u16Column,u8Ascii)

在指定位置显示一个字符

3.2.3RC522读写mifare1

由于不能直接对mifare1卡进行操作,所有对mifare1卡的操作是通过RC522进行的.RC522对外提供了三种接口,分别是SPI,I2C,UART.本系统采用软件模拟SPI的方式对RC522进行操作,如图4所示.

在SPI通信中MFRC522模块用作从机.SPI时钟SCK由主机产生.数据通过MOSI线从主机传输到从机;数据通过MISO线从MFRC522发回到主机.MOSI和MISO传输每个字节时都是高位在前.MOSI上的数据在时钟的上升沿保持不变,在时钟的下降沿改变.MISO也与之类似,在时钟的下降沿,MISO上的数据由MFRC522来提供,在时钟的上升沿数据保持不变.

RC522驱动介绍如下:

VoidSPIWriteByte(u8SPIData)向RC522写数据

U8SPIReadByte(void)从RC522读数据

VoidWriteRawRC(u8Address,u8value)

向RC522指定寄存器写入数据

U8ReadRawRC(u8Address)从RC522指定寄存器读出数据

CharPcdComMF522(unsignedcharCommand,

Unsignedchar*pInData,

UnsignedcharInLenByte,

Unsignedchar*pOutData,

Unsignedint*pOutLenBit)

向Mifare1卡传送命令与数据

CharPcdReset(void)复位RC522

CharM500PcdConfigISOType(unsignedchartype)

配置通信标准

CharPcdRequest(unsignedcharreq_code,unsignedchar*pTagType)请求Mifare卡响应

CharPcdAnticoll(unsignedchar*pSnr)反冲撞函数

CharPcdSelect(unsignedchar*pSnr)选择卡片

CharPcdAuthState(unsignedcharauth_mode,unsignedcharaddr,unsignedchar*pKey,unsignedchar*pSnr)

对将要操作的数据块的进行认证

CharPcdRead(unsignedcharaddr,unsignedchar*pData)

从数据块读出数据

CharPcdWrite(unsignedcharaddr,unsignedchar*pData)


向数据块写入数据

CharPcdHalt(void)令Mifare1卡进入休眠状态

3.2.4步进电机驱动

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角.对于步进电机只有周期性的误差而无累积误差等特点.步进电机必须加驱动才可以运转,驱动信号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,就会以一定的角度(称为步角)转动.转动的速度和脉冲的频率成正比.

3.2.5串口通信

串口通信的实现分为两部分,一部分是STM32的串口发送与接收,另一部分是PC的串口的发送与接收.对于PC机上发送与接收将在后面介绍,这里着重介绍STM32串口的发送与接收.

STM32传送数据时采用查询的方式,在接收PC传来的数据时采用中断的方式,这是因为PC是不定时发送数据的,如果采用查询的方式接收数据,STM32将无法执行其他任务.采用中断就可以释放STM32的CPU资源,PC发送出的数据会触发串口接收中断,在中断怎么写作函数中进行数据的接收.3.2.6软件界面

在停车场管理系统中为了便于停车场管理员更好的工作,需要有一个面向管理员的终端,这个终端为管理员提供必要的信息,同时管理员可以通过这个终端对整个系统进行控制.所以在本文中采用VB6.0设计了一个简单的界面,如图5所示.

基于ARM的停车场车辆管理系统参考属性评定
有关论文范文主题研究: 关于停车场管理系统的论文范文数据库 大学生适用: 高校大学论文、函授论文
相关参考文献下载数量: 29 写作解决问题: 如何写
毕业论文开题报告: 标准论文格式、论文选题 职称论文适用: 论文发表、高级职称
所属大学生专业类别: 如何写 论文题目推荐度: 优秀选题

在客户端的右侧可以设定STM32RTC的当前时间,在左侧可以设定新的停车费率,同时会显示当前停车场的剩余车位.

3.2.7串口处理

在PC端,软件设计的核心思想是:通过VB提供的交互控件让停车场管理员可以方便地查看需要的信息和向系统发布命令.程序通过VB提供的MSComm控件控制PC上的串口与STM32之间进行通信.MSComm控件提供两种处理通信的方式:一是事件驱动方式,一是查询方式.

(1)事件驱动方式.事件驱动通信是处理串行端口交互作用的一种非常有效的方法.在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CarrierDetect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时.在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件.OnComm事件还可以检查和处理通信错误.所有通信事件和通信错误的列表,参阅CommEvent属性.在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码.这种方法的优点是程序响应及时,可靠性高.每个MSComm控件对应着一个串行端口.如果应用程序需要访问多个串行端口,必须使用多个MSComm控件.

(2)查询方式.查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷.在程序的每个关键功能之后,可以通过检查CommEvent属性的值来检测事件和通信错误.如果应用程序较小,并且是自保持的,这种方法可能是更可取的.例如,如果写一个简单的拨号程序,则没有必要对每接收一个字符都产生事件,因为惟一等待接收的字符是调制解调器的“确定”响应.

事件驱动方式是处理串行通信的一种有效的方法,它可以利用OnComm事件捕获并处理通信中发生的事件或错误,实时性较强.而查询方式是在程序通过查询CommEvent属性值来判断通信过程中的事件或错误,这种方式适合于应用程序较小、实时性要求不高的系统中.

MSComm控件进行串行通信的一般步骤为:

(1)设置通信对象、通信端口号及其他属性;

(2)设定通信协议;

(3)打开通信端口,进行数据的传送;

(4)关闭通信端口.

当设定好MSComm控件的各个属性后就可以让串口正常工作了,但是仅仅能工作是不够的,能工作意味着可以实现在PC机与STM32之间传递数据,但是PC与STM32通信的目的在于根据传送的信息进行不同的操作.所以这就需要人为的对通信的内容赋予一定的意义,在本系统的设定中PC与STM32之间每次传递定长的16字节数据,第一个字节的内容代表命令,后面的字节是命令所要处理的数据.PC与STM32通过串口收到16个字节的数据后会检查第一个字节的命令,根据命令进行不同的操作.

STM32要执行的命令:

c改变费率

t设定STM32当前时间

y允许长期用户进入

n拒绝长期用户进入

PC端要执行的命令:

r更新剩余车位

a对长期用户的卡片有效期进行认证

e在PC上保存入场时间

d在PC上保存离场时间

f在PC上保存缴费金额

3.2.8数据库处理

为了验证长期用户智能卡的有效性,需要根据卡片内用户编号在数据库中查询其有效日期,并与当前日期相比较.本系统使用Access软件进行数据管理,通过VisualBasic提供的ADO控件对Access中的内容进行调用.

4系统性能测试

连接好线路后将STM32上电,打开车场管理终端.vbp点击工程引用勾选MicrosoftActivexDataObjects2.5Library.添加好Access数据库路径后点击测试连接进行测试.本系统可以进行费率设定、系统时间设定,有进场流程和出场流程,将卡放在读卡器上可以显示缴费金额.图6是缴费金额画面.

图6缴费金额显示

5结论

本文从硬件与软件的角度阐述了基于ARM的停车场管理系统的设计与实现,以ARM微控制器为核心配以适当的设备构建起来的停车场管理系统,大大减少了停车场管理员的劳动强度,提高了通行的效率.停车场作为未来智能交通系统中的重要一环,对其进行电子化改造以适应未来基于物联网的智能交通系统是非常必要的.本文从系统功能的角度出发,制定了工作的目标,然后紧紧围绕着目标进行系统设计,在设计的过程中由于功能复杂性的考虑放弃了应用范围最广,低廉的51单片机,选择了目前非常流行的ARM核心的微控制器STM32.事实证明这样的选择是非常正确的,丰富的外设使得功能的实现与硬件资源之间的矛盾得到了有效的解决,同时ST公司针对STM32推出的固件库大大缩短了开发的周期,又由于程序员不用自己直接对寄存器进行修改,而通过相应的函数进行操作,确保了程序的稳定性,也极大地增加了程序的可读性.