#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){

}

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

}

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

}

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

}

}

if (o==1){//自动控制

MsTimer2::start();                //开始计时

if(n>h){

digitalWrite(fen,HIGH);

}

else{

digitalWrite(fen,LOW);

}

if(m>500){

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

}

else{

digitalWrite(shuiben,LOW);

}

if( r<500){

int a;

a=128;//

while(a++)

{

for(int i=13;i>9;i--)

{

digitalWrite(i,1);

delay(10);

digitalWrite(i,0);

}

if(a==512)

{

delay(1000);

return;

}

}

}

if( r>1000){

}

}

else if (o==0){//手机控制

MsTimer2::stop();

}

int w=analogRead(PIRpin);//读取读数

Serial.print("是否有人闯入:");

if(w>400){

Serial.println("有人闯入!!!");

}

else{

Serial.println("正常");

}

if(w>200){

for(int i=201;i<=800;i++)                    //用循环的方式将频率从200HZ 增加到800HZ

{

tone(6,i);                            //在四号端口输出频率

delay(5);   //该频率维持5毫秒

}

delay(4000);                            //最高频率下维持4秒钟

for(int i=800;i>=200;i--)

{

tone(6,i);

delay(10);

}

if(int i=200){

noTone(6);

delay(1000);

}

else{

}

}

delay(2000);

}

void falsh()   {

val1 = analogRead(photocellPin);    // 读取光敏电阻的值

if(val1>=112){

digitalWrite(ledPin, HIGH);

}else{

digitalWrite(ledPin, LOW);

}

}

目     录

摘要 ……………………………………………………………………………………Ⅰ

第一章 绪论……………………………………………………………………………()

1.1 引言………………………………………………………………………………()

1.2  研究背景…………………………………………………………………………()

第二章智能农业控管系统总体设计方案……………………………………………()

2.1智能农业控管系统概述…………………………………………………………()

2.1.1功能要求………………………………………………………………………()

2.2智能农业控管系统硬件设计方案…………………………………………………()

2.2.1微处理器…………………………………………………………………………()

2.2.2传感器……………………………………………………………………………()

2.2.3微处理器…………………………………………………………………………()

2.2.4数据显示…………………………………………………………………………()

2.3智能农业控管系统的软件设计方案………………………………………………()

第三章  智能农业大棚控管系统的硬件设计和实现………………………………()

3.1微处理器的选择……………………………………………………………………()

3.2 Arduino简介………………………………………………………………………()

3.3 Arduino UNO开发原理图…………………………………………………………()

3.4Arduino UNO主要功能介绍………………………………………………………()

第四章  智能农业大棚控管系统的软件设计………………………………………()

4.1程序设计框架………………………………………………………………………()

4.1.1主程序流程图……………………………………………………………………()

4.2各模块程序设计……………………………………………………………………()

4.2.1数据采集模块设计………………………………………………………………()

(1)DHT11模块………………………………………………………………………()

(2)土壤湿度模块……………………………………………………………………()

(3)光敏传感器………………………………………………………………………()

(4)热释电红外感应…………………………………………………………………()

(5)LCD1602显示模块程序设计……………………………………………………()

(6)手机显示及控制模块设计……………………………………………………()

4.3执行模块及报警装置设计………………………………………………………()

4.3.1执行模块流程…………………………………………………………………()

4.3.2报警模块流程图…………………………………………………………………()

第五章  系统调试……………………………………………………………………()

5.1硬件调试……………………………………………………………………………()

5.2软件调试……………………………………………………………………………()

5.3手机远程操控调试…………………………………………………………………()

第六章  结 论…………………………………………………………………………()

参考文献 XXXXXXXXXXXX ……………………………………………………………() 

附表XXXXXXXXXXXXXXXX  …………………………………………………………()

 

 

 

 

 

 

 

 

 

 

 

 

 

基于WiFi的智能农业大棚管控系统设计

 [摘要]本课题就如何方便有效地对温室环境进行监测和控制,如何提高农业生产信息化水平,通过对温室环境的监控的研究现状和发展趋势,运用Aduino开发板,并通过其采用DHT11温湿度传感器模块、Risym土壤湿度传感器控制器模块、HC-SR501人体红外感应模块、Risym光敏电阻传感器模块、Risym高灵敏雨滴雨水控制器模块、A\D转换器、LCD液晶显示器,由水泵、排风扇、蜂鸣器、LED灯等组成的电器控制系统,在元器件方面采用继电器模块,并用类C语言写出程序代码组成整个系统,以实现智能控管。

