目录

1、项目概述

2、项目架构

3、传感器选型

3.1、温湿度传感器

3.2、光强度传感器

3.3、水分传感器

4、硬件环境

5、Arduino功能设计

6、LabVIEW功能设计

6.1、前面板设计

6.2、程序框图设计


1、项目概述

智能农业是目前农业发展的新方向,它根据农作物的生长习性及时调整土壤状况和环境参数,以最少的投入获得最高的收益,改变了传统农业中必须依靠环境种植的弊端及粗放的生产经营管理模式,改善了农产品的质量与品质,调整了农业的产业结构,确保了农产品的总产量,高效地利用了各种各样的农业资源,可取得可观的经济效益和社会效益。

在农业生产过程中,温度、湿度、光照强度、CO2浓度、水分,以及其他养分等多种自然因素共同影响农作物生长。传统农业的管理方式远远没有达到精细化管理的标准,只能算是粗放式管理,在这种管理方式下,通过人的感知能力来管理上述环境参数,无法达到准确性要求。而智能农业,是通信、计算机和农学等若干学科和领域共同发展并相互结合所形成的产物,它将信息采集、传输、处理和控制集成在一起,使人们更容易获得农作物生长各个阶段的各类信息,也让人们更容易掌控这些信息,通过人工智能与农业生产的结合真正实现人与自然的交互。

智能农业的核心问题可以概括为以下四部分,即农业信息的获取、对所获取信息的管理、经信息分析做出的决策、由决策而决定的具体实施方针。在这四部分中,对农业信息的获取是智能农业的起点,也是非常关键的一点,做不到准确实时地获取农业信息,就无法建造真正的智能农业。而实现智能农业,建立一个实用、可靠、可长期监测的农业环境监测系统是非常必要的。

随着通信、计算机、传感网等技术的迅猛发展,将物联网应用到农业监测系统中已经是目前的发展趋势,它将采集到的温度、湿度、光照强度、土壤水分、土壤温度、植物生长状况等农业信息进行加工、传输和利用,为农业生产在各个时期的精准管理和预警提供信息支持,追求以最少的资源消耗获得最大的优质产出,使农业增长由主要依赖自然条件和自然资源向主要依赖信息资源转变,使不可控的产业得以有效控制。

2、项目架构

本篇博文将要介绍一种基于Arduino与LabVIEW的智能农业监测系统,可以实现农作物生长环境参数的实时采集以及上位机监测软件的数据分析和远程监测。数据采集终端设备采用Arduino作为控制核心,上位机软件采用LabVIEW,两者通过RS-485总线实现通信,只需要在田垄之间进行RS-485布线,即可实现组网通信。

项目资源下载请参见:LabVIEW Arduino RS-485智能农业监测系统【实战项目】

3、传感器选型

3.1、温湿度传感器

SHT11是瑞士Sensirion公司推出的一款数字温湿度传感器芯片,将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号,采用CMOSens专利技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器芯片内部包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上与14位的A/D转换器以及串行接口电路实现无缝连接。因此,具有品质卓越、响应迅速、抗干扰能力强、性价比高等优点,广泛应用于暖通空调、汽车、消费电子、自动控制等领域。

每个传感器芯片都在极为精确的湿度腔室中进行标定,校准系数以程序形式储存在OTP内存中,用于内部的信号校准。两线制的串行接口与内部的电压调整,使外围系统集成变得快速而简单。微小的体积、极低的功耗,使SHT11成为各类应用的首选。

3.2、光强度传感器

BH1750FVI是一种两线式串行总线接口的数字型光强度传感器,可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度,利用它的高分辨率可以探测较大范围的光强度变化。BH1750FVI光照传感器模块如下图所示:

3.3、水分传感器

专业的农用水分传感器价格较贵,此处选择价格较为低廉的电阻式水分传感器,如下图所示:

4、硬件环境

将SHT11温湿度传感器的VCC、GND、SCK、DATA分别接至Arduino Uno控制板上的+5V、GND、模拟端口A2和A3。

将BH1750FVI光照传感器的VCC、GND、SCL、SDA和ADD分别接至Arduino Uno控制板上的+5V、GND、SCL、SDA和GND,此处在硬件连接图上没有表示出来。

将水分传感器的VCC、GND、Vout分别接至Arduino Uno控制板上的+5V、GND和模拟端口A0,此处在硬件连接图上表示出来。

将MAX485模块的VCC、GND、RO、DI分别接至Arduino Uno控制板上的+5V、GND、RX和TX,将RE和DE端接至数字端口D2,用于控制收发信号。

Arduino Uno与MAX485和SHT11的硬件连接,如下图所示:

5、Arduino功能设计

在基于RS-485总线的智能农业监测系统中,每个节点配置一个Arduino Uno控制器通过MAX485模块挂在RS-485总线上。Arduino Uno控制器需要完成以下功能:接收和判断命令、采集和传输温湿度、光照和水分数据。Arduino Uno控制器利用MAX485模块通过串口从RS-485总线上接收上位机发来的命令,分析得到有效命令,再根据命令码实现温湿度、光照和水分数据的采集,并上传给LabVIEW软件。

