智能停车与智能车锁的开发与实现

2018-02-23 19:35纪鑫乐刘尧猛吴红霞白馥齐
中国新技术新产品 2018年4期

纪鑫乐+刘尧猛+吴红霞+白馥齐

摘 要:为了更简便地使用停车位,满足车主的需求,基于 GPRS/GPS 技术开发了智能体车锁设备。硬件采用主控CPU为STM32F103C8T6,用于控制通过GPRS模块返回的GPS信息以及实现与串口数据的交互。在智能锁的设计上,通过 GPIO 接口,来控制两路继电器模块,实现智能车锁电机的正反转,从而实现车位锁的升起和落下。GPRS模块采用QUECTEL系列MC20CA-04-STD芯片,实现GPS信息的获取与传输功能。

关键词:GPRS/GPS;智能;车位锁;STM32

中图分类号:U491 文献标志码:A

0 引言

随着人们生活水平的提高,私家车已经逐渐普及到各家各户,停车位的需求也日益增加,而车主对哪个地方可以停车,哪个地方的车位已满完全不了解,造成了剩余停车位的浪费。基于这种现象,设计了智能体车锁,用于简化车主找车位的过程。智能体车锁可以通过手机APP将锁的位置和车位是否被使用告知车主,还可以通过手机APP控制车锁的开启与关闭,实现了车到锁开,车走锁关的功能。

1 主控制板的选用

该主板将GPRS模块与主控制模块结合在一起,内置串口2(UART2)实现了GPRS模块与主控CPU的数据交互,串口1(UART1)用于接到个人PC端,用于接收和发送数据。

主控CPU为STM32F103C8T6 单片机一颗。单片机实现了整个系统核心的枢纽, 实现对整个系统的把控,并完成对应的代码实现。引出来了多余的 GPIO 口,主要是方便用户进行二次开发。

MC20 模块一颗。MC20 支持 GSM/GPS/BD 功能,在设计当中充分考虑资源最大化,引出 GPS/BD 天线引脚和 GSM 天线引脚。用户可以实现利用 MC20 一颗芯片实现 GPRS 网络对 GPS/BD 数据的远程传输。MC20 支持北斗与 GPS 双模功能,模块也是默认采用 GPS 和 北斗都是支持的格式进行的设计。MC20 提供了一颗 LED 网络指示灯。主板返回GPS信息的实现。单片机在右下方引出了两个对应的 LED 灯,这两个灯主要是方便用 户进行 TCP 远程开关灯控制或者是短信控制 LED 灯功能,如图1所示。

2 主要功能的实现

完整的主控面板由一个3.7V、3000mAh的电源,一个J-LINK适配器,一个TTL转USB接口,两个用于实现电机的正反转的GPIO接口组成,如图2所示。

2.1 GPRS模块的实现

2.1.1 GPRS相关配置的实现

通过GPS/BD 天线引脚和 GSM 天线引脚,可以利用 MC20芯片实现GPRS 网络对 GPS/BD 数据的获取与传输。GPRS模块需要用AT指令对其进行配置。

1. AT+QGNSSC=1 对GPS模块上电

2. AT+QGNSSC? 检查上电情况

3. ATE0 關闭回显

4. AT+CSQ 检查CSQ(模块当前信号质量),可以利用手机APP查看

5. AT+CPIN? 检查SIM卡是否在位

6. AT+CREG? 是否注册GSM网络

7. AT+CGREG? 是否注册GPRS网络

8. AT+QISTAT 查询IP状态

9. AT+QIDEACT 关闭场景

10. AT+QIFGCNT=0 配置场景,为后面的数据连接做基础

11. AT+QICSGP=1,\042CMNET\042 接入APN

12. AT+QIREGAPP 开启移动场景

13. AT+QIACT PDP上下文激活

14. AT+QIDNSIP=1 使用IP连接还是域名连接,0是IP,1是域名

15. AT+QIOPEN=\042TCP\042,\042(要使用的域名)\042,\042(域名对应的端口号)\042 这里是需要登录的域名,输入域名及其端口号。

2.1.2 GPRS模块向CPU传输GPS数据的实现

主板内嵌串口2(UART2),可以将MC20模块获取的数据经过串口2传送到STM32 CPU控制的模块。

通过USART_SendData()函数将获取到的数据通过串口进行传输。

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)

{

/* Check the parameters */

assert_param(IS_USART_ALL_PERIPH(USARTx));

assert_param(IS_USART_DATA(Data));

/* Transmit Data */

USARTx->DR = (Data & (uint16_t)0x01FF);

}

2.2 CPU主板部分功能的实现

主控CPU为STM32F103C8T6 单片机一颗。单片机实现了整个系统核心的枢纽, 实现对整个系统的把控,并完成对应的代码实现。

运用Rec_Server_Data()函数,对从服务器端接收端的数据进行处理:

(1)如果在接收缓冲区RxBuffer中收到“up”字符串,表示将进行开锁动作,则将指示灯开启,同时将智能锁降下。

(2)如果在接收缓冲区RxBuffer中收到“down”字符串,表示将进行关锁动作,则将指示灯熄灭,同时将智能锁抬起。

void Rec_Server_Data(void)

{

……

if(strstr(RxBuffer,”up”)!=NULL)

{

LED1_ON();

OP_DOWN_ON();

Delay_nMs(100);

OP_DOWN_OFF();

}

else if(strstr(RxBuffer,”down”)!=NULL)

{

LED1_OFF();

OP_UP_ON();

Delay_nMs(100);

OP_UP_OFF(); }

…...

}

3 智能车锁的打开与关闭

在手机APP端点击开锁(或关锁)按钮,会通过服务器端向主板发送一条“up”(“down”)字符串,主板通过GPIO端控制两路继电器的高低电平来实现电机的正反转,来实现智能锁的打开与关闭,如图3所示。

结语

测试结果表明,该系统可以完成预定的功能,可以正确地显示出车锁所在的位置,并可以通过手机端来控制在智能车锁的开启和关闭。此套系统简化了私家车车主找提车位难的问题,方便了人们的出行,还可以充分利用现有的停车位资源。

参考文献

[1]廖义奎.Cortex-M3之STM32嵌入式系统设计[M].北京:中国电力出版社,2012:4.

[2][美] 拉伯罗斯(Jean J.Labrosse)著;宫辉,曾鸣,龚光华,等.译嵌入式实时操作系统[M].北京 :北京航空航天大学出版社,2012:11.

[3]郭天祥,新概念51单片机C语言教程[M].北京:电子工业出版社,2009:9.endprint