网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 读书心得体会
  • 培训心得体会
  • 军训心得体会
  • 教师心得体会
  • 工作心得体会
  • 学习心得体会
  • 百花范文网 > 心得体会 > 读书心得体会 > 【基于ZigBee的智慧农业监控系统的设计与实】

    【基于ZigBee的智慧农业监控系统的设计与实】

    时间:2021-09-17 11:11:35来源:百花范文网本文已影响

    基于ZigBee的智慧农业监控系统的设计与实现 Design and implementation of intelligent agricultural monitoring system based on ZigBee 摘 要 众所周知,我国是一个农业大国,但是由于我国各个地域的环境、温湿度和气候都有所差异,因此传统农业已经满足不了当下农业的生产要求,因此,实现传统农业向现代农业发展转变是如今我国农业发展的必然趋势。然而ZigBee技术的出现,实现了高效率大范围的数据信息的采集,还有高效率的数据传输和分析,因此本论文为了提高农业生产的效率,保证农作物的生长,减轻人工劳动量,发展智能化农业,然而设计了一种基于ZigBee无线传感器网络的智慧农业监控系统,采用检测温度、湿度、光线等等的传感器对农业的空气温度、光照强度、土壤温湿度等等数据信息的采集、传输和处理,并且可以在上位机和屏幕上同时显示各个参数的数据,还可以在上位机设置控制的参数数值范围,从而实现对农业的精确性、实时性和可靠性监控。

    关键词:ZigBee;智能农业;
    传感器;
    数据传输 Abstract From ancient times to the present, it is well known that China is a big agricultural country, but due to differences in the environment, temperature, humidity and climate of various regions in China, traditional agriculture can no longer meet the current agricultural production requirements. Therefore, the transformation of traditional agriculture to modern agriculture has been realized. It is an inevitable trend of China's agricultural development. However, the emergence of ZigBee technology has realized the collection of high-efficiency and large-scale data information, as well as high-efficiency data transmission and analysis. Intelligent, but designed a smart agricultural monitoring system based on ZigBee wireless sensor network, using sensors that detect temperature, humidity, light, etc. to collect agricultural air temperature, light intensity, soil temperature and humidity, etc. data information, Transmission and processing, and can display the data of each parameter on the host computer and the screen at the same time, and can also set the parameter value range of the control on the host computer, so as to realize the accuracy, real-time and reliability monitoring of agriculture. Key words:ZigBee; Intelligent agriculture; The sensor; The data transfer 目 录 第一章 绪论1 1.1 研究背景目的和意义1 1.2 国内外研究现状1 1.3 论文总体结构2 第二章 系统功能设计方案3 2.1 系统需求分析3 2.2 系统功能分析3 2.3 系统方案设计3 2.3.1 ZigBee无线技术4 2.3.2 ZigBee 芯片5 2.3.3 温度传感器6 2.3.4光敏电阻传感器7 2.3.5 土壤湿度传感器8 2.3.6 其他器件9 2.4 本章小节11 第三章 系统硬件设计12 3.1 硬件开发环境12 3.2 硬件模块原理图设计12 3.2.1电源输入电路13 3.2.2电源稳压模块13 3.2.3 CC2530模块14 3.2.4 LED指示灯14 3.2.5 接口电路15 3.2.6驱动电路17 3.2.7传感器模块18 3.2.8按键模块19 第四章 系统软件设计20 4.1下位机软件设计20 4.2 上位机软件设计21 4.3 系统模块实现23 4.3.1串口组件的初始化23 4.3.2 串口组件的检测23 4.3.3 串口组件的按键实现24 4.3.4 串口组件发送函数24 4.3.5 串口接受处理函数24 4.3.6 串口计数函数25 4.3.7 串口更新函数25 4.3.8上位机界面函数25 4.3.9上位机命令声明26 第五章 系统测试结果分析27 第六章 总结与愿望29 参开文献30 致谢 第一章 绪论 1.1 研究背景目的和意义 众所周知,我国农业生产一直是我国第一大支柱产业,截止到2019年,我国的耕地面积达到138万平方公里,占全世界的8.80%。随着物联网等高新技术的蓬勃发展,我国农业从最初的原始生态农业发展到了传统农业,然而近几年智能时代的飞速发展,我国传统农业也正在加快向现代农业转型,智慧农业将成为现代农业未来发展的趋势。然而我国各地域都有环境气候的差异,季候的过渡变化也对农作物的生长有很大影响,传统农业需要消耗大量的劳动力,因此为了提高农业生产的效率,保证农作物不受环境气候影响正常生长,减轻人工劳动量,本文设计了一种基于ZigBee无线传感器网络的智慧农业监控系统,采用温度、湿度、光线传感器等等系统实现了对农作物的空气温度、光照强度、土壤温湿度等等数据信息的采集、传输和处理,实现对农业的智能化监控处理。

    以下为本系统的主要特点特征:
    (1) 精确性:通过传感器对农作物的空气温度、光照、土壤湿度等等进行数据信息采集,并且对数据进行多次测定,观察测定数值的变化程度,数值结果的精密度越高,表现了测定的重复性和再现性,实现对农作物生产的精确数据处理。

    (2) 实时性:24小时不停歇地对农作物进行监控,在某个时刻或某个时间内搜集农业外部环境信息,并及时作出检测处理。

    (3) 高效性:在如今物联网技术和高新技术的飞速发展下,智慧农业监控系统更能对农业进行高效率地监测处理,使农作物提高质量和产量。减轻农业人员劳动力。

    1.2 国内外研究现状 上下五千年,中华文明源远流长,我国是一个历史悠久的发展大国,早在两千多年前,我国就有蔬菜和花卉等等的温室栽培技术。而且在20世纪30年代,我国再冬季时,某些地区已经利用“日光温室”生产新鲜的蔬菜。但是当时的这种技术只能维持某些水果和蔬菜的生长,具有局限性。然而在20世纪80年代,我国技术人员从外国发达国家温室控制技术上吸收经验,并在人工气候室中掌握了微机控制技术。90年代末,我国开发了一种综合性极强的蔬菜温室监测系统。目前,我国的智能农业自动化技术已经得到了很大的发展。

    截止如今,大部分中国人都还不清楚国外对温室环境控制技术的研究是否较早并且发展很迅速。早再1970年代,他们就开始使用模拟仪表盘来收集农业信息并对其数据进行记录和控制。然而在1980年代后期,其发明了分布式控制系统。在1990年代,在多因子环境控制系统中,采用模式控制等先进技术对农业进行自动化控制。目前,世界各国的温室控制技术也发展迅速,多因子综合控制系统不断完善,逐渐向自动化发展。

    1.3论文总体结构 本系统将采用普遍性最高的计算机编程C语言和开发性极强的C#语言,基于C语言,结合ZigBee无线传感网络技术,选择常用的协议栈Zstack-CC2530,运用CH340SER上位机进行记录处理数据,减轻系统所占用的资源,实现开开发的效率化。

    本论文的智慧弄姑爷监控系统将分为6章,下列为论文中各章节的主要内容概述。

    (1) 第一章节为论文的绪论,简要阐述了智慧农业监控系统的研究目的背景、意义和国内外就研究现状,以及本论文的大概总体结构叙述。

    (2) 第二章节为系统方案设计,主要阐述了本系统所采用的相关技术,以及对这些技术框架进行介绍选择。

    (3) 第三章节为系统的硬件设计,通过硬件PCB原理图设计,分析说明各个硬件模块的功能结构设计。

    (4) 第四章节为系统的软件设计,主要分析上位机和下位机软件代码的实现,对各种驱动进行解释说明。

    (5) 第五章节为系统的测试与分析,主要叙述了各个模块的实现和运行测试,以及总体测试运行的结果分析。

    (6) 第六章节为本系统的总体概述与愿景,也是本文的结尾。本章主要对全文进行总结,并展望了未来的系统优化。。

    第二章 系统功能方案设计 2.1 系统需求分析 针对第一章节对智慧农业监控系统的目的意义和发展现状,将做出以下2.2小姐的功能设计。由于功能设计在项目研发中起到了主导性的作用。是项目产品的标志,因此本系统的功能设计是该系统设计必不可少的一部分,也是项目产品最终的测试是否达到理想预期效果的标准。因此本节主要提出无线控制功能、水泵自动控制功能、风扇自动控制功能等功能。

    2.2 系统功能设计 无线控制功能可以实现无线控制端对农作物错所处环境的光照强度、温度、土壤湿度进行模式控制、手动控制等等功能。因此无线控制功能,选取ZigBeeCC2530,采用光敏电阻5516传感器对所处环境的光照进行采集与处理。其中采集环境中温度的时候,采用温度传感器DS1820,实时地采集和处理,并在温度过高时启动风扇降温。然而,水泵自动控制功能,通过YL-69土壤湿度传感器对农产品所在的土壤湿度进行检测,当湿度低于阈值时,启动水泵往土壤里注水。然而,除了自动控制模式外,还有手动控制功能,可以手动开启关闭水泵和风扇。除此之外,还可以通过上位机对温度、土壤湿度、光照的阈值进行修改,切换自动模式和手动模式,也可以通过下位机ZigBee协调器进行按键修改切换自动和手动,以及阈值数据。

    2.3 系统方案设计 本系统总体设计方案如图2.1所示,主要分为三个部分:ZigBee终端、ZigBee协调器和上位机,如图左半部分为ZigBee终端部分,包含光敏电阻传感器、温度传感器、土壤湿度传感器、水泵和风扇,而ZigBee协调器终端包括了功能OLED屏幕和控制按键。然而ZigBee终端和ZigBee协调器之间是采用ZigBee无线通信连接。

    图2.1 系统方案图 2.3.1 ZigBee无线技术 众所周知,随着如今智能无线时代的飞速发展,WiFi、蓝牙、ZigBee等等的无线通信技术已经融入了我们,是生活中不可缺少的一部分。WiFi无线技术在当今社会,主要用于无线局域网的建立与路由功能,其具有高速、覆盖范围广、支持多个用户同时使用的特点。因此,其功耗是非常大的,而且WiFi的软件实现难度较高、系统成本较高,因此不采用WiFi作为智慧农业监控系统的无线技术。蓝牙技术是一种无线数据和语音通信开放的技术,因此它可以使一些便捷的移动设备和计算机设备直接连接到Internet,并且可以无线访问互联网。然而当前蓝牙5.0已经开发,但是由于其主要用于近距离低功耗的传输、如可穿蓝牙手表、蓝牙耳机等应用。因此蓝牙主要适用于短距离数据传输,对于智慧农业监控系统而言,距离至少需要覆盖个生态园或者农场中,所以蓝牙距离受限,无法作为智慧农业监控系统的无线传输技术。

    ZigBee技术是一种专门为智能而设计的无线通信技术,它可以在2.4GHz(全球流行)、868MHz(欧洲流行)和915 MHz(美国流行)3个频段上工作,最高的传输速率250kbit/s、20kbit/s和40kbit/s,其传输距离在10-75m的范围内,但可以继续增加。除此之外,ZigBee还具有无线技术中还具有低功耗、成本低、网络容量大等等特点,还具有CSMA.CA载波侦听、冲突检测技术。因此通过这些技术可以实现MAC层的数据重发,从而保证无线数据不会因冲突而丢失,因此这特别适合作为控制领域的无线协议。然而,ZigBee无线协议还可以实现自动网络构建的功能,其ZigBee网络中存在一个ZigBee主机,也叫ZigBee协调器。该设备可以将其他两个设备连接起来,即ZigBee终端和上位机,并和这些设备进行无线通信。因此可以通过上位机控制整个生态园或农场的蔬果生长。

    2.3.2 ZigBee芯片 图2.2 CC2530芯片 ZigBee是一种稳定的无线协议,目前已有很多类型的芯片对该协议支持使用,其中较为常见的ZigBee型号主要有CC2430\CC2530等ZigBee集成芯片。CC系列主要为德州仪器TI公司设计生产的一种专门处理无线方案的片上集成芯片系列。CC2430是TI公司的第一代zigbee协议栈集成芯片,该芯片有点古老,仅支持64K的ROM程序空间以及1K的RAM随机存取空间,对于当前较为完善的zigbee协议栈而言,程序空间和随机存取空间需求较大,CC2430已无法满足。因而CC2430不具备选型条件。作为第二代Zigbee集成芯片,CC2530 结合了先进的射频收发器的卓越性能,行业标准的增强型8051 CPU,系统内可编程闪存,因此考虑到智慧农业监控系统的稳定性,CC2530更适合ZigBee主控芯片。

    2.3.3 温度传感器 图2.3 DS18B20温度传感器 温度传感器是一种可以感受温度并将其转换为可用输出信号的传感器,根据其功能特点不同,主要分为模拟型温度传感器和数字型温度传感器。模拟型温度传感器的原理通常是使用热敏电阻作为温度传感器,然后再通过电阻分压来获得温度的大致范围,但它一般适用于一些对温度精确度要求不高的应用设备。然而数字型温度传感器则通过温度传感器内部集成的数字电路将温度数据处理,并通过驱动传感器由MCU获取温度信息,数字型温度传感器的精确度较高。除此之外,因为农产品的生长对温度精度要求很高,所以选用数字型温度传感器作为本系统的温度采集模块。本智慧农业监控系统选取型号为DS12B20的数字温度传感器,其可以满足一般智慧农业监控系统对环境温度的采集和处理。

    2.3.4 光敏电阻传感器 图2.4 光敏传感器 光敏传感器是最常见的传感器之一,它的种类繁多,例如红外线传感器、紫外线传感器、光敏电阻等。光电电池原理是基于外光电效应,主要分为三个部分:真空管、光电阴极K和光电阳极A,但是真空光电电池受照光通量不大,仅适用于低强度的检测以及光子初始速度分布的测量。红外传感器是一种使用红外来处理数据的传感器,而且它可以在不接触的情况下测量温度。例如,它使用热图像来长距离测量人体温度,但是热模型的灵敏度低,响应速度慢,必须冷却量子模型并且波长依赖性太高。紫外线传感器是通过光伏模式和光导模式将紫外线信号转换为可测量的电信号,然而可见光盲只对紫外线响应,屏蔽可见光,太阳光盲仅对UVC波段的紫外线响应,屏蔽UVA、UVB。而光敏电阻的工作原理是内光电效应,属于半导体光敏器件,其具有灵敏度高和反应速度快的特点,还能保持极强的稳定性和可靠性,然而光敏电阻5516在Φ5系列中功耗最低,效率最高,因此选取光敏电阻5516作为采集光照得光敏传感器。

    2.3.5 土壤湿度传感器 图2.5 土壤湿度传感器 土壤湿度传感器主要是用来测量土壤的湿度,其原理是采用FDR频域反射原理,如今应用于林业防护和农业灌溉。通常,土壤湿度传感器可分为三种类型:电容型、电阻型和离子型。但是,电容型湿度传感器由于感应相对湿度范围大,结构简单,形式等效,,生产工艺容易,因此采用以梳状铝电极结构的YL-69土壤湿度传感器,成本低廉,功能齐全,可以与其他器件和芯片封装在一起,更好地发挥其性能,从而对土壤的表层和深层进行测量,获取到土壤的湿度含水量,精确地采集和处理。

    2.3.6 其他器件 2.3.6.1 水泵 图2.6 水泵 本系统选取的是一种2.5-6V的微型小水泵,成本较低,而且功能稳定性高。

    2.3.6.2 风扇 图2.7 风扇 本系统选取CJY4010的微型散热风扇,成本较低,而且实现风速较快稳定。

    2.3.6.3 CH340 图2.8 CH340 本系统选取CH340的USB转接芯片,通过安装CH340SER驱动对协调器进行USB转串口,进行串口操作。而且CH340在Windows操作系统下的串口应用程序下完全兼容。

    2.3.6.4 USB数据线 图2.9 USB数据线 本系统选取一种安装USB数据线,传输稳定、工艺简单,用来连接ZigBee主控板与电脑连接,从而供电使用。

    2.3.6.5屏幕 图2.10 OLED屏幕 本系统选取128*64的0.96寸OLED显示屏,可3.3V/5V供电,工艺简单,造价便宜焊接方便,显示文字采用黑底白字,因为省电,还可以有效防止CROSSTALK现象。

    2.4 本章小节 本章节主要介绍了本智慧农业监控系统的功能需求分析,以及根据其功能进行系统实现的方案,还有根据制定的系统方案对硬件进行选型以及指定。

    第三章 系统硬件设计 3.1 硬件开发环境 在多数的硬件开始过程中,包括硬件电路的设计,电路原理图、PCB 图以及实物元器件的焊接测试等等。本次设计采用了电路绘图软件 Altium Designed 10作为硬件开发环境软件. Altium Designed 10 是一款效率极高的电路制图软件,也是当今硬件开发使用量最多的电路制图软件。主要是原理图通过网络表相连,使用连线将若干个元器件连接起来,原理图连接绘制完后,选择正确的元器件封装, 然后,将原理图导入到PCB图中,然后绘制PCB。

    根据每个组件连接的虚线,执行电路的PCB布线。

    这样,我们就可以完美地整合原理图设计,电路仿真,PCB绘图和编辑,拓扑逻辑自动布线,信号完整性分析以及设计输出等技术,从而大大提高了硬件电路设计的效率。

    3.2 硬件模块原理图设计 图3.1 系统总体电路图 本硬件设计采用模块化的方式进行绘制。其中包含电源输入电路、电源稳压模块、CC2530系统模块、LED指示灯模块、CCDEBUG下载口模块、UART串口模块、DS18B20温度传感器模块、OLED屏幕模块、土壤湿度传感器模块、光线传感器模块、按键模块、水泵驱动模块、风扇驱动模块。以下是对各模块的原理图进行设计和介绍。

    3.2.1 电源输入电路 图3.2 电源输入电路 如图3.2所示为电源输入电路,然而图中的USB口电压为5V,C1为电容,对整个电源进行供电,以及起到稳定电源的作用。D1为二极管1N5819,其最大可通过1A电流,在此电路的作用是防止UART接口接反导致短路,保护AMS1117分支电路。PWR为LED电源指示灯,R10电阻的阻值为10K欧姆,起到了限流的作用,当USB有有输入时,电流通过电阻R10将其点亮。

    3.2.2 电源稳压模块 图3.3 AMS1117电源稳压 如图3.3所示,本系统采用的是AMS1117,这是一种用于电源电压转换的芯片,可输入范围为1.2V-4.2V,稳定输出电压为3.3V,最高输出电流为1A,C3和C5都是电容,用来电路的稳压和抗外界干扰,然而电容对电源的作用非常重要,可以起到储能的效果却能够起到稳压、滤波的作用。由图3.2可知,C3并于AMS1117的输入端,可以对电源的输入起到稳压作用,然而输出3.3V电压后,再通过一个C2标称值为106的电容进行稳压,为后续使用3.3V电压的器和电路起到保护作用。

    3.2.3 CC2530模块 图3.4 CC2530系统 如图3.4所示是CC2530F256最小系统,P0口由电阻上拉到3V3电源,这样有助于增强P0口的低电平读取,增强其稳定性。CC2530F256内部具有256KB的ROM以及8K的RAM,这样只需要再VCC脚与GND叫之间加入2.8V~3.6V电压,即可正常工作。因此再芯片VCC输入端接入一个C0标称值为104的电容,这样有耦合的效果,也起到抗电源干扰的作用。

    3.2.4 LED指示灯 图3.5 LED指示灯 LED指示灯的作用有很多,在不同的部位,所实现的作用就不一样。在调试程序的时候,LED灯可以发现很多问题,例如通过LED的频闪和灭亮来验证程序是否正常和配置是否正确。然而如图3.5所示,将一个限流电阻与LED等进行上拉,当正极的电压大于负极的电压时,LED即可导通发光。

    3.2.5 接口电路 图3.6 CCDEBUG下载口 图3.7 UART串口 图3.8 DHT11接口 图3.9 OLED屏幕接口 图3.6-3.9为接口电路,分别是CCDEBUG接口、UART接口、DHT11温度传感器接口以及OLED屏幕接口,其中DHT11接口使用3.3V电压输入,其他则使用5V电压输入。

    DEBUG 接口如图 3.6 所示,通过 DEBUG 口可实现 CC2530 的在线调试,以及仿真和相关程序的下载,因此其下载口用于烧写与调试程序。

    UART 为同步或异步串口通信技术,它将要传输的资料在串行通信与并行通信之间加以转换。当今几乎所有的 MCU 都具有 UART 接口,其中 RX 为串行接收、TX 为串行发送。如图3.7所示,通过该接口通常可实现人机交互,如串口数据打印,串口通信等。CC2530 的 UART用于串口调试,对此程序调试至关重要,因此选择 UART 接口。

    DHT11接口如图3.8所示,VCC外接3.3V的电压,GND口外接GND口,实现温度传感器的调试。

    如图3.9为OLED 屏幕,采用的是 SPI 接口通信,SPI是一种串行外设接口,具有 MOSI、CS、SCK 等 SPI 的特性。因此本系统将使用 SPI通信,显示屏刷新速度远超过 I2C 通信的屏幕。

    3.2.6 驱动电路 图3.10 水泵驱动电路 图3.11 风扇驱动电路 如图3.10和3.11所示,这都是三极管作为开关管的典型电路。三极管是NPN三极管,当在基极施加一个高电平,集电极和发射极之间变会导通,使负载元件与电源VCC和GND之间形成一个回路,这样就能导通负载元件,使其工作。当在基极施加一个低电平,则三极管工作在截止区,此时集电极和发射极之间不构成回路,即负载元件停止工作。

    3.2.7 传感器模块 图3.12 土壤湿度传感器 图3.13 光线传感器 如图3.12和3.13所示,输入电压都为3.3V,R13和R14得电阻阻值都为10K欧姆,在AD集成部分并且和一个压敏电阻串联,起到分压得作用。检测土壤湿度时,当湿度大(AC值小),OUT输出低电平,相反输出高电平。检测光照强度时,检测到的ADC值就是光敏电阻的分压值,如果光线暗,光敏的阻值大。分压就大,这样测得的ADC值比较大。反过来测到的ADC值就比较小。

    3.2.8 按键模块 图3.14 拓展按键 图3.15 复位按键 如图3.14和图3.15为拓展按键和复位按键,拓展按键一共有3个按键,按键使用得IO口P0_1,P0_4和P0_7。由于IO口具有上拉电阻的功能,并且按键一般采用低电平有效得方法。则按键的一端接IO口,另一端接GND即可实现按键按键的检测。然而本次CC2530的IO口默认开启上拉电阻的功能,因此选择低电平有效作为按键触发的条件。

    第四章 系统软件设计 4.1 下位机软件设计 图4.1 下位机程序设计 下位机程序由两个部分组成,,分别是ZiBbee发射端和ZigBee接收端。ZiGBee使用的是zstack无线软件协议栈,然而无论是发射端还是接收端都是收发一体的,并且在ZigBee协议中,两者都需要无线数据的收发,从而来保持连接网络的通信。

    如图4.1左半部分所示,这是ZigBee接收端的设计部分,首先ZigBee接收端开启时,判断当时是手动模式还是自动模式,手动模式下,检测出温度、土壤湿度、光照后,手动开启水泵和风扇进行处理。自动模式下,ZigBee接收端驱动温度传感器获得温度值、土壤湿度传感器或者土壤湿度值、光线传感器获得光照值,当检测到环境的温度大于设定值,启动风扇进行降温;
    当检测到土壤的湿度低时,含水量较少时,启动水泵往土壤里注水,提高土壤的水分。执行完这些操作后,处理完无线部分的数据后,将水泵和风扇的状态传至ZigBee发射端,该反馈主要用于上位机的和ZigBee发射端对ZigBee接收端的状态值更新。除了自动模式外,ZigBee接收端还可以切换手动模式。在该模式下,可以手动修改温度、土壤湿度、光照的阈值范围,以及手动开启风扇和水泵对农业进行处理。

    如图4.2右半部分所示,发射端主要用于控制接收端上的传感器参数和模式。然而传感器系统和水泵、风扇都存在上位机的控制方式,而上位机的通信接口采用的是UART串口通信技术,,使得上位机发送指令给ZigBee发射端,ZigBee发射端收到上位机串口命令后,将命令转换为对应的无线数据再发送给ZigBee接收端。因此ZigBee发射端供电后,系统对硬件进行初始化,其包含CCDEBUG接口初始化、UART接口初始化、OLED屏幕接口初始化、zstack协议栈初始化。接着判断传感器参数是否触发,若触发则发送对应的键值到ZigBee接收端。然而若收到上位机的串口命令后,从而将对应的命令转换为键值发送给ZigBee接收端,以此进行无线循环,从而实现ZigBee发射端的控制功能和上位机的控制功能。

    4.2 上位机软件设计 图4.2 上位机程序设计 图4.3 上位机程序界面 下位机采用基于面向流程的程序设计,而上位机则不同,其作为电脑端的控制程序,是通过界面。然而上位机使用的C#语言实现,而下位机则使用C语言。

    上位机的设计主要包括两个方面,其分别是程序和界面,然而上位机的界面应该设置得简洁实用,这样可以给用户提供比较舒适得用户体验和操作。上位机得具体设计界面如图4.3所示,其中包括温度阈值、土壤湿度阈值、光线阈值三个参数的阈值设置键和六个参数填写的方框,以及查询三个参数阈值的按键。还有开启手泵、关闭水泵、开启风扇、关闭风扇四个切换键,以及自动模式和手动模式的切换设置键。还有五个显示温度、湿度、光线、联网、模式的窗口,通过这些串口可以实时地监测温度、湿度、光线的数据变化,以及联网状态和自动手动模式的切换情况。

    然而上位机除了界面的设计,还有上位机的软件设计,即程序的代码部分。具体的程序设计实现如图4.2所示。一开始打开上位机后,系统对窗体进行初始化,其主要作用是对串口组件进行初始化,然而如果收到串口数据,则判断是否是下位机发送的命令数据,如果是,窗体就更新其对应的参数值,然后就移除已经处理的串口储存部分,并继续判断接下来的部分串口数据执行,以此直到所有的命令数据处理完毕。此外,若上位机判断是否收到按键的发送,并根据键值所发送的数据,进行温度、湿度、光线等参数的设置以及模式的切换。最后,把所有命令保存并发送至下位机,从而完成上位机的控制和数据更新的部分。

    4.3 系统模块实现 4.3.1 串口组件的初始化 public partial class FormMain : Form { /*@startSerialBase*********************************************/ private SerialPort sp = new SerialPort(); //声明一个串口类 private bool isOpen = false; //打开串口标志位 private bool usart_closing = false; //是否正在关闭串口,Application.DoEvents,阻止再次进入invoke private bool usart_listening = false; //监听是否在执行串口invoke相关操作 private List<byte> buffer = new List<byte>(4096); //默认分配1页内存,并始终限制不允许超过 private long SendCount = 0; private long ReceiveCount = 0; //串口窗体初始化 private void SerialSettingInit() 如上代码所示,开始时上位机对串口组件进行初始化,并且设置默认的串口参数,例如串口号、波特率等等,以及通过系统处理,上位机的缓存串口数据大小为4K字节。

    4.3.2 串口组件的检测 private bool CheckPortSetting() { if (cboxCOM.Text.Trim() == ““) return false; if (cboxBaudRate.Text.Trim() == ““) return false; if (cboxDataBits.Text.Trim() == ““) return false; if (cboxParity.Text.Trim() == ““) return false; if (cboxStopBits.Text.Trim() == ““) return false; return true; } 如上代码所示为上位机对串口组件初始化的检测,函数中运用到了布尔型常量,布尔型常量只包含两个值,分别是真和假。而在此程序中,运用布尔型常量检测串口参数的输入窗口,以及根据是否有输入参数,从而函数中返回一个布尔型常量。

    4.3.3 串口组件的按键实现 private void buttonOpen_Click(object sender, EventArgs e) { if (isOpen == false) { if (CheckPortSetting()) { sp.PortName = cboxCOM.Text.Trim();//设置串口名 sp.BaudRate = Convert.ToInt32(cboxBaudRate.Text.Trim());//设置串口的波特率 float f = Convert.ToSingle(cboxStopBits.Text.Trim());//设置停止位 如上代码所示,当开启串口后,设置好串口名、波特率等等的配置参数,从而传送至串口组件,使得串口组件按键实现其功能。

    4.3.4 串口组件发送函数 private void UartSend(String str) private void UartSend(byte[] buf, int len) 如上代码所示,是串口组件发送数据的模块,第一个函数是串口发送字符串,第二个是串口发送数组,通过定义一个UartSend()D的函数,用来发送串口组件数据,以及可以在发送串口命令的时候调用此函数。

    4.3.5 串口接收处理函数 private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { if (usart_closing)//如果串口正在关闭,忽略操作,直接返回 { return; } else { usart_listening = true; //执行Invoke开始,ui不可以关闭串口了 } 如上代码所示,是串口组件接受数据的模块,通过定义一个sp_DataReceived()的函数,以此用来将串口接受到的数据缓存到ReceivedDatabuf数组中。

    4.3.6 串口计数函数 private void refreshReceiveCount() private void refreshSendCount() private void countClear() 如上代码所示,是串口组件更新计数模块,第一句是刷新计数函数,第二句是刷新发送计数函数,第三句是计数值清零函数,通过定义refreshReceiveCount()的函数,接受和发送的计数数据,以及计数值清零。

    4.3.7 串口更新函数 private void labSendCount_TextChanged(object sender, EventArgs e) private void labReiveCount_TextChanged(object sender, EventArgs e) 如上代码所示,是串口计数更新模块,第一句是发送数据变化函数,第二句是接收数据变化函数,通过定义labSendCount_TextChanged(),更新数据计数,并且更新其显示的内容。

    4.3.8上位机界面函数 //温度阀值 string source = System.Text.Encoding.Default.GetString(buffer.ToArray()); string param; int dataLen = getCommand(source, COM_TEMPERATURE_RANGE, out param); //湿度阀值 string source = System.Text.Encoding.Default.GetString(buffer.ToArray()); string param; int dataLen = getCommand(source, COM_SOIL_RANGE, out param); //光线阀值 string source = System.Text.Encoding.Default.GetString(buffer.ToArray()); string param; int dataLen = getCommand(source, COM_LIGHT_RANGE, out param); 如上代码所示,是上位机显示界面数据和更新数据模块,通过定义GetString()函数,把温度、湿度、光照的参数发送至上位机,在界面上显示,以及当收到串口相应的命令后,从而更新对应的数值。

    4.3.9上位机命令声明 private const string COM_MODE = “mode=“; private const string COM_SWITCH1 = “switch1=“; private const string COM_SWITCH2 = “switch2=“; private const string COM_SWITCH3 = “switch3=“; private const string COM_LIGHT = “light=“; private const string COM_SOIL = “soil=“; private const string COM_TEMPERATURE = “temperature=“; private const string COM_LINK = “link=“; private const string COM_TEMPERATURE_RANGE = “t_range=“; private const string COM_SOIL_RANGE = “s_range=“; private const string COM_LIGHT_RANGE = “l_range=“; private const string COM_TEMPERATURE_CHECK = “t=“; private const string COM_SOIL_CHECK = “s=“; private const string COM_LIGHT_CHECK = “l=“; 如上代码所示,是上位机命令声明模块,以上都是上位机与下位机之间的通信协议,上位机通过发送命令至下位机,从而下位机执行命令操作。

    第五章 系统测试结果分析 图5.1 硬件整体实物图 硬件整体的实物图连接如图5.1所示,各个部分的硬件功能测试都正常,然而整合起来,整体测试也正常运行。

    条件:(温度 min)<温度<(温度 max) 表5-1 温度测试记录表 温度范围 10℃ 15℃ 30℃ 14℃<x<20℃ 温度偏低,串口记录数据 温度合适,串口记录数据 温度偏高,串口记录数据 条件:(湿度 min)<湿度<(湿度 max) 表5-2 土壤湿度测试记录表 土壤湿度范围 5% 15% 50% 10%<x<50% 土壤湿度偏低,串口记录数据 土壤湿度合适,串口记录数据 土壤湿度偏高,串口记录数据 条件:(光线 min)<光线<(光线 max) 表5-3 光线强度测试记录表 光线范围 20% 40% 100% 30%<x<90% 光线偏弱,串口记录数据 光线合适,串口记录数据 光线偏强,串口记录数据 如表5-1、表5-2和表5-3所示,为本智慧农业监控系统的温度、土壤湿度、光线强度等参数测试,并对实验测试结果进行分析和记录处理。

    表5-1中以温度作为自变量,分别对小于温度阈值、处于稳定阈值之间以及大于稳定阈值时的状态检测和处理,并且记录数据,结果当温度大于阈值时,启动风扇进行降温,手动模式时需手动开启,自动模式时则自动开启风扇,从而使温度回到阈值之间,风扇关闭。实现的功能与预期的一致,符合本系统设计的功能要求。

    表5-2中以土壤湿度为自变量,分别对小于湿度阈值、处于湿度阈值之间以及大于湿度阈值时的状态检测和处理,并且记录数据,结果当湿度小于阈值时,启动水泵对土壤进行注水,手动模式时需手动开启,从而使湿度回到阈值之间,水泵关闭。实现的功能与预期的一致,符合本系统设计的功能要求。

    表5-3以光线为自变量,分别对小于湿度阈值、处于湿度阈值之间以及大于湿度阈值时的状态检测和处理,并且记录数据。实现的功能与预期的一致,符合本系统设计的功能要求。

    第六章 总结与愿望 本基于ZigBee的智慧农业监控系统主要是软硬件的功能实现,首先要规划搭建好整个系统的总体框架,首先根据自己的所学的知识和想法,对各个模块功能需求进行分析设计,设定好其功能之后,因为对硬件电路这方面的设计不是很了解,因此就花时间学习ZigBee单片机以及电路设计的原理,大概经过几周的时间,逐渐对ZigBee单片机的构建型号设计有了基础,从而开始电路原理图的绘制,以及实物元器件的焊接和调试。然而系统软件部分,主要是上位机和下位机的程序设计,系统功能的实现还有上位机的界面设计,为此特意学习了一部分C#。以及一些驱动的安装,基于一部分已经现有的代码,再加上一些新增功能,对之后的代码调试也是有一定的难度。

    然而此次的智慧农业控制系统设计是我在大学中比较难忘和具有代表性的设计,所涉及的专业知识比较广,软硬件紧密融合,对硬件电路的实践操作能力要求比较高,还有一些系统功能软件部分的实现Buff。在系统设计和具体实现的过程中,也遇到了很多难题,通过查阅资料和请教老师后,经过自己的思考总结,很多问题Buff都能迎刃而解。通过这次项目的设计,更加巩固了我的专业时间,提高了自己在实际项目中的实践能力,使我受益终身。最后,我将继续查缺查阅智能农业的最新技术方法,在此项目中的基础上进行系统的优化处理,使得成为一种可以在农业上帮助到我国农业发展的设备。

    参考文献 [1]滕志军,何建强,李国强.基于ZigBee的智能农业管理系统设计[J].湖北农业科学, 2013(03):194-197. [2]朱晓舒,时斌,齐亮,葛学峰.基于ZigBee技术的水质监测系统的设计与实现[J]. 南京师范大学学报(工程技术版), 2012(02):75-79. [3]唐杰,边鹏飞,何志琴.基于无线传感网络的火警系统设计[J].科技视界, 2015(22):126-127. [4]丁波.基于WebSocket协议的智能温室测控系统的设计与实现[J].中国优秀硕士学位论文全文数据库, 2016(11):77-77. [5]周旭初.单片机无线抄表终端的计量设计与实现[J].数字技术与应用, 2011(11):45-46. [6]李金雷,张馨,郑文刚,赵全明,田宏武,张石锐.设施农业低功耗手持信息采集系统研究[J]. 农机化研究, 2015(06):231-234. [7]张震宇,余林,黄文庆,季于东,孙克仲.智慧农业物联网系统[J].物联网技术, 2019(05):12-14. [8]甘露萍,谢守勇,杨艳.一种土壤湿度传感器的研制[J].农机化研究, 2008(10):97-100. [9]陈军宁,于峰崎,王阳,柯导明.CMOS兼容电容型湿度传感器的理论模型[J].半导体学报, 2005(07):95-99. [10]刘淑云,谷卫刚,王殿昌,王风云.塑料大棚环境智能监控系统的设计[J].科技资讯, 2007(36):35-36. [11]史国滨. GPS和GIS技术在精准农业监控系统中的应用研究进展[J].湖北农业科学, 2011(10):13-15. [12]李伟,段翠芳,滑伟娟.温室监控系统在国内外的发展现状与趋势[J].中国果菜, 2010(06):8-10.

    相关热词搜索:

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座

    推荐访问