基于51系列单片机的智能农业灌溉系统_第1页
基于51系列单片机的智能农业灌溉系统_第2页
基于51系列单片机的智能农业灌溉系统_第3页
基于51系列单片机的智能农业灌溉系统_第4页
基于51系列单片机的智能农业灌溉系统_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

II第一章绪论1.1研究背景和意义随着全球人口持续增长和气候变化加剧,现代农业面临着水资源紧缺、劳动力成本提高和环境变差等诸多麻烦,传统的灌溉手段过度依赖人工经验,还引起了水资源的浪费,还很难招架突发的极端天气情形,依照联合国粮农组织统计,全球淡水消耗量里,有70%是农业用水,灌溉技术落后所引发的无效耗水高达40%,在这种当前背景之中,把现代电子信息技术跟传统农业联合起来,构建智能化的灌溉控制系统成为突破当前农业困境的重要技术手段REF_Ref22541\r\h[1]。智能灌溉技术的研究和应用体现出显著的生态与经济价值,采用实时监测土壤墒情与环境参数的方式,系统可以精准算出作物的实际需水量,与传统漫灌的方式相比,可节约30%-50%的用水,在干旱缺水的地域,这种节水效果将直接转换成农业生产力的上扬。自动化控制把人力巡查和操作的需求降低了,让单个管理员可经营的农田面积扩大5-8倍,大幅减少生产开支,以商业运营的角度去看,配套的环境调控功能能营造出更适合经济作物生长的微气候环境,好比草莓种植中,精确地控制温差能够让糖分积累提升15%以上,大幅提升农产品的附加产值。该技术的推广依旧会带来广泛的社会效益,在城郊结合地带发展智慧农业园区,能保障城市蔬菜供应稳定,还可依靠技术示范拉动周边农户转变经营模式,物联网灌溉设备的普及对构建农产品溯源体系有促进作用,经由记录生长环境数据提升产品的可信水平,就设施农业这一领域而言,稳定的环境管控可达成反季节种植,让单位土地的年产值提升2-3倍,随着5G网络跟新能源技术的发展,分布式智能灌溉系统将作为偏远地区发展特色农业的有力后盾,这在促进乡村振兴进程中意义重大REF_Ref22666\r\h[2]REF_Ref22698\r\h[3]。本文所设计的依托STC89C52单片机的智能灌溉系统,采用集成土壤湿度传感器、DS18B20温度传感器与光照传感器的方式,建成了完备的环境监测体系,系统采用LCD1602显示屏搭建人机交互界面,可实现手动/自动这两种模式的切换,能依照预设阈值自动管理水泵、补光灯和加热片的运行状态,该设计方案既留存了传统51单片机稳定可靠的特质,还通过模块化设计达成了环境参数的精准把控,为中小型的农田、温室大棚提供了经济又实用的智能灌溉解决方案REF_Ref22764\r\h[4]。1.2国内外研究现状随着现代农业向智能化、精细化方向发展,智能灌溉技术作为精准农业的重要组成部分受到广泛关注。基于51系列单片机的智能农业灌溉系统通过环境参数感知与自动控制相结合,正在改变传统粗放式灌溉模式。近年来,国内外学者在该领域开展了大量研究工作,形成了各具特色的技术路线和解决方案REF_Ref22816\r\h[5]。在国内研究方面,近年来呈现出从基础控制向网络化、智能化发展的趋势。2020年王庐山设计的基于Android手机与单片机的系统创新性地引入WiFi通信模块,通过移动端实现远程控制REF_Ref22865\r\h[6]。2022年孟珩开发的温室自动灌溉系统采用Labview上位机界面,通过多节点土壤湿度监测实现了数据可视化REF_Ref22917\r\h[7]。同年廖静雅团队将光伏技术引入灌溉系统,提出的储能式光伏提水方案为解决缺电地区灌溉问题提供了新思路。这些研究在控制方式多样化和能源利用方面取得了显著进展,但在传感器集成度和本地化智能决策方面仍有提升空间REF_Ref22979\r\h[8]。国外研究则更注重系统的自适应能力和环境友好性。以色列的Netafim公司于2019年推出的智能滴灌系统采用多参数融合算法,实现了灌溉量的动态调整。2021年荷兰Priva公司开发的温室控制系统通过LoRa无线组网技术,将灌溉决策与植物生长模型相结合。美国Cornell大学2022年发表的论文提出基于边缘计算的微型灌溉控制器,其特色在于采用机器学习预测土壤水分变化趋势。这些系统虽然智能化程度较高,但普遍存在硬件成本高昂、不适合小规模农业应用的问题。本文设计的STC89C52单片机系统把国内外技术优点整合在一起,在维系低成本优势的阶段,采用集成土壤湿度、温度和光照三参数的传感方式,实现了更全面覆盖的环境监测,比起同类研究,本系统采用模块化的PCB设计手段,有着硬件结构紧凑、响应速度迅速的特点,特殊设计的双模式控制策略把手动操作的灵活性保留了下来,又实现了阈值触发的自动式调控,在小规模智慧农业应用里体现出显著实用价值。1.3本课题主要研究内容本课题以STC89C52单片机为核心,设计并实现一套智能农业灌溉系统。系统通过集成多种传感器模块和执行机构,实现对农作物生长环境的智能监测与自动控制。主要研究内容包括以下几个方面:1、通过土壤湿度传感器、DS18B20温度传感器和光照传感器实时采集环境参数;2、采用LCD1602显示屏实现传感器采集的数据可视化显示REF_Ref23061\r\h[9];3、设计按键模块实现手动和自动模式切之间换及阈值设置功能;4、在自动模式下,系统通过比较采集值与设定阈值智能控制水泵、补光灯和加热片等执行器的启停;在手动模式下,通过手动按键开启各个执行器。5、设计PCB完成实物制作与完善的调试,测试检查系统在不同工况下的性能和稳定性。

