吴凤娇,孙培钦,龙 燕,王 斌
(1. 西北农林科技大学水利与建筑工程学院,陕西 杨凌 712100;2. 西安交通大学电气工程学院, 陕西 西安 710049;3. 西北农林科技大学机械与电子工程学院,陕西 杨凌 712100)
农业一直是我国赖以生存的根基行业,随着目前世界水资源短缺,且我国人均水资源占有率过低、水资源利用率低,农业用水面临空前巨大的压力[1,2]。节水灌溉从20世纪早期就已经开始发展,我国引入较晚,而且设备的发展步伐一直远远落后其他先进国家[3]。目前,我国节水灌溉农业不乏滴灌[4]、喷灌[5]等节水方式,甚至也有一些自动化控制的灌溉设备,但都存在些许不足。如:没有采用实时监测土壤水分含量,仅进行定时灌溉,造成水源浪费;农田布线十分复杂且不稳定,严重制约了设备的普及;大部分自动化设备昂贵且操作复杂,不利于广大农民的使用和学习。
所以,节水灌溉技术的研究从未停止,特别是在利用无线ZigBee技术[6-8]与自动灌溉[9,10]相结合的方面有了很大的进步。然而,上述系统存在明显不足:①无线数据传输距离短且信号易受干扰;②数据信号集中式处理,容易造成系统瓶颈,难以进一步提高系统性能。这些因素较大地限制了研究成果在生产实际中的推广应用。本文是结合了研究学者们的宝贵经验和发现,并加以自我的研究和探索研制的一款专门针对普通农民使用的基于C#和Access数据库的无线精准灌溉系统软件。基于对CC2530功率放大和无线传感器网络,系统分布式运行,具有鲁棒性强、易于扩充和伸缩性良好等优点。
系统的总体框图如图1所示。系统运行首先由用户在上位机界面输入所需维持的土壤墒情范围和监控的温度范围,这些数据会经由串口通信与无线CC2530模块交互,两块无线CC2530完成上、下位机之间的数据通信。在下位机部分中,将所需监测的土壤中布上土壤墒情传感器MS10,其为一个输出为电压信号的传感器。其输出信号经过单片机的AD模块进行采集,单片机将信号转化后将该数值实时显示在LCD1602屏幕上面。同时,该数值会与此前上位机无线传入下位机的数据进行比较,并驱动相应的执行机构或者报警,以保证土壤墒情维持在一定范围;另外,下位机采集到的数据会经无线CC2530模块传到上位机界面中进行显示并储存,方便用户实时监控和查看。
图1 系统的总体框图
基于C#和Access数据库的无线精准灌溉系统软件流程图如图2所示。首先,用户从电脑登录上位机软件并给下位机上电,整个系统为启动状态。然后,用户在上位机软件的监控主界面中打开串口通道,并设置相应的串口参数,之后用户将自己所需设定的上、下限值输入相应的文本框中,点击确认之后数据便会经由串口和无线通信通道传送至单片机中,单片机接收这些数据并存储且显示这些设定数据在LCD1602屏幕上。用户若想使下位机开始监控,需从上位机软件中的监控主界面上按下开启监控按钮,下位机接收命令后开启定时采集并将采集到的数据实时显示在LCD1602屏幕上。同时,采集到的数据会与之前传送至单片机中的设定数据进行比较,从而判断是否驱动执行机构和报警装置而且采集到的数据也会经由串口和无线通信通道发送回上位机监控主界面中供用户观察并储存。
图2 无线精准灌溉系统软件流程图
若用户想停止监控或关闭系统,可在上位机监控主界面中点击停止监控,此时下位机便会停止,如图3所示。若想继续可再次点击开启监控即可,若不想则点击退出系统即可关闭系统。
图3 停止监控流程图
下位机中主要的关键程序部分是定时中断采集和串口接收中断函数。在定时中断采集中分别涉及两个部分,一部分是温度传感器的数据采集,另一部分是对土壤墒情传感器MS10的AD数模转换函数,两者的数据处理完之后,数据会储存在两个全局变量中并退出定时采集中断,然后回至主函数进行实时显示和判断比较数据以及发送回上位机主界面。下位机定时采集中断函数以及串口接收中断函数如下:
void exter1() interrupt 1 ∥定时采集中断
{
ES=0; ∥关闭串口中断
TR0=0;∥关闭定时器0
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;∥重装初值
tt++;
if(tt==1000)∥设定2秒采集一次
{
ReadTemperature();∥采集温度
Data_is_read=1; ∥温度采集完成标志
ISendByte(PCF8591,0x02);
ADC_Data=IRcvByte(PCF8591)*330/256; ∥AD数模转换
tt=0;∥时间重新归0
}
TR0=1;∥重新开启定时器0
ES=1;∥重新开启串行中断
}
void ser() interrupt 4 ∥串行中断函数
{
aa = SBUF; ∥aa存储数据
RI=0; ∥清除接收中断标志
if(Uart_state) {Uart_state++;}
if(RF2530_state) {RF2530_state++;}
is_serial_onebit=1; ∥标志接收了一个字节数据
}
上位机软件为本文系统中的人机交互界面,整个软件以C#语言为设计基础,辅助以Access数据库,完成例如对用户注册信息的管理、采集数据的储存。本文的上位机软件总共有五个界面构成,分别为欢迎界面、登录界面、管理员身份验证界面、新用户注册界面、系统监测与控制主界面。
软件欢迎界面如图4所示,本界面的目的主要有两个。一个是起到类似“商标”作用,注明设计者的名称和设计单位以及该软件名称;另一个作用主要带着缓冲作用,避免像普通软件在执行的时候由于程序内容过大而导致开启时等待过久,造成用户电脑使用不便。
图4 欢迎界面
用户鼠标点击欢迎界面之后便会进入如图5所示的登录界面。该登录界面是利用C#与Access数据库相结合制作的,可以准确地验证该用户是否为本软件允许用户,一旦验证成功便会进入到系统监测与控制主界面,否则将会跳出错误提示框。同时,在界面的左下方有注册新用户按钮,若使用者为新用户便可点击该按钮进入到管理员身份验证界面。
图5 登录界面
管理员身份验证界面如图6所示,起到的是一个“把关”的作用,为了防止非正常允许的工作人员私自乱注册系统使用的账号,在系统安装时会告知用户一个管理员账号,使用者若需注册新账号则应在管理员身份验证界面中输入正确的管理员信息方可进入到注册界面,否则会跳出错误提示框。
图6 管理员身份验证界面
新用户注册界面如图7所示。其主要由三个文本框为主体构建而成。这三个文本框分别为新用户名,用户密码以及核对密码三部分构成。当用户在新用户名文本框输入完毕之后,可按下验证账号按钮,便可以实现对在Access数据库内存储的之前注册的用户信息进行核对,若发现重复便跳出错误提示框并清空新用户名文本框,同时该按钮还具有正则表达式验证功能,可以规范用户的注册用户名,避免用户名出现混乱。若三个文本框填写完毕,可点击注册按钮,该按钮同时也具备验证账号规范用户名格式及验证两个密码文本框是否一致的功能。现将该按钮的事件如下所示:
private void NewUserRegister_Click(object sender, EventArgs e)
{
if (!zhuce_pbyj()) ∥判断文本框是否为空
{ return;}
∥验证用户名格式
string Regextest = @"^[a-zA-Z0-9]{7,15}$";
if (!Regex.IsMatch(textBox1.Text, Regextest))
{
MessageBox.Show("请输入由字母和数字组成的账号,数目在8个到16字节之间!", "格式错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return; }∥格式不正确跳出提示框
if (!UserRepeat())∥如果用户名重复
{return; }
∥验证密码格式
if (!Regex.IsMatch(textBox2.Text, Regextest))
{
MessageBox.Show("请输入由字母和数字组成的密码,数目在8个到16字节之间!", "格式错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return; }
if (!PasswordRight())
{return;}
name = this.textBox1.Text;
pwd = this.textBox2.Text;
string CommandString = string.Format("INSERT INTO [UserList]([UserName],[Password]) values('{0}','{1}')", name, pwd);
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=login_data.accdb");
conn.Open();
OleDbCommand cmd = new OleDbCommand(CommandString, conn);
if (cmd.ExecuteNonQuery() != 0)
{
MessageBox.Show(" 注册成功!","恭喜",MessageBoxButtons.OK);
this.Dispose();
Register register = new Register();
register.Show();
}
else
{MessageBox.Show("注册失败");}
conn.Close();
return;
}
图7 新用户注册界面
用户在登录界面登录成功之后,便可以进入到系统监测与控制主界面,如图8所示。整个主界面分为四大块:菜单栏、监控信息、串口设置、控制设置台,现将其一一简单介绍。在菜单栏中共设置6个功能性按钮:
(1)开启监控和停止监控用于上位机无线遥控下位机的定时采集开启或停止;
(2)输出数据可直接开启数据存储所在的数据库;
(3)使用说明主要是介绍界面的使用方法;
(4)切换用户是跳回登录界面更换用户;
(5)退出系统即退出该软件。
监控信息栏用来实时显示下位机通过传感器采集到的数据,便于观察和判断。串口设置栏用来提供用户设置通信串口的具体参数。控制设置台提供用户输入所需的大气温度、土壤墒情上、下限并且可人为控制电磁阀的开、关。
菜单栏的开启监控按钮和关闭监控按钮程序如下所示:
∥************该函数用来开启监控
private void OpenSystem_Button_Click(object sender, EventArgs e)
{
if (sp.IsOpen == false)∥验证串口开启?
{
MessageBox.Show("请打开串口", "田间精准灌溉测控系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;}
if (button5.Enabled == true || button8.Enabled == true)
{
MessageBox.Show("请设置所需要的参数", "田间精准灌溉测控系统", MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;}
if (OpenCloseSystem == false)
{
string OpenStr1 = CombinStr('#', '&');∥发送控制单片机开启监控的数据
SendCommand(OpenStr1 + '$');
groupBox4.Enabled = false; ∥关掉串口的设置界面,除非停止监控方能重能打开
groupBox6.Enabled = false;
groupBox7.Enabled = false;∥关掉温度和土壤上限的控制
OpenSystem_Button.Enabled = false;
CloseSystem.Enabled = true;
OpenCloseSystem = true;
ReceiveInit();∥初始化接收部分的程序
return;}
}
∥*****该函数用来关闭监控********
private void CloseSystem_Click(object sender, EventArgs e)
{
if(OpenCloseSystem == true)
{
string CloseStr1 = CombinStr('#', '*');∥发送控制单片机开启监控的数据
SendCommand(CloseStr1 + '$');
sp.Close();∥关闭串口
OpenClose_SerialPorts.Text = "开启";
groupBox4.Enabled = true; ∥开启串口的设置界面,除非停止监控方能重能打开
groupBox6.Enabled = true;
groupBox7.Enabled = true;∥开启温度和土壤上限的控制
OpenSystem_Button.Enabled = true;
CloseSystem.Enabled = false;
OpenCloseSystem = false;}
return;
}
图8 系统监测与控制主界面
本系统设计主要目的为的是构建一个用于控制土壤墒情值能在一定范围内时同时具有大气温度检测功能的简易灌溉控制器,并且通过大功率无线CC2530模块实现无线数据传输,节约布线成本同时提高环境的适应能力。基于C#和Access数据库设计的无线精准灌溉系统实现了该所需功能。其利用串口通信和无线通信构建了一个上位机与下位机通信的桥梁,使上、下位机之间的数据能够互通有无。而且作为人机交互界面的上位机软件的功能也十分实用丰富,包括了:欢迎界面、登录界面、管理员身份验证界面、新用户注册界面以及系统监测与控制主界面。设计的无线精准灌溉系统中上位机界面友好,操作简单,运行稳定,为无线精准灌溉系统的设计提供了参考。
参考文献:
[1] 中华人民共和国水利部. 2012全国水利发展统计公报[M]. 北京: 中国水利水电出版社, 2013:13.
[2] 佟金萍, 马剑峰, 王慧敏,等. 农业用水效率与技术进步: 基于中国农业面板数据的实证研究[J]. 资源科学, 2014,36(9):1 765-1 772.
[3] 金宏智, 严海军, 钱一超. 国外节水灌溉工程技术发展分析[J]. 农业机械学报, 2010,41:59-63.
[4] 郭 霖, 白 丹, 王新端, 等. 双向对冲流滴灌灌水器水力性能与消能效果[J]. 农业工程学报, 2016,32(17):77-82.
[5] 刘柯楠, 吴普特, 朱德兰, 等. 太阳能驱动喷灌机组行走动力和光伏功率匹配设计与试验[J]. 农业工程学报, 2017,33(16):96-103.
[6] 纪建伟, 丁 皓, 李征明, 等. 基于无线传输的稻田灌溉监控系统[J]. 农业工程学报, 2013,29(1):52-58.
[7] 张增林, 郁晓庆. 土壤水分无线传感器网络节点设计与测试[J]. 中国农村水利水电, 2012,(12):5-8.
[8] 于海业, 罗 瀚, 任 顺, 等. ZigBee技术在精准农业上的应用进展与展望[J]. 农机化研究, 2012,(8):1-6.
[9] 刘 涛, 赵计生. 基于ZigBee技术的农田自动节水灌溉系统[J]. 测控技术, 2008,27(2):95-99.
[10] 张亚锋. 基于ZigBee技术的农田土壤温湿度监测系统设计[J]. 节水灌溉, 2014,(9):80-83.