您当前的位置: 首页 >  ar

不脱发的程序猿

暂无认证

  • 2浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

不脱发的程序猿 发布时间:2022-06-20 19:00:00 ,浏览量:2

目录

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 
#include 

#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=1; ) {
                  char c = Wire.read();
                  //Serial.println(c, HEX);
                  Illumination_Val = (Illumination_Val             
关注
打赏
1664101891
查看更多评论
0.0459s