APP下载

电磁阀远程控制及水压监测系统设计

2017-08-30张德茂陈文杰

计算机测量与控制 2017年7期
关键词:微控制器水压线程

张德茂,袁 晓,陈文杰

(1.四川大学 电子信息学院,成都 610065; 2.成都华为研究所,成都 611700)

电磁阀远程控制及水压监测系统设计

张德茂1,袁 晓1,陈文杰2

(1.四川大学 电子信息学院,成都 610065; 2.成都华为研究所,成都 611700)

为了实现远程控制电磁阀及监测输水管道水压,提高农业灌溉效率;采用STM32微控制器及Android嵌入式系统,开发出一种对电磁阀进行控制及水压监测系统;微控制器通过串口连接GPRS模块,从而接收命令控制电磁阀和发送水压数据;Android手机客户端实现阀门控制界面和水压数据显示功能;云服务器负责连接GPRS模块和手机客户端,并且管理底层设备与用户信息;该系统已运用在某智能节水灌溉公司的实验大棚基地中,实验结果表明,系统能实时进行远程控制及监测,并能确保输水系统正常运行;该系统能够推动农业现代化的发展,减少人力成本,提高生产效率。

STM32微控制器;云服务器;手机客户端;农业现代化

0 引言

随着政府对农业现代化的重视以及物联网的快速发展,传统的农业生产模式正逐渐向农业智能化方向发展,智能化设备被广泛使用到农业生产过程中。这样的发展背景为电磁阀远程控制及水压监测系统的建立及推广奠定了良好的基础。目前关于研究农业环境监测的比较多,农业环境监测对于指导种植以及了解农作物的生长环境有非常重要的意义[1]。目前我国农业现代化的发展还处于初级阶段,农业生产自动化是其中重要环节之一。智能节水灌溉系统有着非常广泛的市场需求,譬如甘肃、陕西、新疆等缺水地区正逐步地推广节水灌溉系统。灌溉是农业生产过程中非常重要的一部分,如何把控灌溉时间以及灌溉量是一个重要的问题。利用覆盖面广、技术成熟且传输速度快的GPRS网络实现远程控制电磁阀可以有效解决这个问题[2]。灌溉系统中爆管以及电磁阀损坏现象经常发生,在灌溉系统中添加一个水压监测模块,如果水压超过阈值,就关闭水泵开关并及时调整水泵功率,这样可以有效防止该类现象的发生。在农业生产过程中,使用电磁阀远程控制及水压监测系统具有很重要的意义,不仅解放劳动力,降低生产成本,并且该系统具有宽广的应用市场。

1 系统设计方案

电磁阀远程控制及水压监测系统主要分为七个部分如图1所示:传感器、电磁阀、电机驱动模块DRV8823、微控制器STM32、GPRS通信模块、云服务器、Android手机客户端。微控制器通过GPRS模块接收来自云服务器的控制命令和发送传感器数据给云服务器。云服务器负责存管理底层设备及用户信息并且缓存控制命令和传感器数据。手机客户端与云服务器之间通过互联网进行连接,用户通过手机APP登录即可进行控阀操作和获取水压数据并进行显示。

系统的总体框架如图1所示,分成三大模块。底层控制模块的核心是基于 ARM Cortex -M4 核的STM32L476RE 微控制器。中间服务模块是依托云平台搭建的云服务器。上层应用模块是在Android手机平台上开发的APP。

图1 系统总体框架

2 系统硬件设计

系统硬件部分的主要任务是完成电路设计。以微控制器为核心,需要设计4个电路模块分别为:微控制器电路,电磁阀控制电路,GPRS通信模块电路,水压采集电路。由于整个底层控制模块长期工作在野外环境,因此采用太阳能供电的方式给整个硬件系统供电。

2.1 微控制器外围电路设计

