找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于单片机控制的双模式儿童防走失系统设计

[复制链接]
admin 发表于 2013-3-25 14:46:37 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 鉴于传统儿童防走失系统使用的局限性,介绍了一种基于单片机控制的、可以工作在无线信号与移动信号两种数据传输模式下的儿童防走失系统。分析并利用GPS全球定位系统,准确获取儿童所在位置的经纬度信息,通过某种数据传输方式将数据传输给父母端设备,处理数据并图形显示儿童与父母的具体或是相对位置。
关键词: 单片机;GPS;数据传输;图形显示
       据公安部最新数据显示,近年来我国每年有近20万儿童失踪。传统的儿童防走失系统主要依靠无线电路实现,儿童端有一个信号发射器,父母端接收此信号并判断信号强度大小,当信号强度小于设定值时即报警。该方案的优点是结构简单、体积小,显着缺点是适用距离短,无法判别儿童方向,信号易受干扰。这往往是儿童防走失产品的致命缺点。
     本系统采用的方案是根据GPS信息判断儿童具体位置并实现报警功能,报警的同时能够在第一时间向父母提供儿童的准确位置信息。系统的创新点与技术突破点主要体现在以下几个方面:
     (1)双模式工作:当没有移动信号时,可通过无线方式实现点对点通信,不依靠第三方;当距离超过1 000 m时又可通过短信息传递数据,方便可靠;
     (2)双重图形处理:十字坐标显示响应快速直观,第一时间指明孩子的方位;Google地图显示告知孩子的准确位置,两种方式一键切换;
     (3)在Android手机操作系统下开发了一套完全适用于儿童防走失系统的软件,可移植性强。
     需要注意的是,系统可以工作在两种传输模式下,且能在两种模式之间自动切换。具体体现在:开机情况下,儿童端设备默认通过无线信号的方式与父母端设备进行通信,而当接收不到信号时,儿童端设备将会立刻切换到通过短信息的方式与父母端设备通信。
1 系统架构与功能
     本儿童防走失系统采用子母机形式。其中儿童端为子机,主要用来获取自身经纬度数据,同时监听父母端发送过来的指令,并将自身经纬度数据返回给父母端设备;父母端设备为母机,采用了两种模式:自主开发的手持终端模式与智能手机模式,分别通过无线信号和移动网络信号进行数据传输,两种模式可自动切换。系统整体框架如图1所示。
    20121107045950656301751.gif
       系统实现的主要功能有:(1)防走失报警:当孩子与父母之间的距离超过任意设定的安全值时父母端设备报警,同时在父母端设备上自动弹出孩子当前的位置信息(以坐标信息或Google地图的形式);(2)父母主动查看孩子的位置:在父母端手持设备上主动操作可以获得孩子的位置信息;(3)孩子主动求助:当孩子发现找不到父母时,可以按下子机的傻瓜式按键,父母就收到孩子的求助信号,同时弹出孩子当前的位置信息。
