基于GPRS和百度地图API的火灾定位系统

2016-01-17 17:36赵意鹏赵河明邓星星张树云连云飞
自动化与仪表 2016年1期
关键词:控件百度探测器

赵意鹏,赵河明,邓星星,张树云,连云飞

(中北大学 机电工程学院,太原 030051)

在控制领域中,随着计算机技术的发展,精确的定位系统显得尤为重要。目前各行业都已经或正在进行监测、定位等一体化的系统建设,这些系统的建设在实际生产中为检测系统故障并准确地定位故障位置提供了重要保障,为工作人员能够迅速的排除故障提供了依据。

传统的定位系统不仅结构复杂、定位精度不高,而且还受地域的限制。考虑到GPRS技术是一种全新的无线通信方式,并且具有高速可靠、实时性强、覆盖范围广等优点,因此本系统以GPRS网络为载体向监控中心发送数据信息,进而调用百度地图API来实现精确定位。此方法运用于消防方面,可以快速准确地定位火灾地点,从而及时出警,减少财产损失。

1 火灾定位系统组成及工作原理

本系统主要由火灾探测器、单片机STC15F2K60S2、GPRS 模块 SIM900A和监控中心4部分组成,其总体结构如图1所示。

图1 系统总体结构Fig.1 System overall structure

在本系统中,单片机STC15F2K60S2通过RS-485总线监测多个火灾探测器,当某个探测器出现报警时,单片机检测到该信号,通过AT指令来控制GPRS模块SIM900A,使其将该探测器的地址信息通过GPRS网络和以太网发送到监控中心,监控中心根据接收的信息在人为操作下通过API接口调用百度地图来定位火灾地点,并规划最佳的行驶路线。这样就实现了远程终端设备和监控中心PC设备间的数据传输。

2 监控终端的硬件设计

2.1 电源电路设计

在本系统中,使用的单片机STC15F2K60S2的工作电压为+5 V,GPRS模块SIM900A的工作电压为+4.2 V,所以在设计中用了2个稳压芯片LM2596S-5和MIC29302来构成稳压电路分别为其供电,保证了供电的稳定性,提高了抗干扰能力,电路如图2所示。其中,+12 V电源通过接到POWER上的电源适配器来提供。

2.2 单片机与RS-485总线接口设计

单片机STC15F2K60S2的TTL电平需转换之后才能与RS-485总线上的RS-485电平相连,本设计中采用MAX485作为TTL电平与RS-485电平之间的转换芯片。它采用半双工通讯方式,在接收差分信号端A和发送差分信号端B之间加上120 Ω的匹配电阻,以减小不匹配引起的信号反射[1],其电路如图3所示。

图2 稳压电路Fig.2 Regulating circuit diagram

图3 MAX485电路Fig.3 MAX485 circuit diagram

2.3 SIM900A电路设计

该定位系统使用SIM900A的电源接口、串行接口和SIM卡槽接口。在电源供电的条件下,单片机通过串行接口与SIM900A模块进行通信,使开通GPRS功能的SIM卡能通过GPRS网络连接到Internet,将现场数据发送到监控中心。其电路如图4所示。在电路图中,单片机与SIM900A间用100 Ω的电阻来匹配阻抗,SIM卡槽与SIM900A间用1 k电阻来匹配阻抗[2]。

3 监控终端的软件设计

3.1 主程序设计

主程序主要是对I/O端口、串口等初始化,初始化之后对GPRS模块进行基本信息检查,若检查失败,则继续检查直到成功。当GPRS模块处于正常状态时,单片机STC15F2K60S2开始通过RS-485总线检测各火灾探测器,当某个探测器出现报警时,单片机就将该探测器的地址信息发送到监控中心,实现报警。程序流程如图5所示。

图4 SIM900A与单片机、SIM卡的通信电路Fig.4 Circuit diagram of SIM900A communicating with MCU and the SIM card

图5 主程序流程Fig.5 Flow chart of the main program

3.2 GPRS网络的数据传输

