第3章
小花的饮料机项目设计
3.1项目背景
本章根据褚建红、陶曦的项目设计整理而成。
在宿舍里养绿植小花时,总是因为忘记浇水或者是不了解它的需求,而使绿植小花不能盛开。于是,本项目决定开发一款基于Arduino的自动浇花系统,方便浇灌绿植。
3.2创新描述
搭建多个土壤湿度传感器和水管接口,满足用户实现对多盆植物同时浇灌的需求; 还搭建了多个液体源,对不同植物的需求进行不同成分液体的灌溉; 该系统可以实现无人控制的自动灌溉,同时采用了YK04模块,通过红外遥控器传送命令,从而手动控制对电磁阀的开关控制,实现智能浇花。基于本项目的功能实现,将该系统命名为“小花的饮料机”。
3.3功能及总体设计
本系统主要实现对植物的实时监控,并控制继电器和电磁阀完成不同植物的浇灌功能,并添加了红外遥控、土壤湿度控制、温湿度传感功能。
3.3.1功能介绍
要实现上述功能,本项目采用Arduino UNO开发板和扩展板Arduino Sensor Shield V5.0作为电路板和土壤湿度传感器。设置好需要浇花的湿度,使传感器端口返回一个高电平信号,对继电器进行控制,操控电磁阀的开关,这样可以实现在无人管理的情况下自动灌溉。同时,也可以通过红外遥控模块直接控制电磁阀的开关,实现对植物的针对性灌溉(针对植物特需的成分)。本项目搭建了多条这样的灌溉线路,以实现对多盆植物的浇灌,并且通过LCD显示屏实时显示系统和小花的状况。
3.3.2总体设计
要实现上述功能需要将作品分成三部分进行设计,包括湿度读取控制、红外遥控控制和LCD显示。
1. 整体框架图
项目整体框架如图31所示。
图31系统框架图
2. 系统流程图
系统流程图如图32所示。
图32系统流程图
3. 总电路图
系统总电路图如图33所示,模块引脚连线如表31和表32所示,“_”表示不接线。土壤湿度传感器从下到上编号0~2; LED由左向右编号1~7; 电磁阀由左向右编号1~3; 继电器由左向右编号1~3。
3.3.3模块介绍
1. 湿度控制模块
1) 功能介绍
通过湿度传感器检测盆中土壤湿度,若湿度值未达到所设条件值,则传感器口返回一个高电平,控制继电器; 再由继电器控制对应灌溉源口的电磁阀进行浇灌; 一定时间后,关闭电磁阀,浇水完成。电路图如图34所示,传感器实物如图35所示,引脚连线如表33所示。
图33总电路图
表31引脚连线(一)
Arduino UNO引脚土壤湿度
传感器0土壤湿度
传感器1土壤湿度
传感器2DHT11LEDLCD1602
显示屏
SCL—————SCL
SDA—————SDA
A0A0—————
A1—A0————
A2——A0———
2D0—————
3—D0————
4——D0———
5———OUT——
6————LED4正极—
7————LED3正极—
8————LED2正极—
9————LED7正极—
10————LED6正极—
11————LED5正极—
GNDGNDGNDGNDGND负极GND
VCCVCCVCCVCCVCC—VCC
表32引脚连线(二)
继 电 器 1继 电 器 2继 电 器 3电磁阀1~3遥控接收板
GND接GND;
VCC接VCC;
OUT接LED4正极;
常开端接12V电源正极;
公共端接到电磁阀的正极GND接GND;
VCC接VCC;
OUT接LED3正极;
常开端接12V电源正极;
公共端接到电磁阀的正极GND接GND;
VCC接VCC;
OUT接LED2正极;
常开端接12V电源正极;
公共端接到电磁阀的正极正极接公共端;
负极接到外电源的负极VT接LED1正极;
D0接LED2正极;
D1接LED3正极;
D2接LED4正极;
GND接GND;
VCC接VCC
图34土壤湿度传感器电路图
图35土壤湿度传感器
表33湿度控制模块引脚连线
土壤传感器引脚VCCGNDA0D0
Arduino UNO引脚5VGNDA0(接A0~A5均可)3(2~13均可)
2) 相关代码
//通过D0的值控制Arduino引脚3~5,置高电平时打开电磁阀
int a = analogRead(Moisture0);
int b = analogRead(Moisture1);
int c = analogRead(Moisture2);
float d = 100*(1023-a)/1023;
float e = 100*(1023-b)/1023;
float f = 100*(1023-c)/1023;//计算湿度的百分比
if(d<=50||(float)DHT11.humidity<=20.00||(float)DHT11.temperature>=30.00){
digitalWrite(5,HIGH);
//当土壤湿度或空气温湿度达到临界值时,将继电器置高电位,打开电磁阀,以下同理
}
else digitalWrite(5,LOW);
if(e<=50||(float)DHT11.humidity<=20.00||(float)DHT11.temperature>=30.00){
digitalWrite(4,HIGH);
}
else digitalWrite(4,LOW);
if(f<=50||(float)DHT11.humidity<=20.00||(float)DHT11.temperature>=30.00){
digitalWrite(3,HIGH);
}
else digitalWrite(3,LOW);
2. 红外遥控模块
由YK04接收卡接收遥控器发出的指令,选择不同的线路输出高电平到继电器,从而控制各继电器下游电磁阀,实现浇灌。电路如图36所示,实物如图37所示,引脚连线如表34所示。本部分不用编写代码,接收板与遥控器配套,按下不同的按键时,相应的引脚被置成高电平。遥控器的按键A、B、C、D分别控制接收板的D0~D3; 当按键被按下时,相应的接口被置成高电平; VT用于监测信号是否有效,信号有效时被置成高电平。
图36红外遥控电路图
图37红外遥控电路图
表34红外遥控模块引脚连线
接收板引脚GND5VD0D1D2D3VT
Arduino引脚GND5V234不用5
3. LCD显示模块
1) 功能介绍
LCD显示模块用于显示浇花系统的实时状态。电路如图38所示,实物如图39所示,连线如表35所示。
……
展开