基于STM32的位置定位系统设计
2018-05-08范兵兵艾信友曾研胡凯旋任泽明
范兵兵 艾信友 曾研 胡凯旋 任泽明
摘 要:文章设计了基于STM32和SIM卡基站定位的位置定位系统。首先,在开机后,使用者需要向SIM900A模块的SIM卡发送短信,该短信的内容为使用者的手机号码。STM32单片机接收各传感器采集的数据并处理分析后,通过SIM900A短信、GSM、GPRS模块将位置信息以短信的方式发送到手机,同时操作者通过手机浏览器浏览http://gpsspg.com/bs.htm网站查询基站定位所获得位置的地图,从而知道具体位置。
关键词:SIM900A;基站定位;STM32F407;定位系统
中图分类号:TN967.1 文献标志码:A 文章编号:2095-2945(2018)12-0090-02
Abstract: A position location system based on STM32 and SIM card is designed in this paper. First, after the boot, the user needs to send a short message to the SIM card of the SIM900A module, the content of which is the mobile phone number of the user. After receiving and analyzing the data collected by each sensor, STM32 microcontroller sends the position information to the mobile phone by SMS, GSM and GPRS module. At the same time, the operator browses the http://gpsspg.com/bs.htm website through the mobile phone browser to query the map of the location of the base station, so as to know the specific location.
Keywords: SIM900A; base station positioning; STM32F407; positioning system
引言
随着社会老龄化越来越严重,越来越多的老人患老年痴呆症,越来越多的老人走丢,而老人的子女等监护人没有那么多的时间照看老人;而市面上的老人防走丢的定位系统售价很高。为了防止老人走丢和一定程度上解放老人的子女等监护人,让更多的普通家庭也能享受到科技进步带来的福利,设计出一个稳定、安全、可靠实用、便携、便宜的定位系统就具有很高的实用价值。
1 系统概述
该系统以STM32F407微控制器为核心,SIM900A为定位數据的采集端和信息发送端,Android手机为显示终端。总体设计如图1所示。
2 原理
2.1 基站定位原理
基站定位的原理为:不同基站测量移动电话的下行导频信号,得到不同基站下行导频的到达时刻或到达时间差,根据该测量结果和不同基站的坐标,采用相应的三角公式估计算法,就能够计算出移动电话的大致位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法相对复杂。根据原理,参与测量的基站数目越多,测量所得位置精度越高,定位性能改善越明显。而在城市之中,通信基站较多,可以确保基站定位精度在10米左右。
本文是实现患有老年痴呆症的老人的位置定位,由于老人处在相对安全的城市中,不需要位置精确到米,符合需求。由于基站定位已经由运营商实现,本文任务就是获得运营商测得位置,相对而言较为简单,所以本系统采用基站定位。
2.2 系统实现原理
SIM900A模块获取SIM卡的基站位置信息,然后在STM32F407微控制器的控制下,将位置信息发送到手机端。
3 硬件设计
该系统硬件设计主要包括STM32F407微控制器模块、电源模块、SIM手机卡的SIM900A模块。
3.1 微控制器模块
微控制器模块采用以意法半导体公司的 STM32 F407为核心的单片机最小系统,以接收SIM900A模块采集的位置信息和其它数据,并对数据进行相应处理和发送。
3.2 电源模块
该系统电源采用专用电源的方式,用纽扣电池经过AMS1117稳压芯片稳压后的电压,为不同对象模块提供相匹配的电源。
3.3 传感器模块
该系统信息采集部分只含有SIM900A模块。插入SIM手机卡后,在SIM卡连接到网络后,SIM900A模块可以通过基站定位方式得到得该SIM卡的位置数据,然后将位置数据以SPI串口传输方式传输到STM32F407单片机,在经过STM32F407单片机的数据处理后,再通过短信的方式将该SIM卡位置的国家代码、运营商代码、位置区号码、当前服务区号等信息发送到手机。
SIM900A模块:
SIM900A是可以通过插入SIM卡实现手机功能的产品。它属于双频的GSM/GPRS模块,采用的是普遍的SMT封装形式,其性能稳定,外观小巧,性价比高,能满足本系统对于与手机通信的各种需求。
另外,SIM900A的封装尺寸的大小为24×24×3mm,体积相对较小,可以符合本系统中关于便携式的要求。SIM900A可以通过AT控制指令以SPI串口通信方式进行控制。
4 软件设计
该系统软件部分采用的编程语言为C 语言。首先,对进行SIM900A模块进行初始化,检测SIM卡是否存在,检测到存在后通过AT指令获得初始地址信息。然后,等待手机向SIM卡发送号码的短信,在发送短信后,STM32单片机对SIM900A模块发出指令,采集SIM卡的位置数据,在SIM900A模块将采集到位置数据传输到STM32单片机后,对位置信息进行判断,当前的位置数据与前一次正确的位置数据不同,确实发生改变时(连续进行三次相同判断,防止出现错误数据)。将改变后的数据通过短信发送到手机上,然后手机通过浏览器查询定位位置。
4.1 系统主程序流程图(见图2)
4.2 数据处理
因为传感器在工作工程中存在不可消除的干扰,所以在本系统可能会出现错误的位置信息,而且,老人行动缓慢,在正常情况下SIM卡不可能出现快速位置变化,所以,在确定位置区号和服务区号是否改变时,需要进行三次位置信息的判断。
只有经过三次判断后符合条件,确实出现位置改变时,STM32F407微控制器才通过SIM900A模块向手机发送改变后的位置信息的短信,否则舍弃本次错误数据继续监听下次的位置数据,重复此过程。
5 结束语
该系统在实际的联调中,软件和硬件运行稳定,实现了对老人位置的有效定位和发送短信,符合预期的设计目的。在实际应用中,该系统具有价格低廉、实现简单、操作简单、便携的特点,适合普通家庭和老人消费,具有应用价值。
参考文献:
[1]马忠梅.ARM Cortex核TI微控制器原理及应用[M].北京:北京航空航天大学出版社,2011.
[2]刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2015.
[3]张洋.原子教你玩STM32(库函数版)(第二版)[M].北京:北京航空航天大学出版社,2015.