【毕业设计】基于单片机的自动浇花灌溉系统设计 -嵌入式 物联网 stm32 c51

文章目录

  • 1 简介
  • 2 主要器件
  • 3 实现效果
  • 4 设计原理
  • 5 关键代码
  • 6 最后


1 简介

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

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

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


单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


2 主要器件

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

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

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

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

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

3 实现效果

【毕业设计】基于单片机的自动浇花灌溉系统设计 -嵌入式 物联网 stm32 c51_第1张图片
当土壤的温湿度达到阈值时,制动给植物浇水,搭载上WiFi模块后还可以远程控制浇水,在手机app或者网页上查看植物状态。

4 设计原理

【毕业设计】基于单片机的自动浇花灌溉系统设计 -嵌入式 物联网 stm32 c51_第2张图片


单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


5 关键代码


# 作者:丹成学长 , q 532036360
#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;	
			}
		}
	}
}	

6 最后

你可能感兴趣的:(单片机,物联网,毕业设计,单片机,stm32,物联网,毕业设计,灌溉系统)