基于单片机的水位监控系统的设计与实现
2015-08-26王飞飞李玮瑶
王飞飞,李玮瑶
(平顶山学院 河南 平顶山467000)
水库的水位监测是一项关系到人民安危的重要工作,监测数据的质量和精度都会影响到水情信息的准确性和实时性。随着监测技术的不断发展,计算机、无线通信、微电子等先进技术逐渐地应用到了水位监测中。 由于大部分的水库位置偏僻、依靠人工采集监测数据存在执行效率低、存在误差等问题[1]。因此,本论文在分析现有水库水位监控系统的基础上,采用新型的水位传感技术和无线通信技术,设计了一种基于GPRS 的水库水位实时监测系统,实现水库水位数据的实时采集、处理和显示等功能。 该系统包括数据采集、数据传输、数据处理、远程监测中心四部分[2-3]。
1 系统总体设计
1.1 系统架构设计
本水位监控系统包括对水位及周边环境的温湿度, 光照度的测量。 水位的测量通过压阻式水位传感器实现,通过将水位的状态转换成模拟信号,再利用模数转换器把输出状态直接接到单片机的I/O 接口,单片机经过运算控制,输出数字信号。测量得到的数据通过GPRS 模块传送到远程监控端,监控端可对数据进行分析处理[4-6]。 系统总体设计如图1 所示。
图1 系统总体设计图Fig. 1 System overall design
1.2 系统硬件选择
由于水位监测装置是长时间无人职守的监测系统,系统应用一种高性能、低功耗的单片机,对各个部分进行自动控制,以降低仪器的整体功耗,在采集数据后将数据传向远端服务器。
本系统采用的主要硬件有:
单片机:STC12C5A60S2 单片机, 其片内具有大容量程序存储器且是FLASH 工艺的,内部自带高达60K FLASH ROM,而且和8051 指令、管脚完全兼容。
水位传感器:压阻式水位传感器。
温湿度传感器:SHT10 温湿度传感器,SHT10 传感器采用专利的CMOSens 技术,属于Sensirion 温湿度传感器家族中的贴片封装系列,产品具有极高的可靠性与长期稳定性。
光照传感器:GY-30 光照传感器。
GPRS 模块:SIM900A 模块。
2 系统实现
在对现有技术、 水位监测系统研究以及对该水库水位监测需求进行调研分析的基础上,设计并实现一种符合该水库实际需求的水位监控系统,主要分为以下四部分:
2.1 数据采集
在数据采集阶段, 系统通过压阻式水位传感器进行水位的数据信息采集。 水位传感器将测量所得数据保存在存储器中,微处理器发送命令将数据取出,通过相关协议将数据传送到单片机的A/D 转换模块, 由于A/D 转换模块接收到的数据是电压信号,需要将其转换为相应的数字信号。转换过程如下:
首先应将ADC 的高八位和低八位都重置为零, 初始化
ADC:
unsigned int adc10_start(unsigned char channel)
{
unsigned int adc;
unsigned char i;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR = (ADC_CONTR & 0xe0) |
ADC_START|channel;
}
初始化完成后,进行一次ADC 转换:
do{
if(ADC_CONTR&ADC_FLAG)
{
ADC_CONTR&=~ADC_FLAG;
adc=(unsigned int)ADC_RES;
adc=(adc <<2)|(ADC_RESL&3);return adc;
}
}while(--i);
return 1024;
A/D 转换的实现:
ADC_10data=adc10_start(4);
DEPTH=((unsigned long)ADC_10data*2000)/1024;
DEPTHdata[0]=DEPTH/1000+0x30;
DEPTHdata[1]=DEPTH%1000/100+0x30;
DEPTHdata[2]=DEPTH%100/10+0x30;
DEPTHdata[3]=DEPTH%10+0x30;
数据采集阶段主要完成水位、温度等相关信息的采集。
2.2 数据传输
单片机和上位机之间的通信主要分为两部分: 串口发送与GPRS 发送,如图2 所示。
图2 GPRS 通信流程图Fig. 2 The flow chart of GPRS communication
串口发送:水位监控系统中的各个传感器采集到的数据存储在单片机的RAM 里,在单片机的控制下,通过UART 串口将采集到的水位、温湿度、光照、GPS 位置数据信息发送至外接设备。单片机在与外接的GPRS 无线传输模块之间的数据传输过程中,首先考虑的是数据传输的效率、数据传输的可靠性以及安全性等问题。 UART 串口是单片机自身嵌置的串口,通过该串口可将水位、温度、湿度、光照、经度、纬度、海拔等数据信息传输到串行接口接收/发送缓冲区(SBUF)中,用以实现于外接的GPRS 无线通信模块之间的通信。
GPRS 发送:水位监控节点部署在水库的不同位置,且水库面积巨大,节点分布广泛、位置特殊,要将各个传感器采集到的数据分别发送至服务器,就必须使用无线通信技术。 单片机借助AT 指令来实现对GPRS 无线通信模块的有效控制,对其进行初始化、指定接收服务器的网址和端口信息、指明要发送的数据,实现水位等数据的远程自动化无线传输功能。 具体如下:利用void GSM_init(void)函数,通过调用AT 指令对模块进行相关的设置,而AT 指令是一个个的字符串,通过UART 串口向GPRS 模块的数据接收终端发送AT 指令时,需要利用一个名为void sendstring(unsigned char*p)的函数,该函数会自动调用并执行其内部的嵌套的void sendchar(unsigned char ch)函数,将AT 指令发送至GPRS 模块。
2.3 数据处理
通过Socket 技术将由GPRS 模块通过TCP/IP 协议发送过来的缓冲数据接收,通过数据检测进行初步的数据处理,然后将符合规则的数据存入指定数据库的指定字段。 具体如下:
1)接收GPRS 信息
接收GPRS 信息时,首先通过GetServerIP()方法获取服务器的IP 地址, 用指定的端口号和服务器的IP 建立一个EndPoint 对象,然后建立一个Socket 对象,用该对象Bind()方法绑定EndPoint,Listen()方法开始监听,接收到客户端的连接后,用Accept()方法创建新的Socket 对象,通过Receive()方法,获取接收到的信息,信息接收时,需要对接收到的数据长度进行判断,然后按照规定长度截取有数据的部分,避免接收到后面的空格等没用的信息,并以*字符来确定该字符串结束。
2)解析数据,保存到数据库
本系统规定传输数据的格式为“#,经度,纬度,水深,温度,湿度,光照强度,*”,中间用逗号分隔,所有接收到的数据以#开头,以*结束,所以将数据插入到数据库时,需要判断接收的数据是不是与上述格式一致,如果一致,则进行处理并入库,否则,则将该数据丢弃,继续接收下一条数据。
2.4 数据显示
将接收到的水位等数据信息进行显示,设定刷新时间,每隔一定时间对显示数据进行更新,同时由于监测点可能不定时添加,所以刷新数据时首先分析监测点,检测界面上是否已有该监测点,若有,则更新本监测点数据,若没有,则添加该监测点;当鼠标悬放在某监测点上时能够在信息栏显示此监测点最新数据; 当鼠标左键点击监测点时弹出详情查看确认对话框,点击确认可查看详情,取消则关闭对话框。 具体如下:
1)定义布尔变量FLAG(默认为true)用来标识是否为首次添加监测点。
2) 当主窗体加载时打开定时器并定义定时器tick 事件;在tick 事件中首先获取监测点数据的数据表,遍历该表,若无数据则刷新,直到有数据进入,然后获取该监测点id、经纬度信息,调用checkjd(id, x, y)方法,在checkjd(id, x, y)中首先检查FLAG 是否为true: 若为true, 则直接添加该检测点 (调用newRadioButton(id, x, y)),若为false,则检查是否已有该监测点,如果有就更新该监测点信息及标识位置。
3 结束语
本水位监控系统实现了数据的采集、 传输、 处理以及显示,能够较为准确及时地监测水库水位信息,帮助水位监控工作者摆脱了对于有线网络、人工采集汇总发送的诸多依赖和限制, 使人们更方便的对水位进行监控以及对水位情况的对比,也降低了对工作人员的技术要求,但是本系统在平台扩展性以及实时预警方面还存在一定限制。
[1] 王昆,陈昕志.基于GPRS 的地下水动态水位监测系统研究[J].计算机测量与控制,2011,19(2):263-266.
WANG Kun, CHEN Xin-zhi.Research on dynamic Level of groundwater monitoring system based on GPRS[J].Computer Measurement&Control, 2011,19(2):263-266.
[2] 徐航. 基于GPRS的水库水位实时监测系统的研究[D].江西理工大学, 2012.
[3] 闫静杰,刘晓文,朱哓颖,等.基于无线传感器网络的井下水位监测监控系统设计[J]. 传感器与微系统,2008,27(12):73-75.
YAN Jing-jie,LIU Xiao-wen,ZHU Xiao-ying,et al.Design of coal mine water level measuring and monitoring system based on wireless sensor networks [J].Transducer and Microsystem Technologies,2008,27(12):73-75.
[4] 张建国,张英梅. 无线数字水位监测系统的设计[J]. 机械工程与自动化,2008(5):116-117.
ZHANG Jian-guo,ZHANG Ying-mei.Design of wireless digital water-level monitoring system[J].Mechanical Engineering& Automation,2008(5):116-117.
[5] 楼然苗,李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2012.
[6] 赵敏.基于GPRS网络的无线通信系统的研究和实现[D]. 太原:太原理工大学,2010.