第二章系统方案设计2.1系统分析基于STC89C52单片机的智能农业灌溉系统旨在为现代农业种植提供一个智能化、精准化的环境控制解决方案。该系统通过集成土壤湿度传感器、温度传感器和光照传感器等检测模块,配合水泵、补光灯和加热片等执行机构,实现对农作物生长环境的实时监测与自动调节REF_Ref23113\r\h[10]REF_Ref23172\r\h[11]。为满足现代农业生产的多样化需求,本系统着重考虑了以下几个关键需求维度:1、系统应该具备易用性。系统采用LCD1602显示屏和独立按键构成的人机交互界面,使用户能够直观地查看环境参数并便捷地设置控制阈值。需要具有优秀的人机交互手段,包括菜单逻辑和操作流程,确保即使是缺乏专业知识的用户也能快速掌握系统使用方法REF_Ref23234\r\h[12]。2、系统应该具备实时性。系统需要采用定时中断方式实现多传感器数据的周期性采集,采样间隔可配置为1-60秒,确保环境参数变化的及时捕捉。所有传感器数据均经过数字滤波处理后在显示屏实时刷新,控制指令响应时间控制在200ms以内。同时,系统需要预留了串口通信接口,可扩展无线传输模块实现数据的远程监控,为现代农业物联网应用提供基础支持。3、系统应该具备安全性。系统在硬件电路设计过程中采用了光电隔离、过流保护等措施,确保大功率执行设备与控制系统之间的电气隔离。供电电路需要设计防反接和过压保护,确保系统在复杂农业用电环境下的稳定运行。4、系统应该具备可持续性。系统需要通过多项设计降低能耗并延长使用寿命,需要采用低功耗的CMOS电路设计,在待机状态下整机功耗不超过1W;系统需要采用模块化的硬件设计便于后期维护和功能扩展,所有接口均需要采用标准化连接器,关键部件需要支持热插拔更换,从而降低了系统的维护成本和使用门槛。2.2方案选型2.2.1单片机方案选型方案一:采用AT89S51单片机。AT89S51单片机在工业场景久经考验,凭借其工业级稳定性,能在复杂电磁环境里维持平稳运作,抗干扰能力十分出色,其是基于经典51架构的,相关开发资料堆积如山,极大地拉低了开发的门槛,为开发者供给了足量的参考资源。况且该单片机价格亲民实惠,在成本控制这件事上优势明显,该单片机的4KBFlash存储空间规模较小,难以把大型程序与大量数据存储起来,约束了系统的扩展性发展;128B的RAM容量同样约束了对复杂算法的处理能力,它得依靠专用ISP编程器才可烧录程序,造成开发成本和操作复杂度的上升,其4.0-5.5V这样的工作电压范围不够宽。​方案二:采用STC89C52单片机。STC89C52单片机的8KBFlash存储空间,足以装下相对复杂的程序,符合系统在存储上的需求,512B规格的RAM容量,可对多个传感器所采集的数据进行有效处理,其具有支持串口直接进行程序下载的特性,让开发人员于调试阶段节约大量时间,极大地把开发流程给简化了REF_Ref23270\r\h[13]。工作电压处于3.3-5.5V的范围,在如太阳能供电等场景里兼容性更强,所内置的看门狗定时器,能于系统出现异常之际自动复位,让系统稳定性再上一个台阶,但STC89C52单片机的抗干扰能力跟工业级芯片比起来稍弱,运行速度与AT89S51相当。​综合智能农业灌溉系统的功能需求,STC89C52单片机大容量的存储空间,可保障系统程序与数据完整留存,串口下载功能极大地提升了开发效率,宽电压特性契合太阳能供电的农业环境,STC89C52单片机在各项性能指标上都能契合系统要求,所以把它选为主控芯片。2.2.2显示屏幕方案选型方案一:采用OLED显示屏。OLED显示屏为自发光屏幕,显示效果清晰、色彩鲜艳,能支持图形化界面,可以展示更丰富的信息。其可视角度可达±170°,从各个方向都能清晰观看屏幕内容,响应速度快,能迅速更新显示内容。然而,OLED显示屏的成本偏高,单个价格处于20-50元区间。在处在强光直接照射状态下,屏幕内容看的时候很难看清。在处于高温环境时使用,其寿命会出现大幅的缩减。另外,其在使用时需要借助图形驱动程序,会占用大量系统资源,若长时间呈现固定不变的内容,极易出现烧屏这一现象,使其显示效果下降。方案二:采用LCD1602液晶屏。LCD1602液晶屏价格实惠,仅需5-10元,在强光环境下仍能清晰显示字符。其工作温度范围为-20-70℃,可适应各种各样的复杂环境,驱动程序实现简单,对系统资源的占用不大,不会产生烧屏这一问题,然而LCD1602液晶屏仅支持以字符形式显示,不能呈现图形化内容,可视角度偏小,为±45°,并且需额外的背光供电。综合智能农业灌溉系统的功能要求,LCD1602液晶屏可实现高强度太阳光照射下的高可见性,且拥有低功耗特性,跟OLED屏幕相比,它在农业户外场景应用更恰当,LCD屏幕有效地防止了长时间显示相同画面引发的烧屏现象,LCD1602液晶屏在各项性能指标上都契合显示模块设计要求。2.3系统架构设计根据需求分析的要求,本设计将农智能农业灌溉系统分成单片机主控模块、传感器模块、执行器模块、人机交互模块、电源模块。单片机主控模块选用STC89C52单片机,是整个系统决策和运算的核心。传感器模块集成了HS1101电容式土壤湿度传感器、DS18B20数字温度传感器和光敏电阻构成的光照传感器来获得土壤湿度、温度和光照等环境参数用于执行期控制决策。执行器模块通过继电器控制水泵、PWM调光补光灯和加热片,实现对灌溉、光照和温度的精确调控REF_Ref23309\r\h[14]。人机交互模块采用LCD1602液晶屏和独立按键,提供了直观的操作界面。本系统运用“感知-决策-执行”的三层智能控制架构,各层借助标准化接口实现数据交互。其中感知层负责采集信息。环境监测模块使用HS1101电容式土壤湿度传感器监测土壤湿度,通过DS18B20数字温度传感器测量温度并利用光照传感器测定光照强度REF_Ref23342\r\h[15]。用户输入模块使用按键键盘,满足用户对阈值设置和模式切换的操作需求;控制层主要对感知层收集的数据进行分析和处理。以STC89C52为主控芯片,数据处理单元运用数字滤波算法、异常检测算法对数据进行加工,通过数据运算实现对执行层设备的控制;执行层依据控制层的指令开展相应动作。灌溉执行单元通过24V直流电磁阀控制灌溉作业,搭配过流保护电路,防止电流过大对设备造成损害REF_Ref23391\r\h[16]。环境调节单元借助PWM调光补光灯,实现0-100%的亮度调节,满足作物对光照的需求,利用加热片调控环境温度。状态指示单元采用LCD1602显示屏,向用户直观展示系统状态。系统架构图如下图所示:图STYLEREF1\s2.1系统三层智能控制架构图、

