【毕业设计】远程智能浇花灌溉系统 - stm32 单片机 嵌入式 物联网

187 篇文章 117 订阅
151 篇文章 41 订阅


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于stm32的远程智控制浇花灌溉系统

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md


1 简介

通过wifi模块,结合云服务,实现远程控制浇花。这对于经常需要出差,但有偏爱花草的人来说,比较便利。

2 主要器件

  • STM32RBT6
  • WiFi模块
  • 温湿度传感器
  • 电机驱动

3 实现效果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 设计原理

系统框架
在这里插入图片描述

实现原理

本系统硬件主要部件由STM32单片机,WiFi模块,传感器,电机驱动四部分组成。
其中STM32是整套系统的主控制器,负责整个系统的工作。
WiFi模块内部烧录好能够连接云端的SDK,这样能够保证系统正常的连接到云端,顺利的将数据上传到云,并且WiFi模块能够接受远程设备推送来的消息,然后将其传给STM32,从而使整套系统可以与云端对话。
传感器是本套系统的触觉系统,能够感知花瓶土壤表面的温湿度信息。
电机驱动是本套系统的执行部分,负责完成远程的控制命令。
将这几部分结合到一起就实现了一个简单的智能系统。
在这里插入图片描述

工作过程

  1. 系统定时3S上传一次温度和湿度信息到云端,通过远程手机客户端便可以查看花瓶当前的温湿度情况。
  2. 系统可以随时接手远程(手机客户端)发送来的控制命令,并且执行相应的命令。
  3. 结合云端的阈值报警功能,可以设置湿度低于某一值之后通过邮件或者短信等形式告知用户,然后用户在决策要不要浇花,如果需要就可以打开手机客户端,立刻给心爱的花草浇水了。

主要原理图

在这里插入图片描述

5 部分关键代码

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)















5 最后

  • 14
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智能浇花系统是一种利用Android Studio开发的应用程序,它结合了STM32系列单片机、DTH11温湿度传感器和HC-05蓝牙模块,实现远程可控的浇花功能。该系统包括一个APK软件和一个智能浇花硬件,可以实时获取温湿度信息并进行短距离控制。 在Android Studio中开发智能浇花系统,你可以使用Java语言编写应用程序的前端界面和逻辑代码。你可以使用Android Studio提供的各种工具和库来创建用户界面、处理用户输入、与蓝牙模块进行通信等。 以下是一个简单的示例代码,演示如何在Android Studio中实现智能浇花系统的功能: ```java // 导入所需的库 import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.UUID; public class MainActivity extends AppCompatActivity { // 定义蓝牙相关的变量 private BluetoothAdapter bluetoothAdapter; private BluetoothDevice bluetoothDevice; private BluetoothSocket bluetoothSocket; private InputStream inputStream; private OutputStream outputStream; private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); // 定义界面上的控件 private TextView temperatureTextView; private TextView humidityTextView; private Button waterButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化界面上的控件 temperatureTextView = findViewById(R.id.temperatureTextView); humidityTextView = findViewById(R.id.humidityTextView); waterButton = findViewById(R.id.waterButton); // 初始化蓝牙适配器 bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // 设置按钮的点击事件 waterButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 发送浇花指令到硬件 try { outputStream.write("water".getBytes()); } catch (IOException e) { e.printStackTrace(); } } }); } @Override protected void onResume() { super.onResume(); // 连接蓝牙设备 bluetoothDevice = bluetoothAdapter.getRemoteDevice("设备的MAC地址"); try { bluetoothSocket = bluetoothDevice.createRfcommSocketToServiceRecord(MY_UUID); bluetoothSocket.connect(); inputStream = bluetoothSocket.getInputStream(); outputStream = bluetoothSocket.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } // 开始接收温湿度数据 new Thread(new Runnable() { @Override public void run() { byte[] buffer = new byte[1024]; int bytes; while (true) { try { bytes = inputStream.read(buffer); String data = new String(buffer, 0, bytes); // 解析温湿度数据并更新界面 String[] values = data.split(","); final String temperature = values[0]; final String humidity = values[1]; runOnUiThread(new Runnable() { @Override public void run() { temperatureTextView.setText(temperature); humidityTextView.setText(humidity); } }); } catch (IOException e) { e.printStackTrace(); break; } } } }).start(); } @Override protected void onPause() { super.onPause(); // 断开蓝牙连接 try { inputStream.close(); outputStream.close(); bluetoothSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这是一个简单的示例代码,它演示了如何在Android Studio中使用Java语言开发智能浇花系统的应用程序。你可以根据自己的需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值