王宏坡,周红,李金平,刘家祺,邬海涛,吴奇,彭冰
基于Android的池塘养殖水质远程监控系统
王宏坡,周红,李金平,刘家祺,邬海涛,吴奇,彭冰
(天津农学院计算机与信息工程学院,天津 300384)
为满足现代智能化水产养殖中随时随地掌控池塘水质参数的需求,本研究开发了一种基于Android平台的池塘养殖水质远程监控系统,实现了对溶解氧等环境参数的远程采集,同时也实现了对多控制节点的远程控制。系统控制部分采用8051微处理器进行数据的采集和处理,使用GSM(Global System for Mobile Communication)短信的方式来与基于Android客户端的无线通信,实现用户对池塘溶解氧情况的远程实时控制。此外,系统还具有统计功能,以方便用户了解池塘变化情况。
水产养殖;远程监控;传感器;GSM;Android
在水质环境监测中, 衡量水质的一个重要指标即为溶解氧, 如何准确采集溶解氧数据并实时对其处理具有重要意义[1]。在养殖池塘溶解氧监测方面,已经在养殖池塘实现了通过电脑PC机实现了对溶解氧数据的实时接收、分析并根据相应的溶解氧上下限发出指令让溶解氧机启动或停止的溶解氧自动调整系统[2]。但目前的问题是溶解氧的监控终端即电脑PC机只能放置在诸如机房或办公室等固定场所,养殖户如果想要实时了解养殖池塘溶解氧数据只能回到PC机所在处,不利于查看[3]。本系统基于Android 平台,采用GSM短信方式对养殖池塘全过程的连续或持续监控,具有实时性强,操作简单、不受时空限制等特点。
系统主要有8051CPU主控单元、传感器组单元、GSM模块、增氧泵以及继电器等模块构成。在传感器组单元中,溶解氧传感器将电流信号转换成电信号传到单片机上,经过8051微处理器处理后,由GSM模块将要处理的信息发到用户客户端提醒用户来控制增氧机,客户通过Android手机端给8051发送命令来控制增氧机打开的时间,比较方便,不受时空的限制。其他传感器原理类似,整个系统框架图如图1所示。
图1 系统框架图
2.1 硬件系统设计
控制中心选择基于8051内核的89s52芯片作为控制芯片,该芯片不仅能够对溶解氧、pH值等参数进行实时采集,而且还支持程序的在线烧写。此外,在8051CPU模块中扩展了3个串行E2PROM芯片AT24C512,以用于循环存储池塘溶解氧、pH值和温度等指标数据。
由于系统是通过对池塘水质数据连续采集,经数据分析管理后再告知执行单元进行增氧泵等设备的开启或关闭,因此对于数据采集和执行等部分硬件要求较高,为了确保精度和远距离传输,则在数据采集上使用多点采集且通过RS485总线进行数据传输,在本设计中,由于传感器节点的数量未超过32个,所以对于RS485采用了SN75176,此外,在本设计中,为了使驱动器使能端(DE)在系统复位时处于未选中状态,则通过光耦外接2 kΩ电阻(R6)接地,以保证系统初始化时该端口处于“0”状态;为了实现总线与单片机系统之间的隔离,在SN75176与系统芯片之间通过TIL117光耦进行隔离;为了有效抗击线路干扰的发生,在485的A、B两端之间添加了D1和D2两个稳压管;此外,为了防止某个485芯片不幸被击穿后而不影响其他485的通信,则在A、B两端各串联了一个20 Ω的电阻(R10、R11);另外,由于485总选现场总线采用的是双绞线形式,其阻值大约是120 Ω,为减少信号的发射发生,则在485中增加120 Ω的吸收电阻(R8),具体硬件结构设计如图2所示。
图2 RS485连接示意图
溶解氧传感器采用499ADO隔膜覆盖的电流型传感器,该传感器不仅能够连续监测液体中的溶解氧含量,而且采用隔膜覆盖,易于更换,同时还带有自动的温度补偿和自动压力平衡,以防止隔膜变形[4]。pH值传感器采用Signet2724复合电极传感器[5]。它们与主控单片机之间都是通过485总线方式进行通信,所采用的电路与前面类似就不一一介绍。溶解氧传感器、pH值传感器等根据多参数在线水质传感器的研究与实现[6],将其设置在距离水面50 cm靠近养殖对象的地方。增氧泵的控制是通过继电器进行的,为了有效调控增氧泵,继电器采用了德力西的小型固态继电器CDG1-1DA-10 A。该继电器控制电压为3~32 VDC,负载电压为24~480 VAC,输出电流为10 A控制电路为5~20 mA,在该继电器中,采用美国仙童光耦,实现了隔离,因此,在电路的设计中,就不需要再额外增加光耦以实现控制隔离。此外,该继电器采用了无触点开关,从而没有机械触点,无火花的产生,安全性更高。其连接电路示意图如图3所示。
图3 继电器控制电路示意图
GSM模块采用工业级的TC35i模块,该模块不仅可以工作在GSM1800和EGSM900双频段,而且还支持中文信息的接收和发送[7]。波特率自动为1.2 kbps到115.0 kbps,当然也可以选择300.0 bps到115.0 kbps的波特率,支持AT命令,短消息格式支持Text格式和PDU格式[8]。其与单片机的连接示意图如图4所示。
图4 TC35i与单片机连接示意图
2.2 系统软件设计
系统上电之后,首先进行一些列初始化,这其中包括对IO端口的初始化、对定时器的初始化、对485总线的初始化、以及对TC35i的初始化等等。初始化结束后开启系统程序,传感器模块则依据在初始化过程中所设定的参数开始不间断的采集各个池塘环境参数,并将所得结果按照所规定的协议通过GSM发送到手机端,手机端在接收到相关数据后,根据标准正常值判断数据是否正常,如果不正常则启动或关闭相关设备,如果数据正常,则将数据存储下来,以备统计使用。系统的软件流程图如图5所示。
2.3 485总线软件设计
485总线属于异步半双工的通信总线,发送和接收共用同一物理信道,在某个时刻它只能呈现一种状态且只允许一个节点处于发送状态,因此,要求应答的节点必须要等到总线上信息发送完毕,且没有其他节点发出应答信号的情况下,才能应答。这就对主节点和从节点之间的通信有比较严格的要求,在设计中复位时,主从节点都处于接收状态。此外还要使控制端RE*和DE的信号有效宽度大于发送或接收帧信号的宽度。发送和接收流程图如图6所示。
图5 系统流程图
图6 485发送和接收流程图
2.4 GSM软件设计
GSM即为全球移动通信系统,GSM数据通信主要是数据以短信方式通过无线信道,经由短消息服务中心进行传递的数据传送方式[9]。在本系统中TC35i采用PDU(Protocol Data Unit,协议数据单元)格式,在程序书写时,数据是以十六进制形式表示,但在传递信息时则是以Unicode码形式进行[10]。单片机向手机发送的内容为“溶解氧:7.1 mg/L”,短信中心的号码为:+8613800220500,要发送的手机号码为:+8613602223649,其过程如下。
步骤1:用addr字符串将处理后的短信中心号码表示出来。
(1)去掉短信息中心号码前的+号,同时查看其长度是否为偶数,若不是则在最后添加F,
即 addr =“+8613800220500”=>addr =“8613800220500F”。
(2)将addr中奇数位字符和偶数位字符进行互换。
=>addr =“683108020205F0”。
(3)将addr前面加上字符代表国际化的“91”。
=>addr =“91683108020205F0”。
(4)通过长度函数计算 addr的长度,并将放置到addr的起始位置。=“08”,
=>addr =“0891683108020005F0”。
步骤2:用pHone字符串将处理后的手机号码表示出来。
(1)去掉手机号码前的+号,同时查看其长度是否为偶数,若不是则在最后添加F,
即 pHone =“+8613602223649”=>pHone =“8613602223649F”。
(2)将pHone中奇数位字符和偶数位字符进行互换。=>pHone=“683106223246F9”
步骤3:用msg字符串将处理后的短信内容表示出来。
(1)使用Unicode码将要发送的“溶解氧:7.1 mg/L”表示为“6EB689E36C273A372E316D 672F4C”。
(2)使用长度函数计算出msg的长度并将其放置到msg字符串的起始位置,=“0E”,
=>msg=“0E6EB689E36C273A372E316D672 F4C”。
步骤4:组合。
组合即按着发送PDU格式将各个部分合在一起,发送PDU格式如表1所示。
表1 发送PDU格式
根据表1可知,当前的发送数据为:
addr+1100+pHone+0000V8+msg =>“0891683108020005F01100683106223246F90000V80E6EB689E36C273A372E316D672F4C ”
然后使用AT+CMGS=32
>0891683108020005F01100683106223246F9 0000V80E6EB689E36C273A372E316D672F4C即可将“溶解氧:7.1 mg/L”短消息内容发送到13602223649手机上。
接收的过程则按着格式解析出来即可得到相应的内容,限于篇幅这里就不做详细介绍。
Android是一款基于 Linux 平台的操作系统,由于其简洁和开源的特点,使得目前Android智能手机的市场占有率非常高[11-12]。本系统就是在不额外增加设备的前提下,利用养殖户手中现有的Android手机开发而成。系统中Android客户端作为一个控制中心,数据的存储则利用Android系统已有的嵌入式数据库 SQLite去完成,养殖户的每个池塘都可以设置一个监测点,或多个监测点,各个监测点之间相互独立完成环境参数查询、环境参数极限设定和电机控制。
图7 客户端系统结构
3.1 客户端界面设定
系统是在Eclipse Helios Service Release 2+Android ADT+Android SDK环境下开发完成的,Android客户端的界面则是以Android XML File文件形式进行设计[13]。系统的界面主要有用于进入系统的登录界面、有向用户概要呈现池塘信息池塘的主控制界面、有向用户查看详细信息的查询界面、还有用于设置环境极限参数的环境极限参数设定界面以及针对不同界面而设立不同的菜单界面。
当用户进入主控制界面,如图8所示,点击在线监测,则系统会向各池塘发送查询池塘环境参数的短息,并将接收到的池塘的环境参数显示出来,如图9所示。除了环境参数显示外,同时还将各增氧机的工作状态显示出来。当然,增氧机除了可以根据之前设定的环境参数极限值由单片机自动控制外,用户也可以在池塘远程控制界面自主启停增氧机,如图10所示。环境参数设定界面主要用于设置溶解氧的上下极限值,以便于底层池塘控制系统根据设定的极限参数自主调控池塘,使池塘维持正常状况,如图11所示。
图8 主界面
3.2 客户端数据的存储
环境参数的监控并非只要某一刻的数据,对于用户来说有时需要查看某一段时间环境参数的变化情况,此时就需要将检测到的数据存储下来。在Android操作系统中,虽然有SQLite嵌入式数据库,但毕竟容量有限,为了更方便的存储,则系统中可以将统计的数据以Text文本形式导出到SD卡上,为了便于查看统计数据,在数据导出时文件名后面12位为导出时的系统时间即(XX年XX月XX日XX时XX分XX秒),这样不同时刻导出的文件名就不会相同,不会出现覆盖现象,用户只需要记住保存的时间即可。
3.3 数据的统计显示
为了便于用户了解和知道最近一段时间池塘水质参数的变化情况,特在系统中添加了用于连续追踪显示的折线图。在Android端折线图的绘制时通过图表制作引擎AChartEngine来实现的。AChartEngine时一个开源的组件,图表的绘制则通过调用其相应的API去实现。在AChartEngine中有两个重要的API,一个是用于进行数据设置的API叫数据设置器,一个是渲染图形的API叫渲染器,顾名思义,通过前者可以获得所要显示的数据,通过后者可以设定或者修改数据的呈现效果。在设计中,通过XYSeriesDataSet mydataset=getDataSet(cursor)方法创建数据设置器,其中的cursor(游标)则通过读取数据库中的相应表格数据得到。而对于渲染器是通过XYSeriesRenderer renderer = getmyRenderer()实现,getmyRenderer()是一个自定义方法,在该方法中通过调用XYMultipleSeriesRenderer renderer=new XYMultiple SeriesRenderer()语句创建一个XYMultiple SeriesRenderer对象,然后通过所setChartSettings(XYMultipleSeriesRenderer renderer,String title,String xTitle,String yTitle,double xMin,double xMax,double yMin,double yMax,int axesColor,int labels Color)进行折线的配置,进而将数据以折线图形式呈现出来。图9则就是将溶解氧的变化情况用折线图展现出来,由于溶解氧变化不是特别大,所以在显示上面纵坐标划分的比较细,从而更能详细看出溶解氧的微弱变化,从图中可以看出由于当天天气发生阴晴变化,导致溶解氧有了一定波动。
基于Android的池塘养殖远程监控系统,实现了通过 Android 手机对池塘的远程监控,此外,该监控系统可以通过1台手机对多个鱼塘同时监控,该系统相对于同类产品而言,其成本低,尤其是不需要在单独配置特殊的移动终端设备,只需在现有的安卓智能手机上即可完成所有操作,因此具有较高的性价比,此外,该系统实时性好,同时还具有统计功能,可以让用户清晰知道整个周期池塘状况。
[1] 刘兴国,刘兆普,王鹏祥,等. 基于水质监测技术的水产养殖安全保障系统及应用[J]. 农业工程学报,2009,25(6):186-191.
[2] 宋超,孟顺龙,范立民,等. 中国淡水池塘养殖面临的环境问题及对策[J]. 中国农学通报,2012,28(26):89-92.
[3] 范立民,徐跑,吴伟,等. 淡水养殖池塘微生态环境调控研究综述[J]. 生态学杂志,2013,32(11):3094-3100.
[4] 杜治国,肖德琴,周运华,等. 基于无线传感器网络的水质监测系统设计[J]. 计算机工程与设计,2008,29(17):4568-4570.
[5] 南京农业大学. 用于监测鱼塘溶解氧浓度的采样传感器:CN202256309U[P]. 2012-05-03.
[6] 徐沾伟. 多参数在线水质传感器的研究与实现[D]. 武汉:武汉大学,2012.
[7] 潘朝,罗小巧,黄佳,等. 基于GSM短信的智能家居控制系统的设计[J]. 电子测量技术,2003,36(6):121-124.
[8] 段荣霞,崔少辉. 单片机与GSM模块通信技术的研究[J]. 应用天地,2012,31(1):79-82.
[9] Ramamurthy B,Bhargavi S,ShashiKumar R. Development of a Low-Cost GSM SMS-Based Humidity Remote Monitoring and Control system for Industrial Applications[J].2010,8(5):219-225.
[10] Kamal N,Ismail S S,ElKader H A,et al. Telemetry Over SMS-Based GSM Wireless Communication System[J].,2012,2(2):58-61.
[11] 王宏坡,马文芝,周红. 基于Android 的电子书阅读器的设计与实现[J]. 天津农学院学报,2014,21(2):39-41.
[12] 倪红军. 基于Android 平台的消息推送研究与实现[J]. 实验室研究与探索,2014,33(5):96-100.
[13] 李大志,胡展鸿,韩巍,等. 基于Android 的疲劳试验机远程监控系统[J]. 工程与试验,2015,55(4):75-76.
责任编辑:张爱婷
An Aquiculture Water Quality Remote Monitoring System in the Pool Based on Android
WANG Hong-po, ZHOU Hong, LI Jin-ping, LIU Jia-qi, WU Hai-tao, WU Qi, PENG Bing
(College of Computer and Information Engineering, Tianjin Agricultural University, Tianjin 300384, China)
To satisfy the needs of modern intelligent aquaculture to control ponds at anytime and anywhere, an aquaculture ponds remote monitoring system based on Android platform was developed. It realized the remote collection of dissolved oxygen and other environmental parameters and realized the remote control of multiple control nodes at the same time. The control section of the system which using 8051 microprocessor realizes data acquisition and processing. The communication between system and Android client is GSM. The users can real-time remote monitor pool dissolved oxygen conditions. In addition, the system also has statistical functions to facilitate the user to understand the changes in the pond.
aquiculture; remote monitoring; sensor; GSM; Android
1008-5394(2017)01-0069-06
TP311.521
A
2016-07-06
国家星火计划项目“智能日光温室及物联网技术应用示范”(2013GA610013);天津市教委重点课题“物联网工程专业应用工程特色构建研究”(C03-0809)
王宏坡(1977-),男,河北保定人,讲师,硕士,主要从事无线网络和传感器技术在农业上的应用研究。E-mail:wanghongpo@ tjau.edu.cn。
周红(1979-),女,河北邢台人,副教授,博士,主要从事无线网络和传感器技术在农业上的应用研究。E-mail:zhouhong@ tjau.edu.cn。