基于STM32的智能抽水灌溉系統設計(藍牙版)

????大家好,這里是5132單片機畢設設計項目分享,今天給大家分享的是基于《基于STM32的智能抽水灌溉系統設計》。

目錄

1、系統功能

2.1、硬件清單

2.2、功能介紹

2.3、控制模式

2、演示視頻和實物

3、系統設計框圖

4、軟件設計流程圖

5、原理圖

6、主程序

7、總結

1、系統功能

2.1、硬件清單

STM32F103C8T6 最小核心控制板 + 繼電器 + 風扇模塊 + 0.96 寸 OLED 顯示屏 + 蜂鳴器 + 土壤濕度傳感器 + DHT11 溫濕度傳感器 + 藍牙模塊 + 4 個按鍵

2.2、功能介紹

(1)STM32F103C8T6 最小核心控制板:作為系統核心,負責協調和控制各硬件模塊運行,處理傳感器數據并執行相應控制邏輯。
(2)繼電器:控制水泵的啟停,當系統觸發水泵開啟條件時,通過繼電器接通水泵電路。
(3)風扇模塊:在自動模式下,當環境溫度大于設定閾值時自動啟動,用于散熱或調節環境溫度;手動模式下可通過按鍵直接控制。
(4)0.96 寸 OLED 顯示屏:實時顯示土壤濕度、環境溫度濕度等傳感器數據,以及系統當前工作模式(手動 / 自動)和各閾值設置信息。
(5)蜂鳴器:當土壤濕度大于設定閾值時觸發報警,提醒用戶土壤濕度過高;支持通過蜂鳴器報警開關取消報警。
(6)土壤濕度傳感器:檢測土壤的濕度值,為系統判斷是否需要開啟水泵灌溉提供數據依據。
(7)DHT11 溫濕度傳感器:檢測環境的溫度和濕度,用于觸發風扇啟停等相應控制動作。
(8)HC-05藍牙模塊:連接手機,實現手機與系統的數據交互,用戶可通過手機查看傳感器數據或遠程控制。
(9)4 個按鍵:第 1 個按鍵:模式切換按鍵,用于在手動模式和自動模式之間切換。第 2-4 個按鍵:在自動模式下,用于設置土壤濕度、溫度、濕度的閾值;在手動模式下,用于直接控制外設(如水泵、風扇等)。

2.3、控制模式

(1)自動模式:
? ?上電默認模式,系統根據傳感器檢測值與設定閾值的對比自動執行動作:
? ? ?當土壤濕度<設定閾值時,打開水泵進行灌溉;
? ? ?當環境溫度>設定閾值時,打開風扇;
? ? ?當土壤濕度>設定閾值時,觸發蜂鳴器報警(可通過報警開關取消)。
? ? ?支持通過第 2-4 個按鍵進入閾值設置界面,調整土壤濕度、溫度等參數的觸發閾值。
(2)手動模式:
? ? ?通過第 1 個按鍵切換至手動模式,此時可通過按鍵直接控制外設啟停。

2、演示視頻和實物

基于STM32的智能抽水灌溉系統設計

?

3、系統設計框圖

4、軟件設計流程圖

5、原理圖

?

6、主程序