微控制器是采用ST公司基于ARM Cortex- M4内核的STM32L476RE[3]。它的处理能力强大,并且具有低功耗特性,因此它适用于野外工作的设备。它有多个外围接口能满足系统后期的功能扩展需求。 STM32L476RE有4种方式可以提供系统时钟源,本设计采用16MHz的高速内部RC振荡器(HSI)作为系统时钟源,由PLL提供系统的RTC。操作系统的时钟滴答数由AHB总线时钟提供,设置成10 ms跳动一次。微控制器的外围引脚连接图如图2所示,包含:通信串口,调试串口,SPI接口,ADC通道。

图2 微控制器外围引脚连接图

2.2 电磁阀控制电路设计

电机驱动芯片采用德州仪器公司的DRV8823[4]。它仅需通过SPI接口来接收命令字就能实现对步进电机的位置控制、电流控制,具有易于实现控制、节省微控制器IO资源等优点。使用的电磁阀可以根据不同的生产厂家而定,要求电磁阀的驱动电压在驱动芯片输出电压8~12 V范围之内。控制电路如图3所示,图中MOTO_OUT_A,B,C,D各2路线输出电压驱动电机,可以驱动4个电磁阀。

图3 电磁阀控制电路

2.3 GPRS 通信模块电路设计

GPRS 通信模块采用济南有人科技有限公司的USR-GPRS232-7S3[5]。通过简单的 AT 指令配置模块,便可实现模块从串口到网络的双向数据透明传输。微控制器与通信模块用通信串口进行连接,连接状态引脚用于控制连接状态显示。电路如图4所示。

图4 通信模块电路

2.4 水压采集电路设计

水压采集电路使用微控制器的内部A/D转换电路。首先把具有A/D功能的GPIO口配置成模拟输入工作模式;然后将引脚接一个下拉电阻到地起保护作用;最后把输出信号为电压信号的传感器的输出端接到微控制器的A/D输入端。采集电路如图2中的ADC通道所示。

3 系统软件设计

系统软件设计框架如图5所示。微控制器作为底层控制模块的核心,在完成操作系统初始化和GPRS模块的配置工作之后,通过GPRS模块接受服务器的命令做相应操作与响应。云服务器作为中间层,在提供通信接口的同时也负责管理用户信息和底层设备信息。APP为用户提供直观便捷的操作显示界面。3个模块相互独立,又相互联系。

图5 系统软件设计框图

3.1 嵌入式系统程序

3.1.1 开发平台 IAR

用于ST公司微控制器的开发平台有IAR、KEIL等。本设计选择IAR公司的C编译器 IAR Embedded Workbench, 支持众多知名半导体公司的微处理器。该编译器支持操作系统移植,也支持芯片固件库移植,能够减少开发周期。

3.1.2 操作系统 RT-Thread

RT-Thread是一款开源实时操作系统[6]。它包含实时、嵌入式系统相关的各个组件:TCP/IP协议栈,文件系统,libc接口,图形用户界面等。RT-Thread操作系统的初始化包括:系统时钟,系统调度,应用线程,空闲线程。系统初始化和启动系统调度在主程序内完成。有两个应用线程分别是接收线程和发送线程。在启动线程之前,需要配置好相应的硬件接口:SPI、UART、ADC等。

3.1.3 收发线程

微控制器与服务器之间通信是通过GPRS模块,采用的传输协议是UDP。中间传输的数据协议格式如表1所示。

表1 数据协议格式

1)接收线程实现流程:

(1)rt_thread_create(参数); //创建线程

(2)rt_thread_startup(参数); //启动线程

(3)While(true)

{

RecvAndProcessData(参数) //接收并处 理数据

{

rt_sem_take(参数);

...

rt_device_read(参数);

//操作系统读函数

...

rt_sem_release(参数);

}

}

(4)Parse_From_Array(参数); //解析命令函数,按照表1数据协议格式解析数据包

(5)相关命令:

发送注册请求 SendRegisterReq(参数);

处理注册应答ProcessRegisterRpl(参数) ;

处理操作请求 ProcessCmdReq(参数)。如:开阀、关阀、采集水压等操作请求。

(6)返回处理结果给服务器。

