面试问题:毕业设计(基于ZigBee技术的智能灌溉系统研究与设计、CC2530芯片、Z-Stack协议栈)

1. 请简单介绍一下系统的功能。

我设计的系统是可通过无线网络远程监控的智能灌溉系统,具体灌溉逻辑为:当环境温度高于设定温度或湿度达到设定的最高湿度时停止灌溉,当环境温度低于设定温度并且环境湿度低于设定最低湿度时开始灌溉。并且,智能灌溉系统只在白天才进行灌溉,夜间停止灌溉。
在这里插入图片描述
原因在于:对于农作物来说,土壤含水量是影响其生长的最核心的要素。含水量不足则生长不好,含水量过高农作物又会烂根,因此土壤的含水量一定要控制在一个合理的范围内。而且,农田的灌溉时间也是有科学的方法的,总体来讲,即是白天低温时灌溉,夜间不灌溉。
除此之外,出于安全角度,我还根据红外人体感应模块设计了夜间行人报警系统,根据烟雾传感器设计了烟雾报警系统。夜间行人报警系统的工作流程是:当夜间有行人靠近农田时,夜间行人报警系统将会触发终端节点上的蜂鸣器,产生报警信号;烟雾报警系统的工作流程是:当农田周边有火源时,烟雾报警系统将会触发终端节点上的蜂鸣器,并且还将启动此终端节点上的继电器,使电磁阀工作,开始喷灌,直至火源熄灭。
在这里插入图片描述
在这里插入图片描述

2. 请简单介绍一下这个灌溉系统的农田现场设计。

为了将水资源的利用率最大化,本系统采用滴灌方式。在这个系统中,使用了ZigBee终端节点,ZigBee协调器,各类传感器,继电器,电磁阀,毛细管,干管等设备。除了ZigBee协调器是放置在监控室内,其余设备均位于农田现场。

3. 简单介绍一下你所说的协调器和终端节点的自组网的架构。

本系统设计了星型拓扑结构的无线网络架构,若干个终端节点通过ZigBee网络连接到一个ZigBee协调器上,然后ZigBee协调器再与上位机进行串口通信,在上位机实现数据监控功能。
在这里插入图片描述
其中,协调器通过电池模块组供电,与终端节点和上位机进行通信。终端节点同样通过电池进行供电,通过传感器采集各类现场信息,根据采集的信息控制节点的灌溉,并将工作情况显示在LCD上。这也是本系统的优点,即终端节点对于电磁阀的控制功能并不依赖于协调器,即使网络连接中断,农田现场的终端节点依然能够正常发挥控制灌溉的作用。
在这里插入图片描述
在这里插入图片描述

4. 你的传感器或者硬件设备是怎么选择并使用的?

综合考虑各种无线传感器技术后,如蓝牙、WiFi、ZigBee等。由于ZigBee具有功耗低、电池寿命长、网络节点数多、传输范围远等优良特性,所以我选择ZigBee技术来开发智能灌溉系统。而CC2530芯片又是现今许多机构研究ZigBee无线传感器网络时首选的芯片,已经非常成熟,因此我选用CC2530芯片。
对于传感器的选用,首先我根据我的采集信息的需求定出我需要的传感器的类型,然后再结合CC2530芯片的各个模块的功能来选择具体的传感器的型号。最后根据传感器的使用手册,再结合CC2530的各个引脚的功能,来安排终端节点和协调器的I/O分配。

5. 在开发中你遇到了什么困难

我遇到的困难主要和传感器的使用相关。
第一个困难就是,第一次在给终端节点分配传感器的I/O口并且将硬件连接上后,并且将协调器与终端节点联网,却发现LCD显示屏突然不工作了,当时怎么寻找都找不到原因,因为重查了自己的引脚分配程序都没发现问题。最后通过查询CC2530的核心板原理图发现,原来我分配给传感器的引脚占用了LCD的一个引脚,导致LCD不能正常工作。所以,后面我为了增加新功能而需要再次为传感器分配引脚时,我都会提前先查询一下CC2530的核心板原理图和我之前的I/O分配表,确认我使用的引脚是未被占用且是可以使用的之后,我才会进行引脚分配。
第二个困难就是调试传感器,包括调试人体红外传感器和烟雾传感器,在调节这两类传感器的灵敏度时需要非常细心,慢慢地调节,最终才能达到想要的效果。

6. 对于无线连接,你是怎么实现的?

我是通过构建ZigBee网络来实现协调器和终端节点的通信。完成这一通讯的前提是,这些节点必须遵循 ZigBee协议这一通信标准,借此才可以实现数据正常的发送与接收。
事实上,ZigBee协议是一个抽象的通信标准,我们无法直接使用。但我们可以通过Z-Stack协议栈来实现,Z-Stack 协议栈是ZigBee协议的一个实现方式,也就是开发者与 ZigBee 协议之间的接口。我们可以通过Z-Stack协议栈来达到无线通信的目的。
Z-Stack协议栈显示在电脑中是以一个名为Zstack的文件出现的,我就是调用Z-stack协议栈提供的API来进行开发工作的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. 你是通过什么什么进行开发的?使用的什么语言?

我选择IAR作为我的集成开发环境。由于我是将Z-stack协议栈作为开发ZigBee协议的接口,而这个协议栈是以IAR作为IDE,并且此款IDE也可以对CC2530芯片进行开发。因此我选择IAR作为我的IDE。我使用C语言进行编程。