第三章系统硬件设计3.1最小单片机系统在智能农业灌溉系统的硬件设计中,选择一个功能强大、易于集成且成本效益高的主控芯片至关重要。本系统采用STC89C52单片机作为主控制器,其最小系统电路设计针对农业灌溉工作场景进行了优化。复位电路采用10kΩ上拉电阻与10μF电解电容构成典型RC复位网络,配合手动复位按键实现可靠的系统重启功能,确保在田间电压波动或强干扰情况下能快速恢复工作。时钟电路选用11.0592MHz晶振配合30pF负载电容(CX1、CX2),该参数设计有效平衡了起振速度和频率稳定性,实测在-20℃~60℃环境温度范围内频率偏差小于±1Hz,为传感器数据采集和PWM控制提供精准时序基准REF_Ref21274\r\h[17]。PCB布局时将晶振电路与单片机引脚距离控制在5mm以内,并采用包地处理,使系统在强电磁干扰环境下仍能稳定运行,为智能灌溉控制提供可靠硬件基础。图3.SEQ图\*ARABIC\s11STC89C52最小单片机系统电路图3.2传感器电路设计本设计传感器部分采用温湿度传感器和光照强度传感器,对土壤湿度、空气温度以及光照强度展开实时监测。收集到的数据一方面在LCD显示屏上实时显示,另一方面,52单片机将根据收集的数据,对执行器运行做精准判断及控制,以此实现对农作物生长环境的智能调控。3.2.1土壤湿度传感器土壤湿度检测采用HS1101电容式湿度传感器配合信号调理电路,传感器电容值变化范围从162pF到202pF,对应着相对湿度从0%到100%的范围,该传感器的输出通过LM358组成的振荡电路,转换成为0-5V模拟电压信号,经过10kΩ可调电阻进行量程校准完毕后,接入ADC0832的CH0通道。ADC0832采用单端输入模式进行配置,参考电压由TL431精密稳压源输送稳定的2.5V基准,保证在电源产生波动时,测量精度依然得以维持,把采样速率设为10次/秒,采用数字均值滤波算法处理过后,系统能做到±3%的湿度测量精度要求。图3.2土壤湿度传感器电路图3.2.2光照传感器光照强度检测采用光敏电阻与精密电阻构成分压电路,光敏电阻阻值范围从5kΩ(强光)至1MΩ(黑暗)。分压信号经OP07运放构成的电压跟随器缓冲后,送入ADC0832的CH1通道。电路设计中特别加入照度补偿网络,通过10kΩ多圈电位器调节测量曲线的线性度,使系统在0-100klux范围内保持良好的线性响应。ADC0832采用差分时钟工作模式,时钟信号由单片机P1.5引脚提供,有效抑制高频干扰。实测表明,该设计在温室环境下的光照测量误差小于±5%,完全满足农作物生长监测需求。图3.3光照传感器电路图ADC0832与STC89C52的接口设计采用四线制串行通信(CS、CLK、DI、DO),所有信号线均串联100Ω电阻并并联30pF电容进行阻抗匹配。芯片电源引脚就近布置10μF钽电容和0.1μF陶瓷电容组成的去耦网络,有效抑制数字噪声干扰。在PCB布局时,将ADC0832布置在传感器接口与单片机之间的位置,模拟信号走线长度控制在15mm以内,且严格避免与数字信号线平行走线。该设计经EMC测试,在电动机等大功率设备工作时仍能保持稳定的AD转换性能。图3.4ADC0832电路图3.2.3温度传感器温度检测选用DS18B20数字传感器,其单总线接口仅需连接单片机一个I/O口,节省硬件资源REF_Ref23466\r\h[18]。传感器采用不锈钢封装,测温范围-55℃~+125℃,精度±0.5℃满足农业应用需求。电路设计时在数据线并联10kΩ上拉电阻,有效抑制信号反射。为提升抗干扰能力,总线走线长度控制在3米以内,并采用双绞线传输。实际测试表明,在温室高温高湿环境下,系统能稳定实现0.1℃分辨率测温。图3.5温度传感器电路图3.3执行器电路设计执行器电路设计分为水泵电路设计和补光灯电路设计以及加热器电路设计,其中水泵驱动电路采用5V继电器(TX2_5V)控制直流电磁阀,实现了通过单片机的小电流控制外设REF_Ref24373\r\h[19]。电路设计中加入2N7002三极管作为压控小信号开关,并在继电器触点并联B5819W作为反向恢复二极管,它能够有效地保护开关元件免受反向电压的冲击,提升了电源电路的稳定性和可靠性。实际测试中,驱动电流可达10A,满足连续工作需求。为保护水泵电机。图3.6水泵驱动电路图补光灯驱动模块采用GPIO口上接4.7KΩ电阻控制LEDB二极管发光,同时采用PWM信号频率设置为1kHz以避免可见闪烁。温度监测显示,在满载工作状态下二极管温升不超过40℃,散热设计满足长期运行要求。图3.7水泵驱动电路图加热片控制电路使用2N7002三极管放大单片机I/O口信号,GPIO口后接1kΩ电阻,实现对加热片的电流放大控制。实测表明,该设计可实现0.1℃精度的温度控制,响应时间小于2秒,完全满足温室加热需求。所有执行机构电源线采用独立走线,线径不小于1.5mm²,并设置单独的接地回路。图3.8加热片驱动电路图3.4人机交互模块电路设计在基于51系列单片机的智能农业灌溉系统中,人机交互模块作为用户与系统沟通的重要桥梁,主要由LCD屏幕和按键电路协同实现直接的人机交互功能。LCD屏幕选用高对比度、宽视角的LCD1602型号。该型号的模块能够清晰展示系统实时运行状态、当前温湿度数据、光照强度数值以及灌溉工作模式等关键信息,使用户一目了然掌握系统情况。电路设计图如下图所示。图3.9LCD电路图按键电路配备4个功能按键,布局合理且触感舒适,方便用户进行操作。用户可通过这些按键灵活设置温湿度、光照阈值,轻松实现阈值的精细调整,以适配不同农作物在不同生长阶段对环境条件的需求。该人机交互模块具有轻量级、可移植、灵活和易于使用的显著特点,无论是在小型家庭农场,还是大规模农业种植区域,都能便捷部署与应用。在实际应用场景中,考虑到农业环境的复杂性,尤其是潮湿环境可能对按键操作产生影响,系统通过软件实现二次防抖算法和长按识别功能。二次防抖算法有效消除因按键抖动引发的误操作,长按识别功能则为用户提供更高效的操作方式。双重保障机制确保按键在潮湿环境中仍能可靠工作,极大提升了系统操作的稳定性与准确性,为智能农业灌溉系统的稳定运行提供有力支持。图3.10按键电路图

