毕业论文系列之基于WiFi的智能农业大棚管控系统设计代码

本文介绍了使用Arduino开发板构建的智能农业大棚管控系统,通过DHT11温湿度传感器、土壤湿度传感器、红外感应器等模块实时监控环境参数,并通过WiFi连接实现远程控制。系统包括数据采集、显示、反馈控制和报警功能,可自动调节环境以适应农作物生长需求,并在有人闯入时触发报警。通过LCD1602显示实时数据,用户可通过手机APP远程监控和控制。
摘要由CSDN通过智能技术生成

#include <dht11.h>//dht11

#include <MsTimer2.h>               //定时器库的 头文件

#include <Wire.h>   

#include <LiquidCrystal_I2C.h> //引用I2C库  

LiquidCrystal_I2C lcd(0x3F,16,2);    //设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册  

int PIRpin=A1;//红外传感器引脚号

int val1 = 0;             // 存储光敏电阻值的变量

int w=0;//设定红外初始值

int o=0;//定义手动自动开光初始值

int h=38;//设定温度初始值

int p=0;//设定温度升高暂存变量

int k=0;//设定温度降低暂存变量

int photocellPin = 2;    // 光敏电阻连接模拟端口【A2

int ledPin = 7;         // LED灯连接数字端口【D7

 

int ss[512];

dht11 DHT11;

#define DHT11PIN 4//设定4号引脚为温度输入

#define DHT11PIN1 5//设定5号引脚为温度输入

#define turang A0//设定土壤输入为A0

#define turangq A4//设定土壤输入为A0

#define fen 8     //定义风扇引脚为8

#define shuiben 9     //定义水泵引脚为9

void setup(){

 Serial.begin(9600);

 Serial.println("AT+CIPMODE=1"); //WiFi连接服务器

 delay(1000);

 Serial.println("AT+CWJAP=\"TP-LINK_4226\",\"19960710\"");

 delay(5000);

 Serial.println("AT+CIPSTART=\"TCP\",\"115.29.109.104\",6555");

 delay(5000);

 Serial.println("AT+CIPSEND");

 delay(3000);

  MsTimer2::set(100, falsh);        // 中断设置函数,每100ms 进入一次中断

 

  lcd.init();                  // 初始化LCD  

  lcd.backlight();             //设置LCD背景等亮  

  lcd.setCursor(0,0);                //设置显示指针  

  lcd.print("Welcome to ");     //输出字符到LCD1602上  

  lcd.setCursor(0,1);  

  lcd.print("It's my system");  

  delay(2000);

  lcd.clear();

  pinMode(PIRpin,INPUT);//红外传感器输入模式

  pinMode(turang,INPUT);//土壤湿度输入模式

  pinMode(fen,OUTPUT);     //设定LED引脚为输出状态

  pinMode(6,OUTPUT);//设定蜂鸣器报警为输出

  pinMode(shuiben,OUTPUT);//定义水泵为输出模式  

  pinMode(ledPin,OUTPUT);//定义水泵为输出模式

 

  for(int i=10;i<14;i++)   //步进电机

  {

   pinMode(i,OUTPUT);   //设定步进电机输出引脚

   }

   }

void loop(){    

   DHT11.read(DHT11PIN);//读取空气中的温湿度

   int n =DHT11.temperature;

   int dht11temp = DHT11.temperature;

   int l = DHT11.humidity;

   int dht11hum = DHT11.humidity;

   DHT11.read(DHT11PIN1);

   int c =DHT11.temperature;//负责打印

   int dht11temp1 = DHT11.temperature;

   int y= DHT11.humidity;

   int dht11hum1 = DHT11.humidity;

   lcd.setCursor(0,0);  

   lcd.print("tem:");     

   lcd.print(dht11temp);

   lcd.print("tem1:");     

   lcd.print(dht11temp1);

   lcd.setCursor(0,1);

   lcd.print("hum:");

   lcd.print(dht11hum);

   lcd.print("hum1:") ;

   lcd.print(dht11hum1);

   Serial.println("自动控制:B   手机控制:A");

 

   Serial.print("温度上限值:");

   Serial.print(h);

   Serial.println("");

   Serial.print("温度一示数读数:");

   Serial.print(n);

   Serial.println("");

   Serial.print("湿度一示数读数:");

   Serial.print(l);

   Serial.println("%");

   Serial.print("温度二示数读数:");

   Serial.print(c);

   Serial.println("");

   Serial.print("湿度二示数读数:");

   Serial.print(y);

   Serial.println("%");

   Serial.print("土壤湿度一参数:");

   int m=analogRead(turang);//读取读数

   if(m>500){

   Serial.println("干旱,请浇水");

   }

   if(m<500){

   Serial.println("湿润");

   }  

   int r=analogRead(A3);//读取雨滴传感器的读数

   Serial.print("是否下雨啦:");

   if(r<500){

   Serial.println("");

   }

   if(r>1000){

   Serial.println("");

   }

   Serial.print("光照:");

   if(val1>500){

   Serial.println("没有光照");

   }

   if(val1<200){

   Serial.println("有光照");

   }

   int f=0;//定义串口接收数据初始值

   while(Serial.available())//串口接收到数据

   {

   ss[f++]=Serial.read();

   delay(2);

   }

   if(f>=0){

   if(ss[0]==65){//当接收到的数据为A时,为自动控制

   o=0;

   }

   if(ss[0]==66){//当接收到的数据为B时,为按键控制

   o=1;

   }

   if(ss[0]==67){//当接收到的数据为B时,为按键控制

   p=1-p;

   if(p==1){

   h=h+1;

   delay(100);

   return;

   p=0;

   }

   }

   if(ss[0]==68){//当接收到的数据为B时,为按键控制

   k=1-k;

   if(k==1){

   h=h-1;

   delay(100);

   return;

   k=0;

   }

   }

   else if(ss[0]==48){

   digitalWrite(fen,HIGH);  //开启LED

   }

   else if(ss[0]==49){

   digitalWrite(fen,LOW);  //开启LED

   }

   else if(ss[0]==50){

   digitalWrite(shuiben,HIGH);  //开启LED

   }

   else if(ss[0]==51){

   digitalWrite(shuiben,LOW);  //开启LED

   }

   else if(ss[0]==52){

   digitalWrite(ledPin,HIGH);  //开启LED

   }

   else if(ss[0]==53){

 digitalWrite(ledPin,LOW);  //开启LED

   }  

   else if(ss[0]==54){

  

   }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值