本系统采用SIMCom公司生产的紧凑型GPRS模块SIM900A,该模块属于双频GSM/GPRS模块,内嵌TCP/UDP协议,通过AT指令就能直接接入Internet,与监控中心通信,省去了TCP/IP处理模块。

AT指令集是从终端设备(TE)或数据终端设备(DTE)向终端适配器(TA)或数据电路终端设备(DCE)发送的。它是一个接口标准,以“AT”或“at”为首,字符结束的字符串,是微处理器通过串口操作GSM/GPRS模块或手机的指令集,通过它可以控制很多通信行为,如拨号、短信、数据业务和传真等[3]。

利用AT指令经GPRS模块SIM900A向监控中心发送数据需要以下3步。

第1步SIM900A的初始化:

AT //检测模块是否响应

AT+CSQ //查询信号强度

AT+CREG? //查询网络注册

AT+COPS? //查询网络运营商

AT+CGATT? //检测是否支持GPRS

通过对模块SIM900A的检测与查询,若能正常工作,则进入下一步的操作,若不能,则重新进行初始化。

第2步与监控中心建立网络连接:

AT+CIPSTART=“” //建立TCP连接或注册UDP端口号

其中表示连接类型,“TCP”为建立TCP连接,“UDP”为建立UDP连接;表示远端服务器IP地址;表示远端服务端口。

本系统选用TCP作为连接类型,IP地址为221.2.82.90,端口号为9999。如果发送格式正确,返回“OK”,否则返回“+CME ERROR”;如果连接已经存在,返回“ALREAY CONNECT”,如果连接成功,返回“CONNECT OK”,否则返回“CONNECT FAIL”。

第3步向监控中心发送数据:

AT+CIPSEND //发送数据

SIM900A模块响应 “+CIPSEND: OK”,其中表示每次可以发送的数据最大值。

通过以上的检测和设置,GPRS模块SIM900A就与监控中心建立了TCP连接,在执行完 “AT+CIPSEND ”指令后,单片机就可以通过串口与SIM900A通信,向监控中心发送数据。如串口发送:sendstr("DeviceCode:A1,StatusCode:2,CityCode:Linyi,CountyCode:Lanling,CompanyCode:shibeimei"),表示设备号为A1的火灾探测器出现报警,地址位于临沂市兰陵县史贝美公司。其中,DeviceCode为监测设备号;StatusCode为状态号,1表示正常,2表示报警;CityCode为市代号,CountyCode为县代号;CompanyCode为公司名称。

以此就实现了远程监控终端设备与监控中心之间的无线通信,且该终端可安装在GPRS网络覆盖的任何位置,组网方式灵活方便。

4 监控中心设计

4.1 监控中心

监控中心是整个系统的核心,主要用来通过预先设定的 IP 地址(221.2.82.90)和端口号(9999)接收远程终端设备发送的地址信息,存储更新到MySQL数据库中。它采用Java语言来编写和B/C网络结构模式,具有很好的移植性。任何能联网的PC打开其浏览器后均可作为监控端,通过验证用户名和密码,登陆监控中心界面。

在系统工作中,Web服务器创建监听线程,在端口接收到数据时,根据数据库中定义的数据格式,如探测器编号、状态、地点等,按要求将数据保存到MySQL数据库中。在收到监控端发送来的定位请求时,首先对其进行认证,通过后才响应它的请求,生成1个符合百度地图API接口规范的JSP定位代码,返回给监控端,从而实现定位[4]。其程序流程如图6所示。

图6 监控中心程序流程Fig.6 Flow chart of the monitoring center program

4.2 百度地图API

百度地图API是一套由JavaScript语言编写的将复杂的GIS底层逻辑封装起来的应用程序接口,通过该接口把监控中心和地理信息数据结合,使用户可以从地图服务和开发2个方面方便地进行地理信息系统的应用。因此,本系统不需要开发GIS,只需在网页中插入调用百度地图API接口的代码,就能在网页中嵌入地图并对其进行操作,使用丰富的GIS资源,大大缩短了开发周期[5]。

百度地图API免费对外开放,但是从v1.5版本开始,需要先申请密钥(ak)才可使用,接口(除发送短信功能外)无使用次数限制。使用前需要通过