第四章软件程序设计4.1开发环境搭建本系统的软件开发,主要通过现代化的编译环境KeillμVision5集成开发环境进行代码编写和Hex文件烧录。该环境完美支持STC89C52单片机的开发需求。在软件全局设置的具体配置工作中,通常会把内存模式设定为Small模式,开始Level8的优化登记,同时启用代码大小优化,来确保生成后写入单片机的Hex文件不超过8KB,这个大小也是Flash存储空间能支持的最大容量。在程序架构设计上,采用自顶而下的设计方法结合模块化编程方式,将各个传感器、执行期等外设的控制代码封装在对应的.c/.h文件中,通过函数的方式进行调用,在main()函数的循环体中可以按照需求进行灵活的组合,大大的提升了开发的效率。之后同过将传感器驱动、控制算法、人机交互等核心功能封装为独立的.c/.h文件,通过串口助手功能,实时监测系统运行状态,以及对于代码开展调试工作。考虑到整个项目的开发周期横跨2-3个月,需要一种现代化的代码版本管理工具对于硬件代码进行管理,以满足开发过程中版本提交、分支开发、代码回溯的需要,最终选择了Git实现版本控制。通过不断的对代码算法进行优化,最终生成的Hex文件经过优化后仅占用6.7KBFlash空间,RAM使用量控制在400字节以内,为后续功能扩展预留了充足的空间。4.2软件设计方案软件主程序流程图如图4.1,系统运行时先对各模块进行初始化配置,连接外设成功后,读取传感器数据并显示在LCD显示屏上。在手动模式下,接收人机交互模块的指令,根据指令执行补光、补水降温等功能,在自动模式下,根据预设的环境参数阈值判断执行补光、补水降温等功能。通过按键可以实现手动和自动模式的切换和,环境参数阈值的录入。系统主流程从初始化开始,依次完成LCD显示、I/O口、定时器和中断的初始化后进入主循环。在主循环中,系统会先控制LCD显示基本信息。系统持续读取水位、光照和温度传感器数据即数据采集工作,之后人机交互结果或者保持当前模式,根据当前手动/自动模式执行相应控制逻辑。在自动模式下通过比较传感器数据与预设阈值自动控制灌溉、加热、补光等执行器;在手动模式下则响应按键操作直接控制设备。同时系统实时监测模式切换按键,通过LCD动态显示系统状态和参数,并支持通过功能键进入各参数设置界面(温度/光照阈值、水位上下限、运行模式)。每次循环结束后加入延时来保持系统的稳定性。具体流程图如下所示:图4.1系统总流程图4.3数据采集程序设计智能控制系统通过传感模块的传感器采集农作物生长环境的光照强度和空气温湿度,系统通过定时轮讯的方式控制传感器数据采集的工作,按按照光照、温度、湿度的顺序,依次读取传感器采集的数据并进行数据转换,为后续的执行器控制提供决策数据。具体流程图如下图所示。图4.2数据采集流程图每一种传感器的数据采集和数据转换具体方法如下:土壤湿度的采集。系统使用ADC0832模数转换器采集水位传感器的模拟量输出,再转换为数字信号REF_Ref24592\r\h[20]。52单片片机通过以下引脚与ADC0832通信:1、ADCS(P1^6)-片选信号2、ADDI(P1^2)-数据输入3、ADDO(P1^1)-数据输出4、ADCLK(P1^0)-时钟信号采集程序通过Adc0832()函数实现,水位换算公式为Water=(ad_data0*10)/14:ad_data0=Adc0832(0);//采集通道0的数据Water=(ad_data0*10)/14;//转换为百分比水位if(Water>=100)Water=100;//限制最大值if(Water<=0)Water=0;//限制最小值光照强度的采集。通过ADC通道1的数据进行校准后完成数据的获取。核心代码如下:ad_data1=Adc0832(1);//采集通道1的数据Light=ad_data1-30;//校准光照强度if(Light<=0)Light=0;//限制最小值温度的采集。系统使用DS18B20数字温度传感器,通过单总线协议通信。52单片机通过P1^7(DQ)引脚与DS18B20通信:EA=0;//禁止中断read_temp();//读取温度EA=1;//允许中断其中read_temp()函数实现了复位DS18B20、发送命令、读取温度值的完整过程,并将结果存储在全局变量tvalue中,通过tvalue*(0.0625)计算得到真实的温度信息。温度正负标志存储在tflag中。核心代码如下:read_temp(){ uinta,b; ds1820rst(); ds1820wr(0xcc); ds1820wr(0x44); ds1820rst(); ds1820wr(0xcc); ds1820wr(0xbe); a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a;if(tvalue<0x08ff) tflag=0; else { tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.0625); return(tvalue);}4.4数据显示程序设计智能灌溉系统的LCD屏幕主要显示传感模块采集的农作物生长环境参数和系统工作状态、当前工作模式,以便用户可以直观的考察农作物环境是否合适生长,及时进行调整。基本设计思路是利用sprintf函数格式化各类数据为字符串,再通过LCDDispString函数把这些字符串显示在LCD屏幕的指定位置。显示水位。sprintf函数把水位值Water格式化为字符串"W=xxx",这里xxx是水位值,宽度为3个字符。(char*)z是将z强制转换为字符指针类型。LCDDispString(0,1,z)函数把格式化后的水位字符串显示在LCD屏幕第0列、第1行的位置。显示光强。sprintf函数把光照强度值Light格式化为字符串"L=xxx",xxx是光照强度值,宽度为3个字符。LCDDispString(0,2,z)函数把格式化后的光照强度字符串显示在LCD屏幕第0列、第2行的位置。显示温度。借助tflag的值判断温度正负。若tflag为1,代表负温度,格式化字符串为"T:-xxC";反之,格式化字符串为"T:xxC"。LCDDispString(6,1,z)函数把格式化后的温度字符串显示在LCD屏幕第6列、第1行的位置。显示系统工作状态。若HOT为1,在LCD屏幕第6列、第2行显示"HOT",否则显示""。若GDQ为1,在LCD屏幕第11列、第2行显示"WATER",否则显示""。显示当前控制模式。若mode为0,在LCD屏幕第12列、第1行显示"HAND"(手动模式);反之,显示"AUTO"(自动模式)。核心代码如下:sprintf((char*)z,"W=%3d",Water);LCDDispString(0,1,z);//显示光照强度sprintf((char*)z,"L=%3d",Light);LCDDispString(0,2,z);//显示温度if(tflag==1)//负温度{sprintf((char*)z,"T:-%2dC",tvalue);}else//正温度{sprintf((char*)z,"T:%2dC",tvalue);}LCDDispString(6,1,z);//显示系统工作状态if(HOT==1)LCDDispString(6,2,"HOT");elseLCDDispString(6,2,"");if(GDQ==1)LCDDispString(11,2,"WATER");elseLCDDispString(11,2,"");//显示当前控制模式if(mode==0)LCDDispString(12,1,"HAND");elseLCDDispString(12,1,"AUTO");图4.3数据显示程序流程图4.5环境控制参数调节程序设计本文研究的智能农业灌溉系统可针对农作物生长环境的土壤湿度、光照强度和空气温度进行调整使农作物生长在适宜的环境中。系统实现了两种控制模式:手动控制和自动控制:手动控制模式(mode=0)下,用户可通过按键直接控制各个执行设备。核心代码为:if(KEY2==0){while(KEY2==0);GDQ=~GDQ;}//控制灌溉系统if(KEY3==0){while(KEY3==0);HOT=~HOT;}//控制加热系统if(KEY4==0){while(KEY4==0);LED0=~LED0;}//控制LED照明通过三个按键检测来控制对应GPIO口输出信号达到执行器各模块工作的效果。具体流程图如下所示:图4.4手动模式流程图2、自动控制:用户开启自动模式后在终端选择农作物品种或者创建自己的农作物阈值参数时,终端下发相应的阈值信息,STM32接收后与当前环境参数进行比较,当其超过阈值时,执行对应操作进行调整。图4.5自动模式程序流程图

