基于Arduino和Labview的远程智能农业监测系统

2019-10-21 09:21毛敏
微型电脑应用 2019年6期
关键词:传感器

毛敏

摘 要: 为了远程实时监测农业生产数据的目的,采用网络模块W5100、数字温湿度传感器DHT11、光照传感器BH1750FVI、土壤湿度传感器,以Arduino Uno微处理器和虚拟仪器Labview 为平台设计出远程实时农业监测系统。通过试验,该系统2秒钟可给出现场实时监测数据,测量结果随着环境参数的改变而改变,适用于需要远程实时农业监测的场合。

关键词: W5100; 传感器; Labview; Arduino

中圖分类号: TP311

文献标志码: A

文章编号:1007-757X(2019)06-0035-03

Abstract: In order to remotely monitor agricultural production data in real time, the network module W5100, digital temperature and humidity sensor DHT11, illumination sensor BH1750FVI and soil humidity sensor are used to design real-time agricultural monitoring system based on Arduino UNO microprocessor and virtual instrument Labview. Through experiments, the system can give the real-time monitoring data within 2 seconds, and the measurement result changes with the change of environment parameters. It is suitable for the situation that needs the remotely real-time agriculture monitoring.

Key words: W5100; Sensors; Labview; Arduino

0 引言

智能农业的核心问题是对农业信息的获取、对所获信息的管理、经信息分析做出的决策、由决策而决定的具体实施方案。而对农业信息的获取是智能农业的起点,是非常关键的,如果无法实时地获取农业信息,就无法建造真正的智能农业,所以建立一个实用、可靠的农业检测系统非常必要。

随着通信、计算机、传感器技术的发展,将物联网应用到农业监测系统中是目前的发展趋势,它将采集到的温度、湿度、光照强度、土壤水分等信息进行处理[1-2],为农业生产的在各个时期的精准管理提供信息支出。

本文设计了一种基于Arduino和Labview的远程智能农业监测系统,可以对农作物生长环境参数实时采集,数据采集终端设备采用Arduino作为控制核心,上位机软件采用Labview,两者通过网络模块W5100进行通信。

1 系统设计

在系统中,Labview[3]编写的软件作为上位机,负责读取由Arduino Uno[4]微处理器发送的温湿度、光照强度、土壤湿度并进行显示。

Arduino Uno微处理器作为下位机,通过网络模块W5100接收上位机发来的命令,负责接收和判断命令、采集和传输温度、湿度、光照强度、土壤湿度数据,并将这些数据通过网络模块W5100上传至Labview上位机软件进行显示。系统框图如图1所示:

1.1 传感器

1.1.1 DHT11数字温/湿度传感器

DHT11数字温湿度传感器[5]采用专用的数字模块采集技术和温湿度传感技术,是一款含有已校准数字信号输出的温湿度复合传感器。DHT11传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接,输出数字信号,具有功耗小、超快响应、抗干扰能力强等优点。

1.1.2 光照传感器BH1750FVI

光照传感器BH1750FVI是一个数字环境光传感器,不区分环境光源,接近于视觉灵敏度的分光特性,可对广泛的亮度进行1勒克斯的高精度测定,模块内部包含通信电平转换,与5V单片机IO直接连接。

1.1.3 土壤湿度传感器

通过测量两根探针之间的电阻,来了解土壤中的水分含量。当插入土壤中时,由于土壤中水分含量不同,土壤的电阻值就不同。

1.2 硬件设计

通过网络模块W5100[6],实现Arduino Uno 微处理器与Labview的无线连接,温湿度传感器DHT11、光照传感器BH1750FVI、土壤湿度传感器与Arduino Uno 微处理器构成硬件平台,温湿度、光照强度、土壤湿度数据经Arduino Uno 微处理器处理后,通过网络模块W5100传送到上位机,Labview 软件编写VI函数,在Labview前面板实时显示温湿度、光照强度、土壤湿度数值,实现Labview 软件与Arduino控制板远程交互式通信。

1.2.1 Arduino Uno微处理器

Arduino[7-8]是一款便捷灵活、方便上手的开源电子原型平台,功能强大,适用于读取温湿度传感器信号,可与上位机通讯,制作交互式产品,该系统包括硬件(Arduino开发板) 和软件(Arduino IDE)两部分。

1.2.2 虚拟仪器Labview

虚拟仪器Labview[9]有常规仪器的控制面板,采用可视化的图形编程语言和平台,在计算机屏幕上建立图形化的软面板来替代常规的传统仪器面板,可节省成本。

Labview为Arduino开发了专门的接口工具包,把这个工具包和Arduino软件结合起来,通过Labview软件可实现对Arduino微处理器的控制或交换数据。

W5100是一种多功能的网络接口芯片,内部集成有以太网控制器,主要应用于高集成、高稳定、高性能和低成本的系统中。

1.2.3 硬件连接

网络模块W5100与Arduino Uno控制板连接,W5100配置一个网络地址:192.168.1.177,通过网线与计算机网卡连接,将计算机的网卡地址配置成192.168.1.175,W5100与计算机组成一个小的局域网,用于网络数据的发送与接收。

DHT11的信号线接入Arduino Uno板的数字端口2中,电源线接入Arduino Uno板上的+5V电压端口,地线接入Arduino Uno板上的GND端口。

BH1750FVI的SDA端接入Arduino Uno板的模拟端口A4中,SCL端接入Arduino Uno板的模拟端口A5中,电源线接入Arduino Uno板上的+5 V电压端口,地线接入Arduino Uno板上的GND端口。