#include "sys.h"                //頭文件
/***********************************************************************************************
同學好!我們是5132單片機設計,定制單片機設計,實物和說明書均可定制,歡迎大家咨詢。VX:lwfw123456789
其他項目演示視頻和說明請大家移步嗶哩嗶哩、CSDN和公眾號等。
淘寶:5132單片機設計
嗶哩嗶哩:5132單片機設計
CSDN:    5132單片機設計
公眾號:  5132單片機設計
抖音  :  5132單片機設計
小紅書:  5132單片機設計
咸魚:    5132單片機設計
************************************************************************************************/
#include "delay.h"
#include "led.h"
#include "Key.h"
#include "Buzzer.h"
#include "OLED.h"
#include "AD.h"
#include "MyRTC.h"
#include "dht11.h"
#include "Serial.h"char result[100];
uint32_t bufe[5];           //存儲傳感器采集的數據
uint16_t AD4;    //存儲4路ADC值
uint8_t RxData;      //藍牙接收到的數據
uint32_t WenYu = 40;   //光照強度閾值上限
uint32_t ShiYu = 40;     //光照強度閾值下限
uint32_t TuShiYu = 40;     //光照強度閾值下限u8 temp, humi;                //存放溫濕度
u8 state, state2, state2_1,state2_2,state3;         //按鍵狀態標志
u8 t = 0;                       //傳感器讀取時間間隔
uint8_t KeyNum;                      //存儲按鍵值void shoudong()
{if (KeyNum == 2)        //按鍵{delay_ms(20);if (KeyNum == 2){state2++;if (state2 > 1){state2 = 0;}}}if (state2 == 0){FengShan_ON();}if (state2 == 1){FengShan_OFF();}if (KeyNum == 3)        //按鍵{delay_ms(20);if (KeyNum == 3){state2_1++;if (state2_1 > 1){state2_1 = 0;}}}if (state2_1 == 0){ShuiBen_ON();}if (state2_1 == 1){ShuiBen_OFF();}if (KeyNum == 4)        //按鍵{delay_ms(20);if (KeyNum == 4){state2_2++;if (state2_2 > 1){state2_2 = 0;}}}if (state2_2 == 0){Buzzer_Turn();}if (state2_2 == 1){Buzzer_OFF();}if (Serial_GetRxFlag() == 1){RxData = Serial_GetRxData();     //藍牙接收switch (RxData){case 1:state2++;if (state2 > 1){state2 = 0;}break;case 2:state2_1++;if (state2_1 > 1){state2_1 = 0;}break;case 3:state2_2++;if (state2_2 > 1){state2_2 = 0;}break;default:break;}}
}
void zhidong()
{ if(bufe[2]<TuShiYu){ShuiBen_ON();		   }else{ShuiBen_OFF();		  		}if(bufe[0]>WenYu){FengShan_ON();	   }else{FengShan_OFF();	  		}	if(bufe[1]>ShiYu){Buzzer_Turn();	   }else{Buzzer_OFF();	  		}				if (KeyNum == 2)                          //自動模式下PB0按鍵控制閾值切換{delay_ms(20);if (KeyNum == 2){state3++;if (state3 > 2){state3 = 0;}}}if (state3==1){if (KeyNum == 3)WenYu++;         //光照強度上限加if (KeyNum == 4)WenYu--;            //光照強度上限減}if (state3==2){if (KeyNum == 3)ShiYu++;if (KeyNum == 4)ShiYu--;}if (state3==0){if (KeyNum == 3)TuShiYu++;if (KeyNum == 4)TuShiYu--;}		
}
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級delay_init();      //延時函數初始化LED_Init();            //初始化與LED連接的硬件接口DHT11_Init();Buzzer_Init();             //下面為外設初始化OLED_Init();Key_Init();AD_Init();Serial_Init();   //串口1初始化MyRTC_Init();OLED_ShowChinese(2, 1, 63);OLED_ShowChinese(2, 2, 64);OLED_ShowChinese(2, 3, 65);OLED_ShowChinese(2, 4, 66);OLED_ShowString(2, 9, ":");		OLED_ShowChinese(3, 1, 26);OLED_ShowChinese(3, 2, 28);OLED_ShowString(3, 5, ":");	OLED_ShowChinese(3, 5, 27);OLED_ShowChinese(3, 6, 28);OLED_ShowString(3, 13, ":");OLED_ShowChinese(4, 1, 67);OLED_ShowChinese(4, 2, 68);OLED_ShowString(4, 5, ":");	OLED_ShowString(1, 5, "XX:XX:XX");	while (1){MyRTC_ReadTime();    //讀取時間(每一個頁面都有時間顯示)OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //時OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒DHT11_Read_Data(&temp,&humi);   //讀取溫濕度并顯示在OLED上bufe[0]=temp;	bufe[1]=humi;OLED_ShowNum(3, 6, bufe[0], 2);OLED_ShowNum(3, 14, bufe[1], 2);OLED_ShowNum(4, 6, TuShiYu, 2);OLED_ShowNum(4, 10, WenYu, 2);OLED_ShowNum(4, 14, ShiYu, 2);if (t % 10 == 0){				bufe[2] = TS_GetData(ADC_Channel_4);    //土壤傳感器     PA4
//            if (AD4 > 4000)AD4 = 4000;
//            bufe[2] = (u8)(100 - (AD4 / 40));OLED_ShowNum(2, 10, bufe[2], 3);OLED_ShowString(2, 13, "%");       }t++;Serial_SendString(result);	sprintf(result, " Wen=%d, Shi=%d,\n TuRangShiDu=%d", bufe[0], bufe[1],  bufe[2]);KeyNum = Key_GetNum();if (KeyNum == 1){delay_ms(20);if (KeyNum == 1){state++;if (state > 1){state = 0;}}}if (state == 0)    //自動模式{OLED_ShowChinese(1, 7, 51);OLED_ShowChinese(1, 8, 52);zhidong();}if (state == 1)    //手動模式{OLED_ShowChinese(1, 7, 18);OLED_ShowChinese(1, 8, 52);shoudong();}	 }
}

