主页 > 案例大全 > 论文在线分享-智能农业系统中通风与灌溉系统

论文在线分享-智能农业系统中通风与灌溉系统

2021-06-02 10:10:33

  农业是衣食之源,从古至今都存在着许多需要改善的问题。我国农业的发展也需要跟上时代的步伐,我们要不断地更新农业系统,利用好每一个资源。农业也需要适应这个时代给我们带来的各种挑战发展。随着现代社会的发展,农村人口已成为国家的重要组成部分,科学技术的发展进步,要求我国农业走智能化现代化道路,其中一些问题需要我们进一步研究如何发展农业经济[1]。

  我国水资源短缺,可耕地面积稀缺,这样的大环境下我国农业需要走智能化农业发展道路。尽管中国在农业方面成绩斐然,但是面临的挑战依旧严峻。仅仅依靠传统的耕作方法几乎不可能实现增产的目标。因此,我们要改变目前的耕作方式,提高自动化调控水平,以增加农业生产的效率、质量。采用现代自动控制技术高新科技是值得我们依靠的手段,主要是管理方便,有必要花费一定的精力。与此同时,必须发展新的农业思想理念[2]。而且季节因素和自然灾害的制约,使可耕地面积越来越少,对此找到一个合适的解决方案已经刻不容缓。因此,温室大棚应运而生。

  在农业生产中,作物的生产与室内温度、土壤湿度等环境因素密切相关。为了使庄稼长得最好,生长在良好的环境中,环境参数需要控制在最合理的范围内。传统农业环境参数的测量控制手段多为手工控制,存在许多不能忽视的问题。因此,我们要改变目前的耕作方式,提高自动化调控水平,以增加农业生产的效率、质量。控制温室内的温度、土壤湿度等环境因素,需要采用科学合理的手段,来形成农作物的最佳生长环境。智能农业系统可以自动调控农业大棚内的环境参数值,大大增加了作物产量,同时也缓解了耕地面积不足这一大难题[4]。

  完成后的系统可以带来无与伦比的好处。智能农业系统是一种十分精细的农业系统之一,庞大的需求数据量,通过计算机管理增加准确性,尤其凸显方便的便是全自动化监控,减少了大量工作时间,把效率拉到新的高度,让操作变得更加便捷。通过这几个月的锻炼,使我对于单片机有了更深层次的了解,第一次独立完成一个完整的系统设计,更加熟悉完成一个项目所需的流程,对软件测试也有了更深的了解。这是大学生涯的最后一役,也是迈入未来的首战。

  1.2国内外的发展及现状

  国外:一些农业发达的国家有着比我们好的科学技术基础,因此,智能农业系统中通风与灌溉技术的发展比中国愈迅速,相对来说,比较熟练,上手更加快捷[5]。

  十九世纪八十年代在美利坚合众国,有两家公司在节水灌溉控制技术上进行了联合开发。通过分析从传感器获得的数据来判断土壤是否缺水,决定是否需要进行浇灌,以此来使庄稼更茁壮地成长。

  智能农业目前在国外还依旧如火如荼地发展着,日本和一些欧美国家致力于自动化程度高的温室农业发展,主要着力于将其与新进的计算机技术结合,脱离旧的人工通风与灌溉方式,研制智能化的控制机器,灌溉呼吸机控制器是最能体现其技术性的一项发明[6]。

  国内:早在两千年以前,我国就已经出现了温室的雏形。勤劳的农民就已经能够凭借他们的智慧来合理保护所种植的农作物了。但是这样落后的保护方法一直持续到到上世纪六十年代,我国在耕作方式上固步自封,使得我国的农业一直落后于其他国家,甚至没有办法满足人们的温饱需求。20世纪70年代末,我国仍以太阳温室和塑料温室为主要方式来耕作,整体生产技术水平落后。

  我国改革开放以后从发达国家引进温室农业技术,十分重视现代农业的灌溉通风设备的研发与设计。我们应该在有限的资源基础上,努力通过科学技术实现克服水资源不足和耕地面积减少的磨难。在计算机技术发展蒸蒸日上的时代,现代信息技术在农业中的深化和应用越来越受到我国的重视。基于自动化程度的提升,我国愈发注重推动农业朝着现代化智能方向发展,目前已经有不少温室智能控制技术获得不小的进步[7]。

  虽然我国生产面积已居世界第一,但是跟一些农业发达国家比较而言,我国智能农业系统中通风与灌溉技术的发展滞后,比较不成熟,效率低下。智能农业的发展不仅只是为了增产,也为更加合理地利用自然资源,进一步增强农作物质量,设定了更高要求。目前,国内仅有极少数的企业拥有智能温室种植系统。因为这种系统制作成本高,智能农业系统价格不够亲民,所以受众不广,主要是一些大企业。除此之外,对比于国外,在性能和技术上,国内的智能温室控制系统还存在很多不足。而且其昂贵的价格不是所有人都能接受的,所以不容易在实践中推广。可以看出,国内在这方面的研究还有待加强[8]。

  1.3本文主要内容及内容安排

  对于本次毕业设计,我已搜索集结了许多相关的信息。本文对以STC89C51单片机为核心的智能农业系统中通风与灌溉系统的设计进行了较为详细的介绍。我也通过不断地修改与调试,根据老师给的任务书内容,独立完成了一整套的系统设计。文章的结构安排具体如下:

  第一个章节综述和总结了智能农业系统的研究背景、意义以及智能农业在我国的发展现状。

  第二个章节分析智能农业系统的整体方案,主要介绍对系统的需求分析,以及整体的规划这两个部分。

  第三个章节首先对各个关键的硬件模块一一进行了介绍,各个模块的功能特性逐一介绍,对硬件电路设计也进行了说明。

  第四个章节对智能农业系统的软件设计进行了分析,主要包括系统软件方案设计、总体流程图,并且依照流程图给出了对应的主函数。

  第五个章节是系统分析与调试部分,首先介绍了所用的开发与调试平台,接着介绍了硬件、软件调试部分,以及在调试过程中出现的软硬件方面的问题。

  最后,给出结论和表达感谢。详尽地总结了完成这个毕业设计所做的各类工作,以及所得到的启发与收获,或者说是一种感想体会。以及向这段时间帮助过我的人真诚致谢。

  2系统总体设计方案

  2.1系统设计需求分析

  基于了解国内外现有的智能农业系统中通风与灌溉系统,本系统的设计主要根据实际使用情况提出了要求,主要考虑农产品在大棚内的温度感知和土壤湿度感知的情况,使用单片机系统达到自动化控制的目的,依据大棚内的环境来通风或者对土壤灌溉,主要包括以下部分:

  1.我使用DS18B20和YL-69这两个传感器实时检测温、湿度。通过LCD1602显示屏显示出当前的测量值,并且实时更新显示。

  2.阈值设置。通过按键操作,进入不同的界面,分别对温湿度的阀值进行设置,并且保存设置的值,断开电源也可以保存。

  3.当检测到的湿度或温度不在设置的范围内时,通过蜂鸣器报警和小灯来提醒用户是需要通风还是灌溉。

  4.系统检测的目的是为了更好的防控,每当检测的温度比设定的值大时则开启电扇通风;当湿度低于设定值则放水灌溉,温度高于上限五线思相模块会带动直流电机降温,湿度低于下限加湿继电器会运行。

  2.2具体设计思路

  本系统通过对温度、湿度等参数及其逻辑关系的分析,且依据所给任务书的内容,整理思路,建立了总体方案,并选用STC89C516单片机作为核心,不仅仅是因为它的性价比高,还因为性能高,应用的范围较为广泛,操作也十分方便。湿度传感器、温度传感器分别选用YL-69和DS18B20,这两个器件的共同特点就是易操作、高性能。YL-69是需要通过A/D转换模块才能获得具体数值。选用LCD1602液晶显示屏,来显示温度和湿度值,是因为它的性价比高,结构简易。阈值设置功能是通过三个按键控制的。三个按键的作用其中一个是模式选择,选择是设置温度还是湿度,另外两个可以增加或降低设置的阀值。通过AT24C02(EEPROM)来保存设置好的上下限阀值,当系统再次被开启时可直接显示上次被设置好的值,不需要重新设置。当所测量的温度、湿度值中任何一个不在所设置的阀值内,报警模块则会做出相应的反应,来提醒人们温室环境需要改善,意味着执行模块会自动处理。具体的控制过程说明:温度高于上限五线思相模块会带动直流电机降温,湿度低于下限加湿继电器会运行。系统框图如2.1所示:

  图2.1系统框图

  3系统的硬件设计

  3.1硬件系统概述

  硬件在系统中的作用至关重要,本次系统使用的是跟学校里一样的普中开发板,运用到的硬件模块基本都包括在了开发板里面,唯一没有的就是YL-69湿度传感器模块。其余的主控模块、温度传感器模块、AD/DAC模块、LCD液晶显示模块、驱动执行模块、阈值设置模块和报警模块都包含在上面。STC89C516芯片是本次课程设计的重要部分,是主控模块的核心。整个系统的运行都需要靠它来完成,使用不同的端口来掌控其他模块,让系统能够完全运行,实现任务手册中所要求的功能。读取两个传感器的温湿度值,并实时显示在液晶显示屏上。LCD1602主要功能是能够实时显示温、湿度。按按键可以往上或往下调节数值,这些值会保存在EEPROM中。当温度或者湿度越过你调节的范围,那么声光报警器会做出反应来提醒人们。同时,温度高于上限五线思相模块会带动直流电机降温,湿度低于下限加湿继电器会运行,以实现灌溉或通风功能。

  3.2主控模块设计

  整个智能农业系统的核心部分是主控模块,处理和执行数据指令是该模块的关键。如果单片机接收到传送回来的传感器数据时,就会对这些数据进行处理,并将结果传送给液晶屏显示。但是,如果收到的数据与单片机初始设置的范围有所偏差时,单片机则向系统的执行模块,即继电器模块和五线四相步进电机模块发送指令,即将水阀的开关打开进行精准灌溉或者对室内进行通风。主控模块就是这系统中负责分析与控制的重点,从而以此实现通风与灌溉的目的的。

  本次课程设计我采用了STC89C516单片机最小系统,这一系列的单片机我也比较熟悉,实际操作起来比较方便熟练。作为主控芯片,选择它不仅仅是因为它性价比高,程序下载方便,更是因为它具有极为强大的性能。最小系统包括以下部分,原理图如3.1所示:

  图3.1单片机核心原理图

  3.3传感器检测模块

  这个模块由YL-69湿度传感器模块、DS18B20温度传感器模块和AD/DAC模块组成,主要负责数据的获取。

  3.3.1 YL-69湿度传感器模块

  (一)YL-69简介

  YL-69湿度传感器有两个插片,将其放进土里,来感知土壤的水分状况,工作电压在3-5v。比较器采用LM393芯片,能够稳定地工作。这个模块的工作就是感知土壤中的水分,采集模拟量[8]。使用这个传感器的好处:其性价比高,质量好,性能优越,工作平稳,操作方法简单,不需要过多的编写代码。

  YL-69湿度传感器模块有四个引脚,一号引脚连接VCC,接3.3-5v的电压,第二个引脚接地,第三个引脚是数字量输出接口,在本次设计中没有用到第三个管脚,第四个管脚是模拟量输出口,我这次主要用到这个管口,把它连接到开发板的AD/DAC模块中,通过模数转换获得湿度值。引脚图如图3.1所示:

  图3.2 YL-69接线引脚图

  (二)湿度检测电路

  本实验中用的是四线制传感器,YL-69用来感知土壤中湿度的状况,其电路原理如图3.3。传感器获取湿度状况的模式有以下两种:

  从D0管脚获取,不会获得准确的量,只能简单判断是否大于所设的范围值。多用于湿度阀值控制开关。

  从A0管脚获取,会得到一个模拟量,会更加精确地获得想要的数值,一般被用来实时湿度值的显示[9]。

  本实验从A0引脚获取模拟量,对其进行模数转换,获得数字量,在显示屏上显示测得的湿度数据。传感器上有四个引脚,一号引脚连接VCC,接3.3-5v的电压,第二个引脚接地,第三个引脚是数字量输出接口,第四个管脚是模拟量输出口。

  图3.3 YL-69湿度传感器电路原理图

  3.3.2 DS18B20温度传感器模块

  (一)DS18B20简介

  DS18B20它的体积小,它的接线是十分方便的,只有三个引脚,封装后适用于很多场合,包括对于温室大棚的测量,使用方法也非常的便捷,性价比也十分的高,所以它是我用来收集温度数据最好的选择。在我大学期间,曾多次使用到它来完成一些课程设计,是嵌入式开发中不可或缺的温度测量工具,性能十分优越[10]。实物图如图3.4所示:

  图3.4 DS18B20实物图

  DS18B20的主要特性:电压的范围广,在三伏到五伏之间,因其本身具有电源接口和数据口,所以在寄生电源方式下可以通过数据管脚上电。

  单总线接口的方式,开发板上的单片机只需要一个I/O口就可以跟DS18B20数据口相连,然后进行双向的通讯,读取我们要的温度。

  由于其独特的接口方式,可以在其独一的三线上挂接多个传感器,进行一个多点组网的测温。

  对环境进行测温只需要DS18B20这个器件就可以,不需要其他的一些外围的一些转换电路等,因为这个传感器的内部已经集成了电路,而且体积非常小,跟一个三极管差不多大。

  测温范围是非常宽的,精度也挺高,在零下五十五到一百二十五摄氏度。

  其从9位到12位精度的分辨率是可编程的,当其分辨率为12,分辨温度是0.0625摄氏度,所以其测温精度算高。把温度转换数字的时间很短[11]。

  这是一个直接可以输出数字信号的器件,抗扰性能极强,是非常稳定的测温器件。

  当其正负极行被接反,器件不会因短路而被烧毁,工作不能照常进行。

  (二)温度检测电路

  单片机与DS18B20连接方式比较简单,器件本身只有三个引脚。单片机的P31口与该模块相接,与传感器的二号引脚传接数据。这三个管脚分别用来接电源VCC,数据传输口和接地,2号位是最为重要的一个管脚,用来传输数据。而单片机板子上的模块有四个插孔,只需选择靠右的三个就好。电路图3.5如下:

  3.5 DS18B20电路图

  3.3.3 AD/DAC数据转换模块

  YL-69湿度传感器需要通过A/D转换,模拟量要被计算机接收和处理,从A0引脚获取模拟量,这和模块会对对其进行模数转换,获得数字量,在显示屏上显示测得的湿度数据。这个模块在湿度数据采集上甚为关键。使用ET2046作为芯片,实际上这个芯片是个电子触摸转换的芯片,但是也可以作为A/D转换器使用,因为它是用来检测一个模拟电压值的器件,只不过这里把外界的模拟信号当作模拟电压,转换成一个具体的数字量[12]。ADC模块电路图3.6如下:

  图3.6电路原理图

  3.4液晶显示模块设计

  (一)LCD1602简介

  本设计选用了LCD1602模块来当作系统的显示器,它在整个系统中有着至关重要的作用,因为整个通风与灌溉系统的现象都是通过控制这个显示屏而观察的。屏幕可以显示两行字符,一行十六个。行与行,位与位之间都有间隔。它只可以用来显示字母、数字和符号,汉字在这上面是显示不了的[13]。在本系统中,它的第一行实时显示采集到到的值,第二行显示温度的上限值和湿度的下限值。其实物图如图3.7所示。

  图3.7 LCD1602实物图

  从实物图中可以看出它拥有16个引脚,需要插在开发板的相应位置,引脚说明如表3.1所示:

  表3.1 LCD1602管脚说明

  编号符号引脚说明

  1 VSS地

  2 VDD正极

  3 VL液晶显示偏压信号

  4 RS数据/命令选择端(H/L)

  5 RW读/写选择段(H/L)

  6 E使能信号

  7~14 D0~D7 DATA I/O

  15 BLA背光源正极

  16 BLK背光源负极

  VL:就是用来调节LCD1602的亮度,也就是对比度,通过给这个管脚输入不同的电压值,改变它的亮度,我们开发板使用一个电位器接到这个管教,通过电位器改变电压值,可调节亮度。

  RS:数据/命令选择端,给它一个高电平,选择数据端,反之则选择命令端。

  R/W:通过这个管脚,可以对显示屏进行读或者写的操作。通常,我们使用时都是进行写操作,将数据写进去后显示,基本上不使用读操作,可以直接把这个管教接地,使它一直进行写操作[14]。

  操作步骤:首先要对其进行初始化,之后才能显示。给RS一个高电平,则是选择了写命令,这可以用来设置显示坐标。由于显示屏上有两行,每行十六个字符,可以通过这个命令把数据写到你想要设置的位置,选定这个位置后,把数据发送到数据口上面,就可以显示了。

  (二)电路原理图

  电路图如图3.9所示,可以看出LCD1602有八位数据口,接在P0口上。RS是通过单片机的P26口进行控制,RW读写端通过P25来控制,使能端由P27来控制。通过这三个端口,根据时序,就可以来编写写命令和写数据,并且可以进行初始化的设置。

  图3.9 LCD1602电路图

  3.5驱动执行模块设计

  3.5.1继电器模块

  加湿功能选用继电器来实现。继电器可以用很小的电力和电流,来驱动一个设备,带动一个负载部件,想要安全地控制危险部件,使用继电器最好不过了。继电器是一种在被控制系统中使用的电气控制装置,使用条件是当它的驱动量即输入量的变化达到设置的要求自动化的控制电路中常会运用其相互作用关系,事实上时用低压控制高压,相当于一种“自动开关”。因此,继电器在电路中的应用挺多的,实际上它可以用低压控制高压,所以可以放心使用,比较安全,家中所装的漏电保护器是个很好的例子。这里的继电器的功能是在土壤里的湿度低的时候进行灌溉,由于开发板的局限性,这里用小灯模拟加湿器。当湿度值高于所设置的阀值时,单片机就会驱动该模块,实现浇灌功能。

  线圈和触点包含在器件内部中,当线圈通电时触点将自动断开。电路原理如图3.10所示:

  3.10继电器电路图

  3.5.2直流电机模块

  电机的应用范围十分广泛,充斥在我们日常生活之中。本系统使用五线四项步进电机驱动模块来驱动直流电机,作为通风系统中的执行模块。当温度值高于所设置的阀值时,单片机就会驱动该模块,带动电机,实现通风功能。

  直流电机介绍:其轴长:8mm,轴径:2mm,电压:1-6V,参考电流:0.35-0.4A,3V转速:17000-18000转每分钟。通常使用它来做五线四相模块的演示实验。实物图如图3.11所示:

  3.11直流电机实物图

  电路原理图3.12如下,J47是该模块的一个输出端,同来连接直流电机,一端接VCC,另一端接剩下的任一管脚即可。

  3.12五线四相步进电机模块电路图

  3.6阀值设置模块设计

  3.6.1 EEPROM模块

  温、湿度的阈值存储在EEPROM芯片AT24C02中,有三个按键负责调节设定的限制值。AT24C02芯片的电路如图3.13所示,通过10k的上拉电阻接VCC,空闲时默认高电平。

  3.13 EEPROM电路图

  IIC总线是一种简单的串行总线。它只需要一根时钟线和一根数据线就可以在接连于总线上的设备上传递信息,以及连接到这两根线的设备的SDA和SCL是线“与”关系。

  主从双向通信。再进行数据通信的时候一定要注意,当SCL为高电平状态,SDA会处于稳定状态,也就是说数据不会改变;只有SCL为低电平状态时,SDA才可以被允许变化[15]。

  其开始、停止信号如图3.14,其需要变化及点注意如表3.2:

  图3.14开始、停止信号图

  表3.2开始、停止信号变化及注意点

  开始和停止信号

  信号SCL SDA注意

  开始信号高由高到低跳变前高电平持续时间要大于4.7us且SDA的低电平持续时间要大于4us

  结束信号高由低到高跳变前低电平持续时间要大于4us且SDA的高电平持续时间要大于4.7us

  3.6.2独立按键模块

  按键模块用到了其中三个按键,K1、K2和K3键,起到的作用分别是调高、调低和模式选择。先按第一下K3后,会跳到温度设置部分,这时,可以按K1、K2键改变阀值。再按一下则跳到湿度设置模式,按第三下会跳到原来的界面。按键模块电路图如3.15所示:

  图3.15按键模块电路图

  3.7报警模块

  本系统的报警模块用蜂鸣器和LED灯组合而成声光报警模块。当温湿度任何一个测量值不在阀值设置范围内时,蜂鸣器就会发出声响,对应的LED等也会灭掉。我所用到的开发板上,该模块用到的蜂鸣器是无源的。所以你通直流电它并不会响铃,需要1.5~2.5KHZ的信号使它发出声音。它的优点是物美价廉,性价比高,声音频率广泛,可以做出多种音效,操作简单[18]。蜂鸣器电路原理图如3.16所示:

  3.16蜂鸣器电路图

  4系统的软件设计

  4.1编程思想

  通过系统的需求分析已经获得了系统的基本功能需求,根据需求,进行了硬件的选定,接下来就是对各个模块进行软件的编写。本次设计用C语言进行编程,其中很多功能模块都曾在以往的课程中时学过,所以本次设计能够较为顺利的完成。

  本系统的主要功能是能够实时显示温、湿度,并且在超出预设值的时候能够执行相应功能。当接通电源开始供电时,首先对显示器进行初始化,显示器的两行都会显示不同的内容,其中第一行显示的是实时的温、湿度值,第二行显示温度上限阀值和湿度下限阀值,可以根据按键模块切换三个模式、调节阀值数据。湿度参数数值的采集需要通过A/D模块转换过来,本次设计温度初试限度阀值设定为40℃,湿度初始设定为50%,每当检测的温度比设定的值大时则开启电扇通风;当湿度低于设定值则放水灌溉,温度高于上限启动通风直流电机,湿度低于下限加湿继电器启动。

  4.2系统的流程图

  经过对所设计的课题的总体了解,根据系统的功能及原理,构思了在主程序的框架,首先对整个系统进行初始化,然后通过显示屏显示采集到的温湿度指令,接着判断是否超出阀值,做出相对的执行工作,若没超出,则继续监测,若超出,则执行相应的通风灌溉工作。系统的流程图如图4.1所示:

  图4.1主流程图

  图4.2系统主函数

  根据流程图所编写的主函数如图4.2所示,可以直观的反映出系统的各个模块的功能。首先函数LCD_Init();使显示屏幕初始化。kai_display();这个函数是在初始化后,将一些测量值的单位、字符显示在屏幕上。TH_DataPros();;这个函数用来采集温、湿度的信息。KEY_Pros();这个函数用来设置阀值。TempData_Compare();HumiData_Compare();这两个函数判断采集的温、湿度值是否查出阀值,进行通风或者灌溉的工作。

  5系统的分析与调试

  5.1程序下载软件说明

  本次设计选择的开发平台是Keil4嵌入式开发平台,该平台支持多种处理器的开发,是目前嵌入式开发平台的主流选择。设计的首要任务是安装和使用这个软件,由于这款软件在我学习单片机开发时已经深入了解过,所以现在可以熟练使用这款软件。在编译完Keil4后,由于我做这个课题使用的是谱中的开发板,所以直接可以用谱中配套的自动下载软件,选择所生成的.hex文件烧录进开发板上,使实物与程序相连。烧录时需要注意芯片类型、串口号有没有选对。下载进度到达百分百就说明烧录成功结束。Keil4开发环境界面如图5.1所示,烧录下载软件界面如图5.2所示:

  图5.1 keil4开发环境界面

  图5.2烧录软件界面

  下载到开发板之后,将各个引脚进行接线。接着就可以观察系统的完成情况,进行调试和修改了。

  5.2系统调试

  首先从硬件系统方面入手,我所使用的开发板与之前在学校里用的一样,从硬件调试的情况分析来看,电路板焊接情况良好,没有出现虚焊漏焊的状况,各个模块皆能正常工作。

  接下来要进行的是软件调试,将程序烧录至单片机中,连线将各个模块相接起来,然后通电,观察LCD1602显示屏,看能否显示所采集到的数据,相应的执行机构能否工作,这样来调整程序。实验接线如下:

  1.独立按键模块--单片机管脚

  K1--P31,K2--P32,K3--P33

  2.蜂鸣器模块--单片机管脚

  BEEP--P15

  3.LED模块-单片机管脚

  D1--P24;D2--P23

  4.继电器模块--单片机管脚

  RELAY--P14

  5.直流电机模块--单片机管脚

  IN1--P10(参考直流电机实验接线)

  五线四相步进电机模块输出--直流电机

  5V--直流电机两脚任意一个

  O1--直流电机两脚任意一个

  6.EEPROM模块--单片机管脚

  SCL--P21

  SDA--P20

  7.DS18B20模块--单片机管脚

  J14--P30

  8.YL-69模块--AD/DAC模块

  A0--AIN3

  从软件调试方面,显示情况与预期情况相符,系统功能都能够按照任务书所给出的那样实现,调试结果如下:

  (一)系统通电后会显示当前环境下温湿度值和在软件中设置的温湿度阀值。如图5.3所示,这是接线完成之后所显示的样子,我们可以看到LCD1602第一行实时显示温度、湿度值,第二行显示的是初始阀值,温度初始上限设定为25℃,湿度初始下限值设定为48%。此时风扇和继电器没有启动,说明检测到的值没有超过阀值。

  图5.3系统实物图

  (二)系统即会把目前监测的的温、湿度与在软件中设置的阀值相比较,如果实时温度高于上限温度,开启风扇进行通风降温,同时报警;如果湿度低于下限湿度,开启继电器进行灌溉,同时报警;当前温、湿度如果在所设置的范围内时,电机或者继电器会及时关闭,报警系统也会关闭。接下来展示继电器和直流电机这两个驱动模块的调试现象:

  1.首先对直流电机这个驱动模块进行测试,如图5.4所示,此时的检测到的温度是26.2℃,超过了25℃,单片机向五线四相步进电机模块发送指令,带动直流电机开始转动,蜂鸣器响,同时报警指示灯亮也亮了。电机驱动了一段时间后,温度降下来,低于设置的阀值,电机则关闭,蜂鸣器也停止,报警灯灭。

  图5.4电机调试

  2.接下来调试的部分是继电器,如图5.5,通过改变湿度传感器插片在水里的接触面积,使湿度改变,此时的湿度低于48%,蜂鸣器开始响,报警指示灯亮,加湿继电器启动,图中已将继电器与报警指示灯框选出。当不缺水,湿度恢复到正常状态,继电器关闭,报警也随之停止。

  图5.5继电器驱动

  (三)接下来所要展示的是对温、湿度阀值的设定部分。本系统温湿度阀值的设置用3个按键就可以实现。按下K3键会进入温度阀值设置界面,再按一下,切换到湿度阀值设置界面界面,第3次时按时,会回到主界面中,这样循环。当处于温湿度阀值设置界面,可以通过K1和K2键加减阈值,这里的温度只设置整数部分,由于其精度我们可以忽略小数部分,将设立好阈值保存到AT24C02模块,断电之后重新打开系统只从AT24C02读取数据,不需要重复设定温度上限和湿度下限。接下来展示的是阀值设置各个界面的操作现象:

  1.界面一如图5.6,这是第一次按下K3键后先进入到的界面,是温度阀值设置界面,可以看到原先设置的比较值是25℃。按下K1键,就会对阀值进行增加。按下K2键,则会对阀值进行减少操作。

  图5.6界面一现象图

  在温度过高,电机驱动着的状态下,也可以通过改变阀值来使之停止。具体过程如图5.7所示:在阀值为25℃,电机还在驱动,报警系统也还开着,当把温度阀值上调,调到27℃,电机不再转动,报警系统也不再亮了。

  图5.7控制阀值关闭电机

  2.界面二如图5.8,第二次按下K3键后进入到湿度阀值设置界面,可以看到原先设置的阀值是48%,接着,按下键K1,湿度阀值增大;按下K2键,阀值减小。

  图5.8界面二现象图

  同样,在水分不足时,继电器还驱动着的状态下,也可以通过改变阀值来使之停止。具体过程如图5.9所示:在阀值为25℃,继电器还在驱动,报警系统也还开着,当把温度阀值上调,调到27℃,电机不再转动,报警系统也不再亮了。

  图5.9控制阀值关闭继电器

  3.第三次按下K3键,回到主界面,如图5.10所示。由图可见,此时的温度和湿度都在所设置的范围之内,继电器和电机都在停止驱动。

  图5.10回到主界面

  5.3所遇问题及解决办法

  5.3.1硬件解决方法

  相对于软件来说,硬件是比较容易解决的一类问题,问题比较容易排查。需要避免一些低级错误,比如接线错误等。

  5.3.2软件解决方法

  本次课程设计主要精力都花费软件部分,过程十分曲折,遇到的问题不像硬件调试那么直观,在调试时遇到过很多问题。

  1.程序烧录不进去。

  下载的时候很容易出现问题,总是会显示超时或者波特率等问题。下载前需要检查芯片类型和串口号有没有出错,这是比较容易解决的问题。我遇到过最棘手的问题是第一次烧录进去,第二次同样的文件却烧录不进去,在网上查找了很多资料,琢磨了很久才得以解决。我发现需要先将接线拔掉下载才不会出问题。

  2.显示结果不稳定,屏幕一直闪烁。

  由于刚开始的时候程序里边一直是在采集数据然后显示,没有加延时,这样内部就一直在工作,变化得特别的快,容易出现不稳定的状态,屏幕会闪烁。最后解决的方法就是添加延时,使之每隔一段时间以后采集一次,而不是一直采集。

  3.阈值设置模块加了按键以后按键始终不能按预期效果工作。

  这个问提困扰了我很久,之后我发现一直按着按键,可以被单片机读出来。单片机是在执行单次扫描。找到问题了解决起来也就容易多了,后来设置了连续扫描来扫描键盘,这样按键就都是有效的了。