第五章测试与分析5.1数据采集功能测试设备开启后,等待系统初始化完成。观察LCD1602显示屏上显示的土壤湿度、温度和光照强度值,确保数据显示清晰、无乱码。针对于各个传感器的数据采集和显示部分开始进行测试。1、土壤湿度传感器测试:把土壤湿度传感器置于干燥环境中,读取LCD1602显示屏上显示的湿度值,该值接近传感器的最小量程。把传感器放入湿润的土壤中,再次读取湿度值,此值显著增大。湿度值的变化情况符合预期。由此可见,土壤湿度传感器数据采集正常。2、温度传感器DS18B20测试:用手握住DS18B20传感器,观察LCD1602显示屏上的温度值,温度值逐渐上升。把传感器放置在阴凉处,温度值应逐渐下降。由此可见,温度传感器数据采集正常。3、光照传感器测试用手遮挡光照传感器,观察LCD1602显示屏上的光照强度值,该值减小。将手从从光照传感器上拿开,并把传感器暴露在强光下,光照强度值增大。光照强度值的变化完全符合预期。由此可见,光照传感器数据采集正常。图5.1数据采集测试图5.2自动控制功能验证重启系统,待系统初始化完成后通过按键将系统设置为自动模式,确保LCD显示屏显示为AUTO字样,代表处于自动模式。水泵控制测试:设置土壤湿度阈值,将土壤湿度传感器置于湿度低于阈值的环境中,观察水泵是否自动开启。逐渐增加土壤湿度,当湿度高于阈值时,观察水泵能自动停止。由此可见。水泵控制功能一切正常。图5.2水泵自动控制测试图2、补光灯控制测试:设置光照强度阈值,用手遮挡光照传感器,使光照强度低于阈值,观察到补光灯可以自动开启。移开遮挡物,使光照强度高于阈值,观察到补光灯能自动关闭。由此可见。补光灯控制功能一切正常。图5.3补光灯自动控制测试图3、加热片控制测试:设置温度阈值(20℃),将温度传感器置于温度低于阈值(20℃)的环境中,观察加热片已经自动开启(加热片功效过高,用红灯代替了,可以看到发出红灯)。逐渐升高温度,当温度高于阈值(20℃)时,观察加热片已经自动停止。由此可见,加热片控制功能一切正常。图5.4加热片自动控制测试图5.3手动控制功能测试重启系统,待系统初始化完成后通过按键将系统设置为自动模式,确保LCD显示屏显示为HandMode字样,代表当前系统已处于手动模式。图5.5手动控制模式测试图接下来,通过按钮key1、key2、key3上控制外设的开启。通过点击按钮key1,可以开启水泵,观察到水流能正常的从出水口喷出,符合设计要求图5.6手动开启水泵测试图通过点击按钮key2以开启补光灯,可以观察到,单片机上的补光灯设备可以正常开启,发出亮光,符合设计要求。图5.7手动开启补光灯测试图通过点击按钮key3以开启加热棒,可以观察到,单片机上LCD屏幕上的HOT字样出现,说明模拟加热片已经开始工作,符合设计要求。

