《武汉工程大学学报》  2017年05期 514-518   出版日期:2017-12-19   ISSN:1674-2869   CN:42-1779/TQ
水产养殖远程监测系统的设计


随着科学技术的高速发展,远程监测技术已成为重要的监测技术之一,并且对促进经济发展具有重要的现实意义[1-2]. 目前的水产养殖大多处于人工采样、现场显示、化学分析监测阶段,操作耗时费力、实时性不强[3-5]. 鉴于此,设计了一种基于物联网的水产养殖远程监测系统,以ZigBee无线局域网内各节点采集各养殖池的水质参数,以STM32F103为主处理器结合GPRS(general packet?radio?service,GPRS)技术将ZigBee网络收集的数据上传云端,通过监测端Android App(application,App)或PC(personal computer,PC)浏览器进行远程监测,可以为养殖业提供方便、快捷、智能的服务. 1 系统结构及工作原理 水产养殖远程监测系统包括数据集采中心、多个检测节点、云端服务器、监测端App或PC浏览器,水产养殖远程监测系统的结构如图1所示. 数据集采中心是由单片机模块、ZigBee模块(协调器节点)、GPRS模块、显示模块组成. 数据集采中心主要完成的功能是云端服务器与检测节点之间的数据转发、信息显示、报警提醒以及采集周期修改命令. 检测节点是由单片机模块、ZigBee模块(终端节点)、温度传感器、溶解氧传感器、pH值传感器和相关硬件电路组成,主要的功能是将采集的养殖水池内水温、含氧量和pH值通过ZigBee传输到数据集采中心,并接受数据集采中心下发的(采样周期修改)命令;另一方面,多个检测节点和数据集采中心的ZigBee协调器一起构建ZigBee无线局域网. 云端服务器选择移动物联网开放平台OneNet存储数据. 通过Android App或PC端浏览器,查看水质数据. 2 硬件设计 2.1 数据集采中心硬件 数据集采中心硬件电路图如图2所示,结构包括STM32F103ZET6单片机、ZigBee模块、显示模块、GPRS模块组成. 数据集采中心在整个系统中,负责无线局域网与云端服务器的数据转发、报警与显示,以及组建ZigBee无线局域网. 1)ZigBee模块在数据集采中心起到数据收发和组建ZigBee无线局域网的作用. 在ZigBee网络中有三类基本节点模式:协调器、路由、终端[6]. 协调器节点在整个网络中起到启动网络、分配网络地址,接收数据和允许终端节点或路由节点加入网络等功能. 终端节点在整个网络中起到收发数据和加入网络的功能[7-8]. 系统中采用的ZigBee模块为TI公司的CC2530芯片方案. ZigBee网络结构采用星型网络,将数据集采中心的ZigBee模块设置为协调器节点,检测节点的ZigBee模块设置为终端节点[9]. 2)显示模块在数据集采中心起到显示检测节点数据的作用. STM32单片机将接收到的数据显示在显示模块上. 显示模块使用LCD12864,下设两级菜单. 一级菜单为养殖水池的选择,用于选择一个养殖池;二级菜单将会显示所选养殖池的温度、pH值、含氧量的信息. 3)GPRS模块在数据集采中心起到与云端数据传输的作用. GPRS模块通过AT指令与云端服务器建立连接,然后与云端服务器进行数据传输. GPRS模块使用SIMCOM有限公司提供的SIM900A,其内嵌TCP/IP协议[10]. 2.2 检测节点硬件 检测节点硬件电路图如图3所示,结构包括STM32F103单片机、ZigBee模块、温度传感器、pH值传感器、溶解氧传感器、pH值检测电路、溶解氧检测电路;主要完成数据的采集、数据收发和协助组建无线局域网. 微处理器采用了与数据集采中心相同的芯片STM32ZET6. ZigBee模块工作在终端模式. 养殖水池水温检测使用DALLAS半导体公司生产的DS18B20温度传感器,pH值检测使用上海雷磁公司生产的E-201-C型pH复合电极,含氧量检测使用RY952溶解氧传感器[11-14]. 3 软件设计 3.1 检测节点软件 检测节点流程图如图4所示,检测节点上电,系统初始化,ZigBee模块作为终端加入ZigBee网络,单片机判断有无来自数据集采中心的修改数据采集周期命令,如果没有接到命令,则按照预设的数据采集时间,进行温度、含氧量和pH值的采集,然后将数据通过ZigBee网络发送到数据集采中心. 如果有收到修改数据采集周期命令,调用SetTime()函数修改数据采集周期. 3.2 云端数据接入 本文的云端服务器使用中移动物联网开放平台OneNet. OneNet是中移物联网有限公司基于物联网技术和产业特点打造的开放平台和生态环境,适配各种网络环境和协议类型,支持各类传感器和智能硬件的快速接入和大数据服务,提供丰富的API和应用模板以支持各类行业应用和智能硬件的开发,推进个性化应用系统构建[15-16]. 接入OneNet之前,需要在OneNet平台注册账户,设计中注册的设备ID为“3168916”,设备ID下面申请的api-key为“tRR1w9I44g2FeHWFvYMwRZ8SQKA=”. 3.2.1 数据集采中心接入云端 数据集采中心接入云端采用GPRS模块(型号为SIM900A),GPRS模块通过AT指令连接云端服务器. STM32单片机通过UART串口通信读取ZigBee模块接收到的数据,一方面判断采集的温度、含氧量和pH值是否在预设值范围内,如果在预设值范围内就调用LCD_ShowString()函数将数据显示出来,如果有一种数据(温度、含氧量或pH值)不在预设值范围内,就调用jingbao()函数进行报警提醒LED灯闪烁3s,同时将数据显示在显示模块上,当有按键按下时,STM32单片机会通过Key_Scan()函数来判断是什么按键功能按下,再进行不同的功能执行;另一方面STM32单片机将数据按照RestFul的封装结构进行上传至云端服务器,RestFul的封装格式如下: POST /devices/3168916/datapoints ?type=3 HTTP/1.1 api-key: tRR1w9l44g2FeHWFvYMwRZ8SQKA= Host: api.heclouds.com Conneltion : close Content-Length: 49 {"temprature": 22.3, "oxygen content": 6.1, "pH":7.3} 3.2.2 App接入云端 App使用开发环境为Android SDK+Eclipse+JDK. App与云端服务器之间采用HTTP(hyperText transfer protocol,HTTP)通信方法,通过HTTP的协议向云端服务器发送GET和POST请求. 服务器接收请求,将请求的相关数据回传给Android App. 获取的数据包格式是JSON(javaScript object notation,JSON),它是一种轻量级的数据交换格式,通过此格式可以更加有效地进行数据交互. 然后将数据显示到App监测界面上,实现水产养殖水池水质的远程查看. 4 数据传输测试 将水产养殖远程监测系统的检测节点传感器放入水池中采集数据. 数据集采中心的ZigBee模块组建ZigBee网络. 网络组建成功后,检测节点采集数据,然后通过ZigBee网络将数据传输到数据集采中心;数据集采中心将数据显示在显示模块,当数据(温度、含氧量或pH值)超过预设的警戒值时,将进行报警提醒;同时将数据上传到云端服务器,云端服务器存储数据. 通过Android App或PC端浏览器来显示云端服务器中数据,PC端浏览器打开的监测界面(由OneNet提供的应用孵化器创建)如图5所示(温度为实测值,含氧量和pH值为模拟数据),App监测界面如图6所示. 由图5和图6可知,本系统可以对水产养殖水池里的水质进行连续采集数据,同时可以在浏览器或App上显示实时采集的数据,实现了水产养殖的实时远程监测. 5 结 语 上述水产养殖远程监测系统,能够实时的进行远程监测养殖场水池里的水质. 所设计的检测节点和数据集采中心硬件模块电路和相应的软件控制流程,实现了检测节点、数据集采中心、云端以及Android App之间的无线数据传输,开发了Android App应用软件. 最后对此系统进行测试. 经测试,此系统能够实时远程监测养殖场水池里的水质. 但还可在如何提高水产养殖检测的灵敏度以及丰富App软件的数据分析功能上作进一步的改进.