单片机毕业设计 自动浇花灌溉系统设计


1 简介

Hi,大家好,今天向大家介绍一个学长做的单片机项目

基于单片机的自动浇花灌溉系统设计

大家可用于 课程设计 或 毕业设计

选题指导,项目分享:

https://gitee.com/yaa-dc/warehouse-1/blob/master/iot/README.md

2 主要器件

1、采用stm32单片机作为控制单元;

2、采用LCD1602液晶进行数据显示;

3、采用土壤湿度传感器+ADC0832检测湿度,当湿度低于设置湿度下限值时,自动控制继电器开启水泵进行灌溉,同时蜂鸣器声光报警;当湿度高于设置湿度上限值时,自动关闭水泵停止灌溉。

4、采用按键设置湿度的上下限报警范围,并具有掉电保存功能,保存在STC单片机内部EEPROM,上电无需重新设置。

5、电机和水泵,抽水灌溉

3 实现效果

在这里插入图片描述
当土壤的温湿度达到阈值时,制动给植物浇水,搭载上WiFi模块后还可以远程控制浇水,在手机app或者网页上查看植物状态。

4 设计原理

在这里插入图片描述

5 关键代码


#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "24cxx.h"
#include "key.h" 
#include "pwm.h"
#include "myiic.h"
//要写入到24c02的字符串数组
const u8 TEXT_Buffer[]={"Explorer STM32F4 IIC TEST"};
#define SIZE sizeof(TEXT_Buffer)	 
//定义数据缓存区
static u8 YUYIN_BUF[USART_REC_LEN];	
static u8 GUANGQIANG_BUF[SIZE]; 	//光照传感器数据
u8 uart1_res;
u8 uart3_res;
u8 TIM3_20ms;
u8 TIM3_1s;
char uart1_flag;
char uart3_flag;
/*********************************函数声明****************************************/
int main(void)
{ 
	/*******硬件初始化******/	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置系统中断优先级分组2
	delay_init(168);    //初始化延时函数
	uart_init(115200);		//初始化串口1波特率为115200
	uart3_init(115200);		//初始化串口3波特率为115200
	LED_Init();		   //LED初始化	
  BEEP_Init();		//BEEP初始化
	GAS_Init();	//气体检测初始化
	VOLUME_Init();	//光电初始化
	PWM_Init(2000,840);	
/*********************************逻辑循环****************************************/
	while(1)
	{
		switch(uart1_res)
		{
			case '1':
			{
				TRASH_A1=300;	 
				Voice_LED=0; 	//点亮指示灯
			    uart1_res=0;	 //标志清零
printf("111");
				if(TIM3_1s>6)
				{
					uart1_flag=TIM3_1s-10;
				}
				else
				{
					uart1_flag=TIM3_1s;
				}
				break;
			}
			case '2':
			{
				TRASH_A2=300;		
				Voice_LED=0	;	//点亮指示灯
				//uart1_res=0;		//标志清零
				printf("222");
				if(TIM3_1s>6)
				{
					uart1_flag=TIM3_1s-10;
				}
				else
				{
					uart1_flag=TIM3_1s;
				}
				break;
			}
			case '3':
			{
				TRASH_A3=300;
				Voice_LED=0;	//点亮指示灯
				uart1_res=0;	//标志清零
				printf("333");
				if(TIM3_1s>6)
				{
					uart1_flag=TIM3_1s-10;
				}
				else
				{
					uart1_flag=TIM3_1s;
				}
				break;
			}
			case '4':
			{
				TRASH_A6=300;	
				Voice_LED=0;	//点亮指示灯
				uart1_res=0;		//标志清零
				printf("444");
				if(TIM3_1s>6)
				{
					uart1_flag=TIM3_1s-10;
				}
				else
				{
					uart1_flag=TIM3_1s;
				}
				break;
			}
			default:
			{
				if((TIM3_1s-uart1_flag)>2)
				{
					printf("555");
					TRASH_A1=400;		
					TRASH_A2=400;		
					TRASH_A3=400;		
					TRASH_A6=400;		
					Voice_LED=1;	//关闭指示灯
					uart1_flag=TIM3_1s;
				}
				break;
			}
		}	
/*******************************无线通信模块**********************************/
			switch(uart3_res)
		{
			case '1':
			{
				TRASH_A1=300;		
				Voice_LED=0;		//点亮指示灯
				uart1_res=0;			//标志清零
				if(TIM3_1s>6)
				{
					uart3_flag=TIM3_1s-10;
				}
				else
				{
					uart3_flag=TIM3_1s;
				}
				
				break;
			}
			case '2':
			{
				TRASH_A2=300;		
				Voice_LED=0;		//点亮指示灯
				uart3_res=0;		//标志清零
				if(TIM3_1s>6)
				{
					uart3_flag=TIM3_1s-10;
				}
				else
				{
					uart3_flag=TIM3_1s;
				}
				break;
			}
			case '3':
			{
				TRASH_A3=300; 	
				Voice_LED=0;	//点亮指示灯
				uart3_res=0;		//标志清零
				if(TIM3_1s>6)
				{
					uart3_flag=TIM3_1s-10;
				}
				else
				{
					uart3_flag=TIM3_1s;
				}
				break;
			}
			case '4':
			{
				TRASH_A6=300;
				Voice_LED=0;		//点亮指示灯
				uart1_res=0;		//标志清零
				if(TIM3_1s>6)
				{
					uart3_flag=TIM3_1s-10;
				}
				else
				{
					uart3_flag=TIM3_1s;
				}
				break;
			}
			default:
			{
				if((TIM3_1s-uart3_flag)>2)
				{
					TRASH_A1=400;
					TRASH_A2=400;
					TRASH_A3=400;
					TRASH_A6=400;
					Voice_LED=0;//关灯
					uart3_flag=TIM3_1s;
				}
				break;
			}
		}
		if(GAS==0)		
		{
			Gas_LED = 0;		//指示灯点亮
			BEEP = 1;	
		}
		else
		{
			Gas_LED = 1;		//关闭指示灯
			BEEP = 0;		
		}
		if(VOLUME==0)
		{
			Volume_LED = 0;		//指示灯点亮
			BEEP = 1;	
		}
		else
		{
			Volume_LED = 1;		//关闭指示灯
			if(GAS==1)
			{
				BEEP = 0;	
			}
		}
	}
}	

选题指导,项目分享:

https://gitee.com/yaa-dc/warehouse-1/blob/master/iot/README.md

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值