智能农业监测系统Arduino控制器程序代码如下所示:

#include <Wire.h>
#include <SHT1x.h>#define temp_Command          0x10   //采集命令字
#define humidity_Command      0x20   //A1采集命令字
#define water_Command         0x30   //D1采集命令字
#define illumination_Command  0x40   //D0采集命令字
// GY-30
// BH1750FVI
// in ADDR 'L' mode 7bit addr
#define ADDR 0b0100011
// addr 'H' mode
// #define ADDR 0b1011100// Specify data and clock connections and instantiate SHT1x object
#define dataPin  A3
#define clockPin A2
SHT1x sht1x(dataPin, clockPin);byte comdata[3]={0};      //定义数组数据,存放串口接收数据
float temp_c;
float humidity;
int dustPin=0;
int dustVal=0;
int Water_Val=0;
int Illumination_Val = 0;void receive_data(void);      //接受串口数据
void test_do_data(void);      //测试串口数据是否正确,并更新数据void setup()
{Serial.begin(9600);      Wire.begin(); Wire.beginTransmission(ADDR);Wire.write(0b00000001);Wire.endTransmission();
}
void loop()
{while (Serial.available() > 0)   //不断检测串口是否有数据{receive_data();            //接受串口数据test_do_data();            //测试数据是否正确并更新标志位}
}
void receive_data(void)
{int i ;for(i=0;i<3;i++){comdata[i] =Serial.read();//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,delay(2);}
}void test_do_data(void)
{if(comdata[0] == 0x55)            //0x55和0xAA均为判断是否为有效命令{if(comdata[1] == 0xFF){switch(comdata[2]){   case temp_Command:   temp_c = sht1x.readTemperatureC();Serial.print(temp_c, 2);  break;case humidity_Command:   humidity = sht1x.readHumidity();Serial.print(humidity,2);break;case water_Command:   Water_Val=analogRead(A0);Serial.print(Water_Val);                    break;case illumination_Command:                  // resetWire.beginTransmission(ADDR);Wire.write(0b00000111);Wire.endTransmission(); delay(100); Wire.beginTransmission(ADDR);Wire.write(0b00100000);Wire.endTransmission(); // typical read delay 120msdelay(120); Wire.requestFrom(ADDR, 2); // 2byte every time for (Illumination_Val=0; Wire.available()>=1; ) {char c = Wire.read();//Serial.println(c, HEX);Illumination_Val = (Illumination_Val << 8) + (c & 0xFF);} Illumination_Val = Illumination_Val / 1.2;Serial.println(Illumination_Val);                          break;               }}}
}

6、LabVIEW功能设计

LabVIEW上位机部分需要完成如下功能:根据所选择的节点向RS-485总线上发送不同节点号的温度、湿度、光照、水分的数据采集命令,Arduino控制器通过串口和MAX485模块从RS-485总线上接收上位机命令,然后判断接收的命令中的节点号是否与自己的节点号匹配,如果匹配则实现相应的数据采集之后并将采集的数据回传,LabVIEW软件将回传的数据显示在前面板上;如果不匹配则舍弃当前接收的上位机命令,重新等待下次命令的到来。

6.1、前面板设计

LabVIEW前面板分为节点选择、工作指示灯和数据显示模块,节点选择用于选择当前监测的节点,将其数据显示在显示模块上;工作指示灯用于该节点是否正常工作;显示模块主要用于显示当前的数据,包括温度、湿度、光照和水分情况。

基于Arduino与LabVIEW的智能农业监控系统的LabVIEW上位机前面板,如下图所示:

6.2、程序框图设计

采用条件结构+移位寄存器的状态机来实现LabVIEW上位机主程序,将主程序划分为5个状态:0状态为串口初始化,1状态为温度测量,2状态为湿度测量,3状态为光照测量,4状态为水分测量,且初始状态为0状态(串口初始化)。

为了更好地实现通信,制定如下的通信协议:帧头+节点代号+操作码。0x55为帧头,节点代号有0xA1为节点0的代号,0xA2为节点1的代号,0xA3为节点2的代号,0xA4为节点3的代号,0xA5为节点4的代号,操作码有0x10为温度采集,0x20为湿度采集,0x30为光照采集,0x40为水分采集。

在0状态中,通过设置的串口号来初始化串口通信,如下图所示:

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

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

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

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

最后,关闭串口通信。

由于RS-485总线具有抗干扰能力强的优点,适合用于可靠性要求高的场合,本节介绍的智能农业监测系统采用RS-485总线作为每个子节点与总站的通信方式,如果需要检测的面积较大,监测密度较为稀疏,RS-485总线方式需要很多的线材,则采用ZigBee无线通信方式更为实用。由于农业专业的传感器价格较为昂贵,本部分采用较为低廉的传感器来实现了一个简易的监测,如果需要专业应用,则需要购买农业专用的传感器。

项目资源下载请参见:LabVIEW Arduino RS-485智能农业监测系统【实战项目】

LabVIEW Arduino RS-485智能农业监测系统(项目篇—4)相关推荐

  1. 无线智能光伏监测系统

    目录 一.概述... 3 二.智能光伏监控前景... 3 三.WCTU技术... 3 3.1什么是WCTU?. 3 3.2 WCTU工作过程描述... 4 3.3 WCTU采集的优势... 4 3.4 ...

  2. android有关医疗实现功能,基于Android的智能医疗监测系统的设计与实现_问答库

    随着社会经济的快速发展,工作压力的进一步加大,如今人们对个人健康越来越关注,为了有效减轻家庭医疗支出同时,让人们足不出户就能享受到自身健康检测的高质量医疗服务,智能医疗监测系统成为关注的焦点.另一方面 ...

  3. 基于云计算感应器的智能盆栽监测系统

    一.立项目的.意义及特色 目的:现代都市人群追求绿色.环保.健康的生活方式,人们常会种植一些盆栽来陶冶情操.舒缓紧张工作的心情.但是,忙碌的工作时常会让他们无暇顾及自己心爱的盆栽植物,或经常出差无法浇 ...

  4. 【2022研电赛】商业赛华南区二等奖:Aurora:智能输液监测系统

    本文为2022年第十七届中国研究生电子设计竞赛商业计划赛道华南赛区二等奖作品分享,参加极术社区的[有奖活动]分享2022研电赛作品扩大影响力,更有丰富电子礼品等你来领! 团队介绍 参赛单位:广西科技大 ...

  5. 工厂智能电表远程抄表系统项目,成功案例

    工厂智能电表远程抄表系统项目,成功案例,源代码出售,C#语言,可监控24小时厂区总用电量波形图,单表24小时用电量波形图. 可自动导出多种不同形式excel表,厂区单月各表用电量,厂区各表电量值,单表 ...

  6. 智能地下水位监测系统解决方案

    一.方案背景 近年来由于地下水长期影响造成的地质灾害现象频频出现,降落漏斗.地面沉降.地裂缝.岩溶塌陷.海水入侵.水质污染等在造成恐慌的同时,提醒着人们对地下水监测的全面性.准确性还有很大的提高空间. ...

  7. (单片机原理与应用)智能温度监测系统(设计)

    中文摘要 智能温度检测系统是通过硬件电路设计和软件编程驱动的结合方式,实现0℃-99℃范围内的温度智能监测.可通过LCD实时显示实际温度和预设温度,当温度超出预设范围时及时报警,而且报警声用电子乐曲或 ...

  8. 【进展】不只是感谢信,物联网平台哪家强?冰箱运行监测系统项目重启

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 资料整理重点内容回顾 项目名称:冰箱运行监测系统(像路由器一样玩转物联网设备) 需求 ...

  9. (开源)arduino和ESP8266-01制作数据监测系统+手机App实时显示

    利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示 第一 接线 第二 原理讲解 第三 arduino读取各种传感器数值 第四 传感器数据推送到云端 第五 app inv ...

  10. 基于LabVIEW和Access数据库的温湿度监测系统上位机程序设计

    1.设计要求 (1) 使用串口调试助手(提供软件:串口调试助手V2.2.exe)模拟下位机,模拟的下位机每隔5s从串口发送数据包,数据包格式为"SDDTDDHF".其中,第1位&q ...

最新文章

  1. 干货|(DL~3)deep learning中一些层的介绍
  2. qq无限时间撤回消息bug_手机QQ新功能汇总,比微信有意思多了
  3. 【Apollo源码分析】系列的第三部分【prediction】_slamcode的博客 -CSDN博客
  4. php对象和数组的效率,PHP对象数组和一般数组区别
  5. 机器学习笔记:感知器
  6. Java 中的注解是如何工作的?
  7. CordovaWebViewImpl
  8. AJAX 带有 取消功能的 UpdateProgress
  9. 三场直播丨达梦DM8数据库体系结构、从零快速搭建一整套监控体系、Oracle Database Server经典体系结构...
  10. 史上最全Oracle数据泵常用命令
  11. python:接口自动化测试框架优化版
  12. 运用flask框架发送短信验证码的流程及具体代码
  13. 02 JS实现时钟效果
  14. Linux 系 统 目 录 详 解
  15. pytorch_geometric(pyg)复现T-GCN
  16. 为什么你还没有买新能源汽车? 1
  17. 凯撒密码加解密及破解实现原理
  18. 宇视摄像头默认密码是多少
  19. 爬取某个微博用户的所有微博内容及照片
  20. mysql取消自动登录_腾讯QQ怎么取消QQ宠物自动登录?,你需要学习了

热门文章

  1. MATLAB图像处理(均值滤波)
  2. macOS Ventura 正式版发布 苹果官方详解macOS 13 Ventura正式版
  3. 对抗攻击FGSM的纯粹版FGNS
  4. 使用JavaScript读取excel表格数据并导入到数据库
  5. svn合并分支到另一个分支
  6. ffmpeg 推流MP4文件,采用rtmp协议
  7. 郭天祥 十天搞定单片机 (1)基础知识和点亮发光二极管
  8. 多元统计分析基于r课后答案_(完整版)多元统计分析课后练习答案
  9. 2022-2028全球与中国无线电远程单元市场现状及未来发展趋势
  10. 天网防火墙v2.7.3.1000 build0128