2)发送线程实现流程:

(1)rt_thread_create(参数); //创建线程

(2)rt_thread_startup(参数); //启动线程

(3)While(true)

{

SendRegisterReq(参数); //注册函数:与服务器建立连接并提供注册信息

{

ToArray(参数); //封包函数:按照表1数据协议格式打包数据

SendData(参数) //发送函数:通过操作系统的设备写函数调用串口发送数据

{

rt_sem_take(参数);

另外,高科技企业技术团队的高薪支出税费的抵扣也是企业的另一个关注点。以中国排名前几的技术有限公司为例,2017-2018年华为技术团队个人年薪30-60万不等,百度技术团队个人年薪35-60万不等,阿里巴巴技术团队个人年薪40-60万不等,腾讯技术团队个人年薪25-48万不等,其他职位最高年薪20万元以下。将各企业技术团队个人年薪折中与其他职位最高年薪作比较,由图3可以看出企业技术团队的高年薪支出成为企业迫切希望纳入进项税抵扣的一个关注点。

rt_device_write(参数);

//操作系统写函数

...

rt_sem_release(参数);

}

}

rt_thread_delay(times);

}

信号量是一种轻型的用于解决线程间同步问题的内核对象,线程可以获取或释放它,从而达到同步或互斥的目的。在接收和发送线程之间就采用了信号量机制来保证两个线程之间的同步和互斥。

信号量的创建:rt_sem_create(参数)。

信号量的抢占:rt_sem_take(参数)。

信号量的释放:rt_sem_release(参数)。

3.1.4 控制阀门开关

开阀函数OpenValve(阀门号)和关阀函数CloseValve(阀门号)是通过操作系统的设备写函数调用SPI向驱动芯片DRV8823写入16位二进制数据(相应的数值可以查芯片手册)。

3.1.5 采集水压数据

采集水压函数GetWaterPressure(通道号)是通过操作系统的读函数调用ADC接口将模拟量转换成数字量。12位的ADC以内部参考电压3.6 V作为参考值,因此将参考电压分成4096等份。测量的电压值=AD读出的值/4096 *3.6 (V)。实际的水压值要根据传感器的转换公式来进行转换处理。

3.2 服务器端软件框架及主流程

服务器的开发环境为IDEA15.0.6 + JDK8+ TomCat8.0.3 + MySQL5.7。服务器使用的是Spring MVC框架。MVC,以设计界面应用程序为基础的设计模式,它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦[7]。Model负责封装应用程序数据在视图层展示。View仅仅只是展示数据,不包含任何业务逻辑。Controller负责接收来自用户的请求,并调用后台服务(Manager/Dao)来处理业务逻辑。处理完之后,后台业务层可能会返回一些数据在视图层上展示。控制器收集这些数据及准备模型在视图层展示。

云服务器是一种基于WEB服务,提供可调整云主机配置的弹性云技术,整合了计算、存储与网络资源的Iaas服务,具备按需使用和按需即时付费能力的云主机租用服务[8]。在灵活性、可控性、扩展性及资源复用性上都有很大的提高。云服务器软件框架如图6所示。

图6 服务器软件框架

Entity模块主要功能是定义云服务器与微控制器、手机APP应用进行数据传输的基本数据类型。Entity实体同时也对应着数据库中的表结构,本设计中需要建立的实体有:用户信息、节点信息、传感器信息、开关信息。

接口类型定义模块主要功能是实现WebSocket接口中的基本通信类型的定义,主要包括命令类型定义及应答类型定义等。WebSocket接口采用WebSocket作为承载方法,接口采用的数据格式为JSON格式。

Spring MVC模块主要实现Spring MVC框架环境。

Hibernate[9]模块主要实现数据库与Hibernate的绑定关系。

数据库接口模块主要实现常用数据库操作接口功能,如查询、修改及删除等操作。

Handler模块主要功能是对外部接口请求的处理。

Server主要是实现WebService接口。

WebSocket模块主要实现手机APP与云服务器之间的通信。