第一章  绪论

1.1引言

物联网是通过各种信息传感设备及传感器系统、射频识别、红外感应器、条码与二维码、全球定位系统、激光扫描器等和其他基于物物通信模式的短距离无线传感器网络,通过这一网络可以进行信息交互、传递、通信,从而实现对物体的智能化识别、定位、跟踪、监控与管理。在物联网时代,通过在各种各样的物体中镶嵌一种短距离收发器,人类在信息与通信世界里将获得一个新的沟通维度。从任何时间任何地点的人与人之间的沟通连接扩展到人与物与物与物之间的沟通连接。

1.2研究背景

作为世界上最主要的农业大国之一,使用智慧科学的管理模式就至关重要。传统的农业依靠大量的人力,手工工具和一些相对简单的机械设备,农民基本依靠经验来种植,导致农业所消耗的水资源、化肥、农药等都在飞速增长,数据相当惊人,但农业产量相对较低,依靠着落后的生产技术、劳动工具来维持简单的生产以毫无意义。传统农业的技术落后,使得农业产量增长过于缓慢,而又浪费大量的人力物力,从而导致生产效率没有提升空间。综合上述,在现代化的农业中引入物联网技术,通过传感器实时采集农田的环境温湿度数据、土壤温湿度、光照强度、二氧化碳浓度、PH值、土壤有机含量值等信息,并通过无线的方式传输到中央控制系统,使用户能随时随地的掌握农田的实时情况,并通过电脑或者手机远程控制设备,以实现现代农业的自动化、信息化和智能化。

第二章  智能农业控管系统总体设计方案

2.1智能农业控管系统概述

2.1.1功能要求

(1)系统能够实现对温室大棚内的空气中的温湿度、土壤中的湿度、光照强度、是否有人擅自闯入达到实时监控。

(2)当温室大棚内某项环境指标达到预设值时系统要发出相应的反馈控制信息。

(3)温室大棚内被监测的空气中的温湿度数据在LCD屏上显示出来,用户还能够通过手机上显示的实时的通俗易懂的数据以自动和手机控制两种方法以实现对温室内相关设备的控制。

(4)本系统硬件设计有WiFi上传数据,能够实现对系统的远程管控。

技术指标

Arduino规格指标参数

工作电压:5V

输入电压:接上USB时无需外部供电或外部7V~12V DC输入

输出电压:5V DC输入和3.3V DC输出和外部电源输入

微处理器:ATmega328

时钟频率:16 MHZ

检测参数及范围值见表

所选传感器

检测参数

检测范围

检测精度

DHT11

温度

0~50℃

±2℃

湿度

20%~90%RH

±5%RH

土壤湿度

湿度

245~1023

±1

HC-SR501

感应

5~7米

\

TSL2561

光照

0~70000勒克斯(Lx)

±50Lx

雨滴

雨滴

0~1023

\

2.2智能农业控管系统硬件设计方案

智能农业控管系统有一个微处理器作为主控,在该微处理器的外围进行设备扩展如ESP-8266作为系统连接网络的WiFi、传感器作为检测装备、LCD1602作为液晶显示屏、蜂鸣器作为报警装置、下图表示智能农业控管系统的硬件结构原理图。

智能农业控管系统硬件原理图

2.2.1微处理器

微处理器又称MCU,它是由一片或少数几片大规模集成电路组成,具有电路执行控制能力与算数逻辑运算功能,在微型计算机中担当“大脑”一职。本智能农业控管系统的硬件设备就相当于一部微型计算机,其中“大脑”一职Arduino承担。

2.2.2传感器

传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。通常由感应元件和转换元件组成。本智能农业温室大棚用到的传感器有DHT11温湿度传感器模块、Risym土壤湿度传感器控制器模块、HC-SR501人体红外感应模块、Risym光敏电阻传感器模块、Risym高灵敏雨滴雨水控制器模块作为本管控系统的监测模块,他们分别负责温室大棚中的空气中的温度、土壤的湿度、光照的强度等农作物生长必须的环境因素和大棚内是否有人闯入。

2.2.3数据显示

数据显示是为了更好的实现人机交互,方便用户的用户操作,使用户更直观的了解到温室大棚内各项环境指标的实时变化。本智能农业控管系统所选的显示模块为LCD1602显示屏和通过手机APP显示,通过APP,用户可以在任何地方任何时刻了解大棚内的实时数据并进行手机控制或选择自动控制。

