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



    1 简介

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

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

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


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

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


    2 主要器件

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

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

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

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

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

    3 实现效果

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

    4 设计原理

    在这里插入图片描述


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

    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;	
    			}
    		}
    	}
    }	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222

    6 最后

  • 相关阅读:
    静态HTML CSS网站制作成品 简单的学生网页作业代码【带视频演示】
    019 Linux tcpdump 抓包案例入门可真简单啊?
    Docker基础学习
    【vue3】computed计算属性
    社区团购新玩法,生鲜蔬菜配货发货小程序商城
    MFC Windows 程序设计[199]之文本块例程(附源码)
    Docker监控方案(TIG)的研究与实践之Influxdb
    【Linux】使用 UEFI 的操作系统启动过程
    Optional 常用方法总结
    Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/125429845