这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
基于stm32的远程智控制浇花灌溉系统
学长这里给一个题目综合评分(每项满分5分)
选题指导, 项目分享:
https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md
通过wifi模块,结合云服务,实现远程控制浇花。这对于经常需要出差,但有偏爱花草的人来说,比较便利。
系统框架
实现原理
本系统硬件主要部件由STM32单片机,WiFi模块,传感器,电机驱动四部分组成。
其中STM32是整套系统的主控制器,负责整个系统的工作。
WiFi模块内部烧录好能够连接云端的SDK,这样能够保证系统正常的连接到云端,顺利的将数据上传到云,并且WiFi模块能够接受远程设备推送来的消息,然后将其传给STM32,从而使整套系统可以与云端对话。
传感器是本套系统的触觉系统,能够感知花瓶土壤表面的温湿度信息。
电机驱动是本套系统的执行部分,负责完成远程的控制命令。
将这几部分结合到一起就实现了一个简单的智能系统。
工作过程
主要原理图
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static uint32_t eventTimeCount; //定时事件计数器
static uint32_t motorTimeCount;//监控事件计数器
static char ledState; //LED灯状态翻转
//tim1负责定时上传事件
if(htim->Instance == htim1.Instance)
{
eventTimeCount++;
if(eventTimeCount >3000)
{
eventTimeCount = 0;
eventIsRun = 1; //开始执行相应任务
}
}
//tim2负责浇水时间管理和液晶屏时间显示
if(htim->Instance == htim2.Instance)
{
motorTimeCount++;
if(motorTimeCount >1000)
{
motorTimeCount =0;
//翻转LED灯状态
ledState = ~ledState;
if(ledState)
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);
if(flowerFlag)//是否有浇水命令,若有命令,启动浇水
{
start_flower();
flowerCnt++;
}
if(flowerCnt > 4)//浇水时间到
{
stop_flower();
flowerCnt = 0;
flowerFlag = 0;
}
updateTimeCnt++;
if(updateTimeCnt>10)//超时,则更新液晶屏时间
{
updateLcdIsRun = 1;
updateTimeCnt=0;
}
}
}
}
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "spi.h"
#include "malloc.h"
#include "DCConfig.h"
#include "text.h"
#if (COMMUNICATION_MODE==0)
#include "common.h"
#elif (COMMUNICATION_MODE==1)
#include "bc26.h"
#endif
#include "usart2.h"
#if (CODE_TYPE==2)
#include "dht11.h"
#include "soil.h"
#include "light.h"
#endif
#if (CODE_TYPE==3)
#include "fire.h" //Fire
#include "mq_25.h" //MQ25
#include "mq_135.h"
#include "pm25.h"
#endif
int main(void)
{
// u8 key,fontok=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为9600
USART2_Init(115200); //初始化串口2波特率为115200 ,WIFI模块
SPI2_Init(); //初始化SPI
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
KEY_Init(); //按键初始化
#if (CODE_TYPE==2)
DHT11_GPIO_Config();
Adc_Init_Light();
Adc_Init_Soil();
#elif (CODE_TYPE==3)
Adc_Init_Fire();
Adc_Init_MQ25();
Adc_Init_MQ135();
Adc_Init_PM25();
#elif (CODE_TYPE==4)
#endif
//初始化空气质量检测传感器
mem_init(); //初始化内存池
Lcd_Clear(WHITE);
LCD_ShowString(5,20,128,16,16,"System Success!");
delay_ms(1500);
Lcd_Clear(WHITE);//清屏
#if (COMMUNICATION_MODE==0)
atk_8266_test(); //进入ATK_ESP8266测试
#elif (COMMUNICATION_MODE==1)
Set_up_NBiot();
#endif
}
**选题指导, 项目分享:**
[https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md](https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md)