2.2.4报警装置

为了防止不法分子进入大棚内进行破坏,本系统增加啦报警装置,当有人进入大棚内时,蜂鸣器会拉响警报,手机上会显示有人闯入。

2.3智能农业控管系统的软件设计方案

智能农业控管系统的硬件电路确定以后,软件负责整个系统的主要功能实现。由软件来实现硬件电路的运行,其中包括数据采集、数码显示、环境调节、报警等。本系统的软件设计需要有一个细致全面的过程。首先要清楚的列出智能农业监测系统中各系统部件与软件设计的相关特点,并进行定义和说明,作为软件设计的依据。在此基础上画出软件设计的基本框架图、主程序流程图。再将程序流程图中列举的一系列操作用类C语言编写出来,然后通过Arduino IDE编译调试,调试完成后下载到Arduino内,至此软件设计基本完成。

第三章 智能农业大棚控管系统的硬件设计和实现

3.1微处理器的选择

本智能农业温室大棚控管系统选择的微处理器为Arduino UNO。

3.2 Arduino简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于爱好者、艺术家、设计师和对于"互动"有兴趣的朋友们。

3.3 Arduino UNO开发原理图

 

3.4 Arduino UNO主要功能介绍

支持USB接口协议及供电(不需外接电源)

支持ISP下载功能

14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。

(1)串口信号RX(0号)、TX(1号):与内部ATmega8U2 USB-to-TTL芯片相连,提供TTL电压水平的串口接收信号。

(2)外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。

(3)脉冲宽度调制PWM(3、5、6、9、10、11):提供6路8位PWM输出。

(4)SPI(10(SS),11(MOS1),12(MOS0),13(SCK));SPI通信接口。

(5)LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,输出为低时LED熄灭。

6路模拟输入A0到A5,每一路具有10位分辨率(即输入有1024个不同值),默认输入信号范围为0~5V。

AREF:模拟输入信号的参考电压。

Reset:信号为低时复位单片机芯片。

直流电流:40mA  (I/O端口)

直流电流:50mA  (3.3V端口)

Flash内存:32KB(ATmega328其中0.5KB用于引导程序)

第四章 智能农业大棚控管系统的软件设计

本智能农业监测系统运行过程中主要包括AD采集,数码显示,反馈控制,检测报警四大模块,其基本框架如图所示:

4.1程序设计框架

4.1.1主程序流程图:

程序主流程图

主程序是一个LOOP循环,其主要流程是:系统上电首先对主控各个IO口进行配置,设置各个环境变量,并对环境变量阈值进行赋值,以及调用各个模块的初始化函数,然后在LOOP循环中调用各个模块的数据采集函数,LCD屏显示函数,然后对各环境数据进行判断,看是否触发中断进行调控,或者进行报警。

4.2各模块程序设计

4.2.1数据采集模块设计

(1)DHT11模块

程序设计流程图如图所示:

(2)土壤湿度模块

程序设计流程图如图所示:

(3)光敏传感器

程序设计流程图如图所示:

(3)雨滴传感器

程序设计流程图如图所示:

(4)热释电红外感应

程序设计流程图如图所示:

(5)LCD1602显示模块程序设计

程序设计流程图如图所示:

(6)手机显示及控制模块设计

程序设计流程图如图所示:

4.3执行模块及报警装置设计

执行模块和报警模块主要是对LED灯、水泵、风扇、雨棚、蜂鸣器进行初始化及控制,当本控管系统监测到某项环境指标超标时,做出相关调控。报警模块是根据是否有人进入来决定是否报警。

4.3.1执行模块流程

4.3.2报警模块流程图

第五章 系统调试

根据本智能农业控管系统的方案设计要求,调试过程主要分为三大部分:硬件调试、软件调试和手机远程操控调试。

5.1硬件调试

将各个传感器模块电路按照逻辑图连接起来,根据器件规格和极性看连接是否有误,然后利用万用表逐个检测调试,看是否有短路、断路现象。检查过传感器模块后再检测电源模块有无短路现象,确保电源上电后输出电压为标准5V电压,降压电路能输出3.3V电压。

5.2软件调试

本智能农业控管系统以Arduino为主控芯片,将各传感器模块接入IO口后,利用对Arduino IDE系统软件部分进行编译及调试。根据编译结果,修改相关错误提示。