2 系统功能单元设计
2.1 GPS数据获取与分析

     GPS(Global Positioning System)全球定位系统是新一代的精密卫星导航定位系统,利用人造地球卫星确定测站点位置[1]。在本儿童防走失系统中,定位分为两种:父母手持终端上的定位和智能手机上的定位。
     智能手机上的定位主要依靠手机内部的GPS芯片完成。由于Google开发的Android操作系统完全开源,可以获得其所有API函数,通过调用API函数并编写相关代码,可以启动手机的GPS硬件,获得基于位置的服务。这些服务当中包括查询手机内部存储的最新位置信息、获得当前位置以及更新当前位置信息等。在本文编写的程序当中,使用到了查询手机内部存储的最新位置信息和更新当前位置信息等功能,部分程序代码如下:
     LocationManager locationManager = (LocationManager)getSystemService(context);
     Location location = locationManager.getLastKnownLocation(provider);
     updateWithNewLocation(location);
     其中LocationManager locationManager=(LocationManager)getSystemService(context)用来添加实例变量来存储对LocationManager的引用,启动手机基于位置的服务,基于位置的服务的目的是确定设备的物理位置;Location location=locationManager.getLastKnownLocation(provider)语句通过对实例变量locationManager的引用获得手机内部最新的GPS数据,并存储在location变量中;最后一条语句updateWithNewLocation(location)用来对手机内部存储的GPS数据信息进行更新,以获得最新的位置信息。
     在儿童和父母端的手持监护终端上分别内置了一个GPS信号接收机。由于GPS卫星发送的导航定位信号是一种可供无数用户共享的信息资源,对于陆地、 海洋和空间的广大用户,只要拥有能够接收、跟踪、变换和测量GPS信号的接收设备(即GPS信号接收机),就能够获取当前的位置信息。利用GPS信号接收机将接收到的GPS信号转化为GPS经纬度数据,并以TTL电平格式输出,然后由单片机I/O口对其进行读取并进行进一步的处理。GPS模块的电源引脚连接到单片机的VCC与GND引脚上,用以给GPS模块进行供电;GPS模块的通信引脚连接到单片机的40与41引脚上,也就是单片机的异步串行接口RXD0、TXD0,GPS模块通过这两个引脚进行数据的收发,电平传输格式为TTL电平格式。
     当系统获得子机与母机的GPS数据后,通过一系列算法求得子机与母机之间的实际距离与方位角。具体算法是:由于地球表面无比巨大,将地表看作是一个平面,将地球的经度当做这个平面的Y坐标,将纬度看做是X坐标。当获得了子机与母机的经纬度数据时,实际上就获得了它们的横纵坐标,通过勾股定理计算距离,通过三角函数关系计算方位角。为求出两点之间的实际距离与相对角度,首先需要求出其中一点相对于另外一点在经度方向上和纬度方向上的距离,也就是两条直角边的长度。而这两条直角边的长度可以通过两点之间的经度差和纬度差分别乘以两点相对于地球轴心和地球球心半径来获得,当获得了两条直角边的长度后,两点之间的实际距离也就是斜边的长度。具体的计算过程如下:
      20121107045950718801752.gif
其中,α1、α2、β1和β2分别是两点的纬度值和经度值,α为两点的平均纬度值,OA、R分别为两点到地球轴心和球心的半径,AC、BC为两点在经度方向和纬度方向上的距离。
2.2 数据传输
     子机与母机之间的通信可以通过两种模式进行,分别是GSM短信息传输模式与无线信号传输模式。相应地,为了与母机完成通信,在子机上分别使用了SIM300C GPRS带协议模块与APC240无线模块。
     在父母端的智能手机上开发了一个儿童防走失系统配套软件,当父母使用手机查询孩子的位置时,将会发送一条含查询指令的短信到子机,子机上的SIM300C模块接收到短信后会向单片机发送一条指令,单片机接收到指令后会对短信进行读取,然后根据短信内容作出相应动作。短信发送程序代码如下:
     SmsManager smsManager=SmsManager.getDefault();
     smsManager.sendTextMessage(mobile,null,content,null,null);
     其中SmsManager smsManager=SmsManager.getDefault()用来添加一个实例变量来存储对SmsManager的引用,启动手机基于短信功能的服务;smsManager.sendTextMessage
(mobile,null,content,null,null)语句引用SmsManager下的发送短信功能来发送指令,其中括号内第一个参数为要发送到手机的电话号码,第三个参数为发送的具体内容。
     儿童手持终端中GSM通信部分电路图如图2所示。其中左半部分为通信指示灯部分,右半部分为SIM300C模块与SIM卡的引脚定义。
    20121107045950765671753.gif
       当父母使用手持终端机时,将通过普通无线通信的方式进行数据传输。首先由单片机读取所需的各种信息,包括GPS数据信息与指令信息等,再通过其I/O口将数据信息传递给无线模块,由无线模块进行数据传输。图3所示为儿童端电路板上的无线发射部分电路图(左侧仅画出发送部分电路使能图,接收部分未画出)。由于整个板子上共有三处需要使用到串行接口,分别是无线通信部分、GSM通信部分和GPS数据收发部分,而ATMEGA64单片机只有两个串行接口,所以将RXD1与TXD1作为了复用串口,通过使能端EN_A或EN_B来选择使用无线通信或是GSM通信。
    20121107045950781301754.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-27 13:48 , Processed in 0.061920 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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