图5.8手动开启加热棒测试图第六章结论本文设计并实现了一套基于STC89C52单片机的智能农业灌溉系统,旨在处理传统农业生产及发展中出现的水资源浪费严重的情况,本系统通过整合多种传感器与执行机构,最终实现了依据农作物生产环境参数的智能农业灌溉方案,为小规模的农业生产提供了一种经济、实用、可靠的设计方案。在硬件设计方面,系统采用模块化的结构,由主控模块、传感器模块、执行器模块加上人机交互模块构成,选用STC89C52单片机充当主控芯片,其8KB的Flash存储空间、512B的RAM容量,契合了系统程序存储和数据处理的需求,开发流程因串口直接下载功能而得到简化。传感器模块由HS1101电容式土壤湿度传感器、DS18B20数字温度传感器,再加上由光敏电阻组成的光照传感器构成,可以精准采集环境参数,执行器模块凭借继电器对水泵、PWM调光补光灯和加热片加以控制,达成对灌溉、光照和温度的精准把控,人机交互模块采用成本较低、可适应户外环境的LCD1602液晶屏和独立按键,提供了直观的操作界面。软件设计基于KeilμVision5开发环境,采用自顶而下的设计思路和模块化编程方式,实现了数据采集、处理、显示和自动控制等功能。系统采用手动和自动两种工作模式:手动模式下,用户可凭借按键直接控制执行装置;在自动模式里系统把传感器数据与预设阈值作一番比较,智能调控灌溉、补光及温控设备,数据采集程序做到测量精度的提高,控制程序实现了快速响应和稳定运行。经过实际测试,系统各项功能均达到预期目标。传感器模块可精准采集环境参数,测量误差在允许范围内;执行器模块响应迅速,控制精度满足农业应用需求;人机交互界面操作简便,显示清晰。在自动模式下,系统可根据环境变化迅速对执行设备作出调整。未来,系统可进一步扩展无线通信模块,实现远程监测及数据上传;增加更多别样类型的传感器,诸如CO₂浓度传感器这类,实现更全面覆盖的环境监测;采用机器学习的算法,优化操纵策略,增进系统的智能水平。本系统的成功实施为智能农业技术的推广应用提供了有益参考,对促进农业现代化和可持续发展具有重要意义。