5.3手机远程操控调试

将各个传感器模块电路按照逻辑图连接起来,并将代码下载到主控芯片中,按操作顺序连接上WiFi,打开手机用户端,检测是否实时上传数据,发送指令,看相关设备是否按照指令进行运作,如果否,则进行代码修改,直到按相关指令进行操作。

第六章 结 论

本设计从选题、论证、查阅相关资料、确定设计方案到设计的实现前后共历时近两个月,并且基本实现了预期效果,能够正常显示监测环境中的温度、湿度、光照强度、以及土壤湿度。初步完成了环境指标超过阈值自动进行调控,并且当有人进入时,蜂鸣器正常报警,并且完成啦远程监控和管理。本设计还存在一些不足之处,首先检测精度不能说很高,由于所选传感器限制测量精度只能算普通水平,但对于普通的温室大棚环境检测已经足矣。若需要更精确的检测数据需要更换更优良的传感器。

介于本人水平有限,设计中难免还有其他不足之处,在此敬请大家见谅。

 

 

 

 

 

参考文献:

[1] 郑少仁,王海涛,赵志峰等.Ad hoc网络技术【M】.北京:人民邮电出版社,2005,P1-P2

[2]  杨硕.[基于无线传感器网络的温室植物生长光照强度监控系统的研究]重庆大学,2009,P13-P15

[3] 陈文智,王总辉. 嵌入式系统原理与设计. 清华大学出版社,2011

[4] 谭浩强,C程序设计【M】,于欣龙译.北京:人民邮电出版社,2012

[5] 佟长福.AVR单片机GCC程序设计【M】. 北京:北京航空航天大学出版社,2006

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附表

智能农业控管系统全部代码:

#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){

}

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

}

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

}

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

}

}

if (o==1){//自动控制

MsTimer2::start();                //开始计时

if(n>h){

digitalWrite(fen,HIGH);

}

else{

digitalWrite(fen,LOW);

}

if(m>500){

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

}

else{

digitalWrite(shuiben,LOW);

}

if( r<500){

int a;

a=128;//

while(a++)

{

for(int i=13;i>9;i--)

{

digitalWrite(i,1);

delay(10);

digitalWrite(i,0);

}

if(a==512)

{

delay(1000);

return;

}

}

}

if( r>1000){

}

}

else if (o==0){//手机控制

MsTimer2::stop();

}

int w=analogRead(PIRpin);//读取读数

Serial.print("是否有人闯入:");

if(w>400){

Serial.println("有人闯入!!!");

}

else{

Serial.println("正常");

}

if(w>200){

for(int i=201;i<=800;i++)                    //用循环的方式将频率从200HZ 增加到800HZ

{

tone(6,i);                            //在四号端口输出频率

delay(5);   //该频率维持5毫秒

}

delay(4000);                            //最高频率下维持4秒钟

for(int i=800;i>=200;i--)

{

tone(6,i);

delay(10);

}

if(int i=200){

noTone(6);

delay(1000);

}

else{

}

}

delay(2000);

}