GPRS接口采用UDP作为承载方法,接口使用NCP协议格式进行通信。

服务器在启动后,将首先运行Spring框架,加载相关配置,包括Controller、Service、Hibernate等基本功能组件。然后,加载WebSocket接口模块,开始监听WebSocket连接。最后,将加载GPRS接口模块,开始监听来自GPRS的UDP消息。此后,服务器主要的功能便是监听WebSocket连接并进行管理及消息命令的处理,以及监听GPRS的UDP消息和GPRS终端的管理。GPRS终端的管理包括:(1)监测GPRS终端连接超时管理;(2)GPRS终端连接合法性检验;(3)GPRS命令消息收发处理。

3.3 手机客户端

3.3.1 Android 手机客户端架构

Android 是由Google 开发的基于Linux 内核的综合操作系统[10]。本系统的手机客户端与服务器采用的是常用的C/S架构(客户端/服务器)模式,Android手机客户端通过WebSocket接口与服务器进行通信。客户端发送命令给服务器,服务器再将命令通过GPRS接口发送给底层控制模块。底层控制模块将采集的数据上传到服务器内的数据库中进行存储。手机客户端设计架构灵活、操作稳定、数据可靠。

3.3.2 Android 客户端界面设计及主流程

Android 手机客户端支持4.0以上的手机,开环境为Android-Studio2.2,采用的是XML布局。APP有3个Activity包括用户登录、阀门开关、水压曲线图显示等界面。采用MVC模式进行系统开发。

APP在启动时,将通过WebSocket与云服务器建立连接,并提交身份信息(包括用户名及密码)。服务器通过对用户身份进行验证后,将验证结果返回给APP。APP收到登陆验证结果后,将开始维护WebSocket的连接(通过心跳数据包)。此后,APP将可以执行向服务器发送命令或从服务器读取信息等操作。通常,APP将首先从服务器上读取当前用户相关的节点信息及开关信息等,并将其显示到界面上以便用户的操作。用户在对开关进行操作时,APP将通过WebSocket向服务器发送开关操作命令,等待服务器的命令应答。服务器完成命令的处理后(包括向底层控制模块发送命令及接收命令应答),通过WebSocket向APP返回命令结果(错误码及错误信息等)。APP收到来自服务器的命令应答后,将根据结果更新界面或通知用户。

水压数据采用了AChartEngine图表引擎进行折线图显示。AChartEngine是为Android应用设计的绘图工具库,通过对其参数进行相应配置,以及对原有图表的重新封装后定制出需要使用的图像数据接口[11]。

4 系统测试与结果分析

在实际的农场温室大棚中,对该电磁阀远程控制与水压监测系统进行软硬件测试。首先用户通过用户名和用户密码登录客户端。测试表明:1)电磁阀控制操作稳定可靠,并能正确反馈控制信息。控阀成功时,界面会弹出控阀成功的提示信息并且会显示阀门状态。2)水压监测能在允许误差范围内及时给用户反映当前输水管道的水压。用户还可以设定水压阈值。水压显示界面如图7所示。

图7 水压显示界面

结果分析:1)采用GPRS通信方式,每个模块都能独立稳定的连接公网。相比WIFI连接方式,GPRS方式可以有效避免连接距离、连接数量的限制问题;不足点是需要插卡和续费。2)从实验基地的长期测试结果中估算出,远程控阀的成功率达到90%以上。根据不同型号的电磁阀,调整输出电流和电磁阀的结构,可以解决控阀成功而实际没有开阀放水的问题。3)管道水压监测,测量数据跟专业仪器测量的结果有一定的误差,但在一定程度上可以有效避免水压过高出现爆管的现象发生,达到预期的功能要求。4)APP软件可以通过扫码的方式下载,便于用户注册使用。界面操作简单,功能稳定可靠。从实际用户的反馈中,可以了解到待开发的功能还有许多,比如控制水泵开关,周期性定时灌溉等有实际需求的功能。

5 结束语