7、總結

本文介紹了一個基于STM32F103C8T6的智能抽水灌溉系統設計。系統硬件包括核心控制板、繼電器、傳感器(土壤濕度、DHT11溫濕度)、OLED顯示屏、蜂鳴器和藍牙模塊等。系統支持兩種工作模式:自動模式下根據傳感器數據自動控制水泵和風扇;手動模式下可通過按鍵或藍牙遠程控制外設。軟件設計采用模塊化編程,實現數據采集、閾值設置、設備控制等功能。該項目實現了智能化農業灌溉,具有實時監測、自動控制和遠程管理等特點,為現代農業灌溉提供了實用解決方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88929.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CISSP知識點匯總- 通信與網絡安全

CISSP知識點匯總 域1---安全與風險管理域2---資產安全域3---安全工程域4---通信與網絡安全域5---訪問控制域6---安全評估與測試域7---安全運營域8---應用安全開發一、安全網絡架構和保護網絡組件 1、OSI 7層協議模型 應用層:SMTP、HTTP、SNMP 、TELNET、 FTP、SFTP、POP3、IM…

C++怎么將可變參數傳遞給第三方可變參數接口

文章目錄&#x1f527; 1. 使用 va_list 轉發&#xff08;兼容C/C的傳統方案&#xff09;?? 2. 模板參數包轉發&#xff08;C11 類型安全方案&#xff09;&#x1f9e9; 3. 替代方案&#xff1a;參數封裝與適配**方案A&#xff1a;使用 std::initializer_list (同類型參數)**…

服務端實現阿里云OSS直傳

介紹 阿里云上傳 OSS 有兩種方式&#xff0c;一種是普通上傳&#xff0c;一種是客戶端直傳。 普通上傳&#xff0c;就是需要先將文件上傳到服務端&#xff0c;然后調用接口將文件上傳到阿里云。 當然這種方案經常出現不合理的使用方式&#xff0c;即客戶端充當服務端的角色&…

on-policy和offpolicy算法

一句話總結On-policy&#xff08;同策略&#xff09;&#xff1a;邊學邊用&#xff0c;用當前策略生成的數據更新當前策略。例子&#xff1a;演員自己演完一場戲后&#xff0c;根據觀眾反饋改進演技。Off-policy&#xff08;異策略&#xff09;&#xff1a;學用分離&#xff0c…

CA-IS3082W 隔離485 收發器芯片可能存在硬件BUG

RT&#xff0c;這個RS485 隔離收發器芯片基本上不可用。本來要買CA-IS3082WX&#xff0c;不小心在某寶買到了沒有X 的CA-IS3082W。立創上說沒有X 的版本已經停產&#xff0c;連對應的數據手冊都找不到&#xff0c;全換成WX 了。 這類半雙工485 收發器芯片電路一般都直接把DE 和…

dockerfile 筆記

# 設置JAVA版本 FROM openjdk:20-ea-17-jdk MAINTAINER aaa # 指定存儲卷, 任何向/tmp寫入的信息都不會記錄到容器存儲層 VOLUME /tmp # 拷貝運行JAR包 ARG JAR_FILE COPY app.jar /app.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo "Asia/…

高德開放平臺攜手阿里云,面向開發者推出地圖服務產品MCP Server

高德開放平臺攜手阿里云&#xff0c;面向開發者推出地圖服務產品MCP Server&#xff0c;通過技術能力與生態資源的深度協同&#xff0c;助力開發者高效構建標準化地圖服務&#xff0c;加速智能化場景落地。 高德開放平臺攜手阿里云&#xff0c;面向開發者推出MCP Server技術融合…

【論文閱讀】AdaptThink: Reasoning Models Can Learn When to Think

AdaptThink: Reasoning Models Can Learn When to Think3 Motivation3.1 理論基礎3.2 NoThinking在簡單問題中的優勢3.3 動機總結4. AdaptThink4.1 約束優化目標數學建模基本定義原始優化問題懲罰項轉換歸一化處理策略梯度實現優勢函數定義PPO風格損失函數4.2 重要性采樣策略問…