void falsh()   {

val1 = analogRead(photocellPin);    // 读取光敏电阻的值

if(val1>=112){

digitalWrite(ledPin, HIGH);

}else{

digitalWrite(ledPin, LOW);

}

}

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

  1. 从零开始 DIY 智能家居 - 基于 ESP32 的智能紫外线传感器模块

    目录 前言 硬件选择 二.使用步骤 获取代码 设备控制命令: 设备和协议初始化流程: 配置设备信息 回调函数注册 数据获取与上报流程 总结 前言 做了这么多传感器都是自己玩,这次家里人看不下去了,非得 ...

  2. 从零开始 DIY 智能家居 - 基于 ESP32 的智能语音合成播报模块

    目录 前言 硬件选择 代码解析 获取代码 设备控制命令: 设备和协议初始化流程: 配置设备信息 回调函数注册 语音播报与设置流程 总结 前言 这里这么多设备,突然发现我做的好像都是传感器之类的居多好像 ...

  3. 从零开始的DIY智能家居 - 基于 ESP32 的智能光照传感器

    前言 上周出差有点急,结果家里灯没关,开了整整一周的时间(T▽T),整个人都裂开了,准备做一个能够远程控制灯的东西,让我以后出差能远程把家里灯关了. 第一步就是做这期的主题 - 智能光照传感器,因为我 ...

  4. 从零开始的DIY智能家居 - 基于 ESP32 的智能浇水器

    前言 上次 土壤湿度传感器 完成之后,就立下一个 flag 要搭建一个智慧浇水的智能场景,现在终于有时间填坑了!(o゚▽゚)o 智慧浇水场景的核心设备有三个: 检测土壤状态的:土壤湿度传感器 通过这个 ...

  5. 从零开始的DIY智能家居 - 基于 ESP32 的智能水浊度传感器

    前言 家里有个鱼缸养了几条鱼来玩玩,但是换水的问题着实头疼,经常一个不注意就忘记换水,鱼儿就没了.o(╥﹏╥)o 在获得 Spirit 1 边缘计算机 后就相当于有了一个人智能设备服务器,可以自己开发 ...

  6. 【智能家居篇】wifi在智能家居中的应用

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 在设计智能家居系统方案时,一个很关键的point就是组网方式.组网方式关系到整个智能家居系统的稳定性.可扩展性.实时 ...

  7. 毕业设计——基于ZigBee的智能窗户控制系统的设计与实现

    题目:基于物联网的智能窗户控制系统的设计与实现 应用场景:突降大雨,家里没有关窗而进水:家中燃气泄漏,不能及时通风,威胁人身安全,存在火灾的隐患:家中窗户没关,让坏人有机可乘.长时间呆在人多.封闭的空 ...

  8. 基于ESP32的智能家居管理系统的设计与实现

    基于ESP32的智能家居管理系统的设计与实现 ESP32的智能家居管理系统访问链接: https://www.cnblogs.com/easyidea/p/13101165.html 一.需求分析 1 ...

  9. Android基于WIFI实现电脑和手机间数据传输的技术方案研究

    Android手机和电脑间基于wifi进行数据传输,从技术上讲,主要有两种方案: 一种是通过ftp协议实现,Android手机作为数据传输过程中的ftp服务器: 一种是通过http协议实现.Andro ...

随机推荐

  1. 天猫SSM项目学习记录(一)----第一个相对完整的SSM项目

    来源:  http://how2j.cn/k/tmall_ssm/tmall_ssm-1516/1516.html?p=78908 目的:记录一个相对完整的SSM项目模板 1.工具:idea2018商 ...

  2. blackarch 安装指南

    建议直接  www.blackangle.cn/BlackArchGuide.htm v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#de ...

  3. git基础命令的使用-附命令汇总

    本文从https://www.liaoxuefeng.com/wiki/896043488029600学习,边学习边记录. git命令:创建版本库:git init : 把当前目录变成Git可以管理的 ...

  4. elasticsearch定时删除索引第二版

    该版本对于上一个版本做了升级.兼容性更好了. #!/bin/bash ####################################################### # $Name: ...

  5. 在Mac/linux上查找(并终止)进程锁定特定端口的几种方法

    前言  无论是做网站还是做产品,经常使用到杀死某个进程的方法.制作脚本并熟悉运用是一个非常节省时间的方法. 基本命令  查找: [sudo] lsof -i :3000  杀戮 kill -9 方法一 ...

  6. 用TensorFlow做图像识别(python)

    一.TensorFlow简介 TensorFlow是由谷歌开发的一套机器学习的工具,使用方法很简单,只需要输入训练数据位置,设定参数和优化方法等,TensorFlow就可以将优化结果显示出来,节省了很 ...

  7. spring boot的application配置文件

      上次我们已经对这个文件见过面了,并且对他进行了一些简单的配置.它有两种配置方式,一个是application.properties,一个是application.yml文件,需要记住,当两个文件都 ...

  8. DFT与IDFT

    [转]https://blog.csdn.net/mingzhuo_126/article/details/88044390 二.编程实现考滤到DFT和IDFT算法过程中有部分相似,可以把它们合成到一 ...

  9. 记录一下第一次用markdown写博客回滚过程

    前面写博客,一直用的是博客园的TinyMCE编辑器, 今天不知道哪根筋搭牢了,想试试用Markdown写. 于是在“选项”里面把默认编辑器修改为“Markdown”,鉴于本人有一定的Markdown基 ...

  10. 做前端的你还没用这些软件?? out 啦

    1. 编辑器 写代码只是生产软件过程中的一环.无论是数据结构.编译原理.操作系统还是组成原理都是编码的重要基础,试问没有学过编译原理的人能够针对性地进行编译优化吗?不懂操作系统的人能玩得转linux吗 ...