针对传统农业生产过程中存在耗时耗力的问题,提出了电磁阀远程控制及水压监测系统。该系统的特点:引入GPRS无线通讯技术,具有连接方便、覆盖面广、传输速度快的优势[10];采用基于云平台搭建的服务器,管理用户信息和设备信息;设计了基于Android的移动客户端APP软件,使农业灌溉智能化,便捷化。随着国家对农业现代化的不断推进,以及智能控制和物联网技术的不断发展,农业智能化是必然的发展趋势。嵌入式系统和无线通信技术相结合的远程控制系统必将是发展的潮流。电磁阀远程控制及水压监测系统还有许多需要完善之处,随着技术的不断提高以及系统的不断完善,该系统必将给用户带来更人性化的操作。

[1] 王恩亮,华 驰.基于物联网技术的农业环境监测站的设计[J].计算机测量与控制,2016,24(5):18-20.

[2] 李志军,刘亚善.基于ARM和GPRS的多功能智能表数据采集器[J].计算机测量与控制,2015,23(8):2918-2920.

[3] ST公司.STM32L476RE使用手册[EB/OL].http://www.st.com/,2016.

[4] TI公司.DRV8823 使用手册[EB/OL].http://www.ti.com/,2016.

[5] USR公司.USR-GPRS232-7S3使用手册[EB/OL].http://usr.cn.makepolo.com/,2016.

[6] RT-Thread 编程指南[EB/OL].http://www.rt-thread.org/download/manual/rtthread_manual.zh.pdf,2016.

[7] 戴 克,林仪明,崔 毅.Spring MVC学习指南[M].北京:人民邮电出版社,2015.

[8] 百度文库.云服务器[EB/OL].http://wenku.baidu.com/view/4630404dc850ad02de80419d.Html,2016.

[9] 刘京华.Java Web整合开发王者归来[M].北京:清华出版社,2010.

[10] 李 宁.Android 开发权威指南[M].北京:人民邮电出版社,2013.

[11] Achartengine[EB/OL].http://code.google.com/p/achartengine/,2016.

Design of Remote Control of Solenoid Valve and Water Pressure Monitoring System

Zhang Demao1,Yuan Xiao1,Chen Wenjie2

(1.College of Electronics and Information ,Sichuan University,Chengdu 610065 ,China;2.Huawei Research Institute of Chengdu,Chengdu 611700, China)

In order to realize the remote control of the solenoid valve and monitor the water pressure of the water conveyance pipeline,and improve the efficiency of irrigation in agriculture, a STM32 micro-controller and Android embedded system were used to develop a system of controlling solenoid valve and monitoring water pressure. The micro-controller through the serial port to connect the GPRS module to receive commands,and then control the solenoid valve and send water pressure data; Android phone client achieve the interface of controlling valve and display water pressure data; Cloud server is responsible for connecting the GPRS module and mobile client, and managing the underlying equipment and user information. The system has been applied in the experimental greenhouses of an intelligent water-saving irrigation company,the experimental results show that the system can carry out remote controlling and monitoring in real time, and ensure the normal operation of the water conveyance system. The system can promote the development of agricultural modernization, reduce labor costs, and improve production efficiency.

STM32 micro-controller;cloud server;mobile client;agricultural modernization

2016-12-28;

2017-02-13。

张德茂(1993-),男,湖北黄石人,硕士研究生,主要从事嵌入式系统方向的研究。

袁 晓(1964-),男,四川成都人,副教授,主要从事现代电路设计与研究。

1671-4598(2017)07-0077-05

10.16526/j.cnki.11-4762/tp.2017.07.020

TP273

A

猜你喜欢

微控制器水压线程
水压的杰作
基于C#线程实验探究
水资源配置工程中多层衬砌结构形式力学性能对比分析研究
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
用于高品质电动汽车的分布式并行计算
水压预裂技术在低透气性煤层中的应用研究
电磁导向智能车设计探讨
基于MC9S08QG8低端微控制器的无线控制器设计