土壤湿度传感器的D0端接入Arduino Uno板的数字端口7中,A0端接入Arduino Uno板的模拟端口A0中,电源线接入Arduino Uno板上的+5 V电压端口,地线接入Arduino Uno板上的GND端口。

1.3 软件设计

1.3.1 Labview程序设计

Labview编写的软件[10]负责读取Arduino Uno发送的温湿度、光照强度、土壤湿度值并进行显示。

1.前面板设计

Labview前面板显示温湿度、光照强度、土壤湿度值。前面板如图2所示。

2.程序框图设计

采用条件结构+移位寄存器的状态机来实现Labview上位机主程序,将主程序划分为5个状态。0状态为初始化网络服务,1状态为温度测量,2状态为湿度测量,3状态为光照测量,4状态为水分测量。

在0状态中,初始化网络服务,配置网络地址,如图3所示:

在1状态中,读取温度数据并显示,如图4所示:

在2状态中,读取湿度数据并显示,如图5所示:

在3状态中,读取光照数据并显示,如图6所示:

在4状态中,读取水分数据并显示,如图7所示:

1.3.2 Arduino程序设计

Arduino Uno控制器完成接收和判断命令、读取和传输温湿度、光照、土壤湿度数据,并处理成字节数据,通过网络模块W5100上传给上位机。

#include 引入网络模块

#include 引入温度模块

定义温度对象;

#define 定义温度读取输出引脚 2

#define 温度命令字0x10

#define 湿度命令字0x20

#define 水分命令字0x40

#define  光照命令字0x30

#include 引入以太网网络模块

定义网卡的MAC地址;

定义IP地址 ip(192,168,1,177);

定义网络服务的端口;

定义数据处理函数;

程序初始化(){

网络接口初始化,设置MAC地址和网络地址

启动服务器,开始进行端口侦听。

}

void 循环检测()

{

if (有客户端连接) {

当有客户端连接进来时 {

if (客户端连接是否有效) {

一次接收两个字节数组,第一位命令识别代码,第二个位命令字

{

读取命令识别代码和命令字。

}

对接收到的名字字进行处理。

}

}

处理完成,关闭客户端连接;

}

}

Void  读取温度(){

读取温度,将其存放在变量中

switch (根据读取的数字进行判断){

case 温度读取正常: break;

case 温度读取失败;

case  温度读取超时:

default:

温度读取错误。}}

void 处理接收的数据信息(void){

if(命令识别代码如果为 0x55)

{

switch(命令字){

case 温度命令字:

读取温度;

break;

case 濕度命令字: 读取湿度

break;

case 水分命令字: 读取水分数值

break;

case 光照命令字:  读取光照数值

break; }}}

2 测试过程

为了验证系统的实时性, 启动电路,可以看到Arduino UNO的TXD、RXD指示灯不断闪烁, 连续采集温湿度、光照、土壤湿度数据,通过网络模块W5100将采集到的数据传输给Labview,2秒后在Labview的前面板(图2所示)显示测试结果。

继续对DHT11数字温湿度传感器增加温度和湿度、对光照传感器增加照度、对土壤增加水分,从前面板可以看到:前面板显示数值持续增大满足实时显示要求。如图8所示。

3 总结

在本系统中,Arduino Uno微处理器便捷灵活,具有丰富的接口,编程简单;虚拟仪器Labview设有常规仪器的控制面板,采用可视化的图形编程语言和平台,在计算机屏幕上建立图形化的软面板来替代常规的传统仪器面板,实时显示测量数据,不需要设计专门的显示电路;网络模块实现Labview 软件与Arduino微处理器远程交互式通信。

简单的电路可完成复杂的功能,不需要专门设计显示电路,使设计成本降低,该系统还具有远距离测量、反应快、测量精度高、分辨力高的优点。

参考文献

[1] 彭智洪,赵东尧,蒋益莹,李帆,杨炎,陆小飞.基于蓝牙的温湿度采集系统设计[J].科技资讯,2017,15(6):7.

[2] 左义海,石振东,王博等.创客从0到1--基于Arduino设计[M]. 北京:北京航空航天大学出版社,2016.

[3] 吴城龙,陈文斌.低功耗无线温湿度测量系统的设计开发研究[J].资源节约与环保,2016(12):7.

[4] 陈吕洲.Arduino程序设计基础[M]. 北京:北京航空航天大学出版社,2015.

[5] 王鹞芝,屈蔷,赵阳.基于LabVIEW的库房监测系统设计[J].电子测量技术,2015,38(9):78-81.

[6] 张银鸿,闵建,庄建,胡磊,李嘉杰.基于以太网的多协议温湿度采集系统研制[J].核电子学与探测技术,2015,35(5):478-482.

[7] 于崇梓.Arduino开发实战指南(Labview卷)[M]. 北京: 机械工业出版社,2014.

[8] 修金鹏.Arduino与LabVIEW互动设计[M].北京:清华大学出版社,2014.

[9] 金婕.浅谈便携式温湿度测量仪的设计[J].科技与企业,2014(19):195.

[10] 毕莉娅.一种高集成温湿度测量系统的研制[J].化學分析计量,2013,22(4):76-78.

[11] 胡仁喜,高海宾.LABVIEW2010虚拟仪器从入门到精通[M].北京: 机械工业出版社,2013.

(收稿日期: 2018.05.31)

猜你喜欢
传感器
DEP推出量产内燃机传感器可提升效率减少排放
跟踪导练(三)2
工业互联网引发传感器产业革命
光纤与光纤传感器
用传感器重现伽利略对自由落体运动的研究
电子汽车衡检定分度数的分析