参考文献FloreaA,PopaD,MorariuD,etal.Digitalfarmingbasedonasmartanduser‐friendlyIoTirrigationsystem:Aconifernurserycasestudy[J].IETCyber‐PhysicalSystems:Theory&Applications,2023,9(2):150-168.GEA,BalaJG.IoTandML‐basedautomaticirrigationsystemforsmartagriculturesystem[J].AgronomyJournal,2023,116(3):1187-1203.GarcíaL,ParraL,JimenezMJ,etal.IoT-BasedSmartIrrigationSystems:AnOverviewontheRecentTrendsonSensorsandIoTSystemsforIrrigationinPrecisionAgriculture[J].Sensors,2020,20(4):1042.林菁,王骥,沈玉利,等.基于嵌入式技术智能灌溉系统设计[J].通信技术,2009(5):5.DOI:10.3969/j.issn.1002-0802.2009.05.037.HongL,QingL.ConstructionandApplicationofIntelligentAgriculturalGreenhouseIrrigationSystem[J].JournalofPhysics:ConferenceSeries,2021,2005(1):王庐山.基于Android手机与单片机的智能农业灌溉系统设计[J].南方农机,2020,51(11):2.DOI:CNKI:SUN:NFLJ.0.2020-11-010.孟珩.基于单片机的温室自动灌溉系统设计[J].装备制造技术,2022(9):248-251.廖静雅,温昀妍,张庆忠.基于51单片机的光伏灌溉系统研究[J].河北农机,2022(24):48-50.刘明真,陈鸿.基于单片机智能节水灌溉系统的设计[J].学术问题研究,2010,6(1):6.DOI:CNKI:SUN:XSWT.0.2010-01-018.陈彦达,张红叶.物联网技术在农业智能灌溉系统中的设计与应用[J].新农民,2025,(04):48-50.HaichengW,ShanpingW,QifanD,etal.IntelligentIrrigationSystemforAgriculturalGreenhouseAdaptivetoCropGrowthLaw[J].JournalofElectronicResearchandApplication,2025,9(1):113-120.王宁宁.基于物联网的鲍鱼菇大棚远程环境监控与预测系统[D].华中师范大学,2023.DOI:10.27159/ki.ghzsu.2023.000197.刘子杰,段元梅.基于单片机的智能电子秤设计[J].电脑编程技巧与维护,2023,(04):127-129.DOI:10.16184/prg.2023.04.051.何琪,田新志,罗小琬,等.基于Arduino的智慧农场监控系统设计[J].电子制作,2024,32(16):86-89.DOI:10.16589/11-3571/tn.2024.16.011.耿硕彪,张云瀚,田子安,等.都市阳台农业种植设备系统设计[J].河北农机,2022(24):75-78.张林峰,戴玉华,李宇豪,等.一种农业种植大棚的储水装置:CN202021255165.0[P].CN212677916U[2025-03-04].周鹏.基于STC89C52单片机的温度检测系统设计[J].现代电子技术,2012,35(22):10-13.DOI:10.16652/j.issn.1004-373x.2012.22.037.张新荣,张智尧,常波,等.智能老人健康监测与定位系统设计[J].工业仪表与自动化装置,2023,(02):13-17+50.DOI:10.19950/61-1121/th.2023.02.003.张祎文,李慧,张雯宁,等.一种新型智能化节水节能灌溉系统设计[J].科技创新与应用,2023,13(20):36-40.DOI:10.19981/j.CN23-1581/G3.2023.20.008.黄佳华,何东源,黄成威,等.基于单片机的自动浇花系统设计[J].电子制作,2024,32(07):77-79+67.DOI:10.16589/11-3571/tn.2024.07.021.附录A电路原理图附录B主程序代码#include"LCD1602.h"#include"stdio.h"#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbitKEY1=P2^0;sbitKEY2=P2^1;sbitKEY3=P2^2;sbitKEY4=P2^3;sbitBEER=P1^4;sbitGDQ=P1^3;sbitLED0=P1^5;sbitHOT=P2^4;sbitDQ=P1^7;inttvalue;//温度值uchartflag;//温度正负标志sbitADCS=P1^6;sbitADDI=P1^2;sbitADDO=P1^1;sbitADCLK=P1^0;intad_data0=0,ad_data1=0;voiddelay_ms(unsignedinttim){ unsignedinti,j; for(i=0;i<tim;i++) { for(j=0;j<1000;j++) { for(j=0;j<1000;j++); } }} /***************************ds18b20程序****************************/voiddelay_18B20(uinti)//延时1微秒{while(i--);}voidds1820rst()/*ds1820复位*/{ DQ=1;//DQ复位 delay_18B20(3);//延时 DQ=0;//DQ拉低 delay_18B20(90);//精确延时大于480us DQ=1;//拉高 delay_18B20(20);}uchards1820rd()/*读数据*/{ uchari=0; uchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay_18B20(9); }return(dat);}voidds1820wr(ucharwdata)/*写数据*/{ uchari=0; for(i=8;i>0;i--) { DQ=0; DQ=wdata&0x01; delay_18B20(9); DQ=1; wdata>>=1; }}read_temp()/*读取温度值并转换*/{ uinta,b; ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a;if(tvalue<0x08ff) tflag=0; else { tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.0625); return(tvalue);}/************读ADC0832函数************///采集并返回ucharAdc0832(unsignedcharchannel)//AD转换,返回结果{uchari=0;ucharj;uintdat=0;ucharndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat);//returnadk}voidSendStr(unsignedchar*s);/*串口初始化*/voidInitUART(void){SCON=0x50; //SCON:模式1,8-bitUART,使能接收TMOD|=0x20;//TMOD:timer1,mode2,8-bit重装 PCON=0x00;TH1=0xFD;//TH1:重装值9600波特率晶振11.0592MHz TL1=0xFD;//TH1:重装值9600波特率晶振11.0592MHzTR1=1;//TR1:timer1打开ES=1;//打开串口中断 EA=1;//打开总中断,num=0,v=0}charz[16];intKEY1_NUM=0,S_temp_L=30,S_light=80,S_Water_L=30,S_Water_H=80,KEY4_NUM=0;intWater=0,Light=0,mode=0;voidmain(){ inti=0; TMOD|=0x01;EA=1; ET0=1; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=1; EX0=1;//外部中断0开IT0=1;//电平触发LCDInit(); LED0=1; BEER=0; GDQ=0;HOT=0; while(1) { i++; i%=10; if(KEY1==0) { while(KEY1==0); KEY1_NUM++; KEY1_NUM%=6; LCDWriteCommand(0x01);/*清除屏幕显示*/ } switch(KEY1_NUM) { case0: //*********水位读取***************//ad_data0=Adc0832(0); Water=(ad_data0*10)/14; if(Water>=100)Water=100; if(Water<=0)Water=0; sprintf((char*)z,"W=%3d",Water);//合并参数字符串 LCDDispString(0,1,z); delay_ms(20); //*********光照读取***************//ad_data1=Adc0832(1); Light=ad_data1-30; if(Light<=0)Light=0; sprintf((char*)z,"L=%3d",Light);//合并参数字符串 LCDDispString(0,2,z); EA=0; read_temp();//读取温度 EA=1; tvalue=tvalue; if(tflag==1)//负温度 { sprintf((char*)z,"T:-%2dC",tvalue);//合并参数字符串 } else//正温度 { sprintf((char*)z,"T:%2dC",tvalue);//合并参数字符串 } LCDDispString(6,1,z); //********报警***************//if(Water>=S_Water_H) { BEER=1; } else { BEER=0; } //***********设置模式*****************// switch(mode) { case0: LCDDispString(12,1,"HAND"); if(KEY2==0){ while(KEY2==0);GDQ=~GDQ;} if(KEY3==0){ while(KEY3==0);HOT=~HOT;} if(KEY4==0){ while(KEY4==0);LED0=~LED0;} break; case1: LCDDispString(12,1,"AUTO"); if(Water<S_Water_L){GDQ=1;} if(Water>S_Water_H){GDQ=0;} if(tvalue<S_temp_L){HOT=1;} else{HOT=0;} if(Light<=S_light){LED0=0;} else{LED0=1;} break; } //************显示加热****************//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论