Redis高可用集群一主從復制概述

一、環境概述在分布式集群系統中為了解決服務單點故障問題&#xff0c;通常會把數據復制出多個副本部署到不同的機器中&#xff0c;滿足故障恢復和負載均衡等需求。Redis也是如此&#xff0c;它為我們提供了復制功能&#xff0c;實現了相同數據的多個Redis副本。復制功能是高可…

Java 樹形結構、層級結構數據構建

目錄前言一、樹狀結構數據庫存儲二、工具類三、測試四、自定義樹節點返回類型&#xff08;只保留部分字段&#xff09;1. 新增 TreeNodeDTO 類2.修改TreeUtil 類3.測試4.輸出前言 有時候&#xff0c;開發過程中我們會遇到一些樹狀層級結構。 比如&#xff0c;公司部門組織架構…

求解線性規劃模型最優解

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 既然選擇了遠方&#xff0c;當不負青春…

達夢國產數據庫安裝

打開ISO 、文件點擊運行接受選擇安裝路徑數據初始化 新數據庫要創建數據庫實例 選擇一般用途數據庫位置 選擇所以系統用戶&#xff0c;設置初始密碼創建示例庫可以選可以不選查找最近添加文件登錄

互斥鎖與同步鎖

1. 鎖的本質&#xff1a;解決并發問題的基石在多線程/多進程環境中&#xff0c;臨界區&#xff08;Critical Section&#xff09; 是訪問共享資源的代碼段。鎖的核心目標是確保互斥訪問——任意時刻僅有一個執行單元能進入臨界區。// 典型臨界區示例 pthread_mutex_lock(&m…

高密度PCB板生產廠商深度解析

在電子制造領域&#xff0c;高密度PCB&#xff08;印制電路板&#xff09;作為核心基礎元件&#xff0c;其技術精度與生產穩定性直接影響終端產品性能。本文精選五家具備核心技術優勢的國內廠商&#xff0c;通過實地調研與行業數據驗證&#xff0c;為讀者呈現真實可信的供應商選…

力扣 hot100 Day44

98. 驗證二叉搜索樹 給你一個二叉樹的根節點 root &#xff0c;判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下&#xff1a; 節點的左子樹只包含 小于 當前節點的數。 節點的右子樹只包含 大于 當前節點的數。 所有左子樹和右子樹自身必須也是二叉搜索樹 //自…

【基礎架構】——軟件系統復雜度的來源(低成本、安全、規模)

目錄 一、軟件系統復雜度的來源之低成本二、軟件系統復雜度的來源之安全2.1、功能安全2.2、架構安全2.3、規模2.3.1、功能越來越多,導致系統復雜度指數級上升2.3.2、數據越來越多,系統復雜度發生質變本文來源:極客時間vip課程筆記 一、軟件系統復雜度的來源之低成本 當我們設…

機器學習 YOLOv5手繪電路圖識別 手繪電路圖自動轉換為仿真軟件(如LT Spice)可用的原理圖,避免人工重繪

以下是對《手繪電路圖識別》論文的核心解讀&#xff0c;結合技術方案、實驗數據和創新點進行結構化總結&#xff1a;研究目標 解決痛點&#xff1a;將手繪電路圖自動轉換為仿真軟件&#xff08;如LT Spice&#xff09;可用的原理圖&#xff0c;避免人工重繪。 關鍵挑戰&#xf…

一般的非線性規劃求解(非凸函數)

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 每一個裂縫都是為透出光而努力&#x…

CTFHub————Web{信息泄露[Git泄露(Stash、Index)]}

Web 信息泄露 Git泄露 Stash 首先&#xff0c;我們先讀題&#xff0c;由題可知我們可以用BugScanTeam或GitHack完成該題那么我們先開題&#xff0c; 好吧&#xff0c;他問我們flag在哪里&#xff0c;我怎么知道fag在哪里。 先打開GitHack 使用 py GitHack.py http://challenge-…

缺乏實際里程碑管控項目進度,如何設定關鍵節點

要通過實際里程碑管控項目進度&#xff0c;核心措施包括&#xff1a;設定可量化的關鍵節點、明確交付標準與責任人、同步風險與資源計劃、基于階段目標拆解任務、建立節點驗證與復盤機制。例如&#xff0c;設定可量化的關鍵節點能讓團隊清晰理解“何時完成了什么”并及時調整方…