文章目录
- 1 简介
- 2 主要器件
- 3 实现效果
- 4 设计原理
- 5 关键代码
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); //设置系统中断优先级分组2delay_init(168); //初始化延时函数uart_init(115200); //初始化串口1波特率为115200uart3_init(115200); //初始化串口3波特率为115200LED_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