基于STM32單片機的智能糧倉溫濕度檢測藍牙手機APP設計

基于STM32單片機的智能糧倉溫濕度檢測藍牙手機APP設計

1 系統功能介紹

本系統是一款基于STM32單片機的智能糧倉環境監測與控制裝置,核心目標是通過傳感器實時采集糧倉內的溫度和濕度信息,并結合藍牙通信模塊將數據傳輸至手機端,實現對糧倉環境的智能化監控與控制。

系統主要具備以下功能:

  1. 使用STM32單片機作為主控核心,協調傳感器采集、數據處理和通信交互。

  2. 通過DS18B20溫度傳感器和土壤濕度傳感器分別實現溫度與濕度的精準采集。

  3. 通過OLED液晶顯示屏實時顯示當前溫度、濕度以及閾值信息,方便用戶現場查看。

  4. 通過藍牙模塊與手機APP進行無線通信,能夠在手機串口調試助手或定制APP中查看數據。

  5. 手機端支持命令控制,可對溫度和濕度報警閾值進行設置,命令包括:

    • temp add:增加溫度閾值
    • temp down:降低溫度閾值
    • dh add:增加濕度閾值
    • dh down:降低濕度閾值
  6. 當監測值超過閾值時,STM32控制繼電器動作,用于啟動風機、除濕設備或其他執行機構,同時手機APP提示報警。

該系統不僅適用于糧倉溫濕度檢測,還可拓展應用于智能農業、倉儲管理、冷鏈監控等場景。


2 系統電路設計

系統電路由STM32F103C8T6最小系統電路、傳感器電路、顯示電路、藍牙通信電路、繼電器電路以及電源電路組成。

2.1 STM32最小系統電路

STM32F103C8T6單片機作為主控芯片,運行頻率高、接口豐富。最小系統包括:

  • 電源電路:通過AMS1117-3.3穩壓芯片將5V轉化為3.3V,為STM32和外設供電。
  • 時鐘電路:外接8MHz晶振提供系統主頻,并使用內部PLL倍頻至72MHz。
  • 復位電路:由按鍵和電阻電容構成,保證單片機上電復位。

2.2 DS18B20溫度傳感器電路

DS18B20是一款單總線數字溫度傳感器,測量精度高,工作范圍寬。其數據線通過一個4.7kΩ上拉電阻接到STM32的GPIO口。

2.3 土壤濕度傳感器電路

土壤濕度傳感器輸出為模擬電壓信號,需通過STM32的ADC通道進行采集和處理。為了減少干擾,可在輸出端加濾波電容。

2.4 OLED顯示電路

OLED屏幕采用I2C接口,SCL與SDA分別連接STM32的PB6和PB7引腳。OLED可顯示溫度、濕度、閾值和報警狀態,界面簡潔直觀。

2.5 藍牙模塊電路

藍牙模塊選用HC-05或HC-06,通過串口與STM32通信。

  • TXD → STM32 RXD
  • RXD → STM32 TXD
  • VCC → 5V
  • GND → GND

模塊默認波特率為9600bps,適用于與手機進行數據交換。

2.6 繼電器電路

繼電器通過三極管驅動,受STM32控制。當溫濕度超過閾值時,繼電器閉合,驅動風機或加熱設備。

2.7 電源電路

系統電源由5V直流電源供給,經過穩壓電路得到3.3V,分別為STM32、OLED、藍牙模塊提供穩定電源。


3 程序設計

程序設計采用模塊化思想,主要分為:主控系統、傳感器數據采集模塊、顯示模塊、藍牙通信模塊和繼電器控制模塊。

3.1 主程序設計

主程序負責各模塊初始化,并在循環中實現數據采集、數據處理、顯示與通信。

#include "stm32f10x.h"
#include "ds18b20.h"
#include "oled.h"
#include "bluetooth.h"
#include "relay.h"
#include "adc.h"float temperature;
uint16_t humidity;
float temp_threshold = 30.0;
uint16_t dh_threshold = 50;int main(void) {SystemInit();OLED_Init();DS18B20_Init();ADC1_Init();USART1_Init(9600);Relay_Init();while(1) {temperature = DS18B20_GetTemp();humidity = ADC1_ReadChannel(0);OLED_ShowString(0,0,"Temp:");OLED_ShowNum(40,0,(int)temperature,2,16);OLED_ShowString(0,2,"Hum :");OLED_ShowNum(40,2,humidity,3,16);Bluetooth_ReceiveCommand(&temp_threshold, &dh_threshold);if(temperature > temp_threshold || humidity > dh_threshold) {Relay_On();Bluetooth_Send("Warning! Threshold exceeded!");} else {Relay_Off();}delay_ms(500);}
}

3.2 DS18B20溫度采集程序

溫度采集函數通過單總線協議讀取傳感器數據。

float DS18B20_GetTemp(void) {uint8_t tempL, tempH;short temp;float t;DS18B20_Start();DS18B20_WriteByte(0xCC);DS18B20_WriteByte(0x44);delay_ms(750);DS18B20_Start();DS18B20_WriteByte(0xCC);DS18B20_WriteByte(0xBE);tempL = DS18B20_ReadByte();tempH = DS18B20_ReadByte();temp = (tempH << 8) | tempL;t = temp * 0.0625;return t;
}

3.3 濕度采集程序

濕度采集通過STM32的ADC模塊完成。

uint16_t ADC1_ReadChannel(uint8_t channel) {ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_55Cycles5);ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));return ADC_GetConversionValue(ADC1);
}

3.4 OLED顯示程序

OLED模塊通過I2C接口進行驅動,主要用于數據顯示。

void OLED_ShowData(float temp, uint16_t hum, float t_th, uint16_t h_th) {OLED_ShowString(0,0,"Temp:");OLED_ShowNum(50,0,(int)temp,2,16);OLED_ShowString(0,2,"Hum :");OLED_ShowNum(50,2,hum,3,16);OLED_ShowString(0,4,"T_thr:");OLED_ShowNum(60,4,(int)t_th,2,16);OLED_ShowString(0,6,"H_thr:");OLED_ShowNum(60,6,h_th,3,16);
}

3.5 藍牙通信程序

藍牙模塊與手機APP交互,通過命令調整閾值。

void Bluetooth_ReceiveCommand(float *t_th, uint16_t *h_th) {char cmd[20];if(USART_ReceiveString(cmd)) {if(strcmp(cmd,"temp add")==0) (*t_th)++;else if(strcmp(cmd,"temp down")==0) (*t_th)--;else if(strcmp(cmd,"dh add")==0) (*h_th)++;else if(strcmp(cmd,"dh down")==0) (*h_th)--;}
}

3.6 繼電器控制程序

void Relay_On(void) {GPIO_ResetBits(GPIOB, GPIO_Pin_12);
}void Relay_Off(void) {GPIO_SetBits(GPIOB, GPIO_Pin_12);
}

4 總結

本系統基于STM32單片機,結合溫濕度傳感器、OLED顯示、藍牙通信和繼電器控制,構建了一個完整的糧倉環境監測與控制方案。通過硬件與軟件的協同工作,實現了溫濕度采集、數據顯示、閾值設置、報警控制和手機遠程交互等功能,具有結構簡單、成本低廉、功能實用的優點。

系統不僅適用于糧倉,還可以應用于農作物種植、實驗室環境監控、倉儲物流等場景,具備較高的實用價值與推廣意義。

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

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

相關文章

簡單視頻轉換器 avi轉mp4

直接上代碼package com.example.videoconverter;import ws.schild.jave.Encoder; import ws.schild.jave.EncoderException; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.EncodingAttributes; impor…

Kafka 與 RocketMQ 核心概念與架構對比

Kafka 與 RocketMQ 核心概念與架構對比DeepSeek生成&#xff0c;便于記憶大概邏輯核心概念對比圖 #mermaid-svg-dEbo1XpAjfzOjvUW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dEbo1XpAjfzOjvUW .error-icon{fill…

30分鐘深度壓測cuBLAS:從FP64到INT8全精度性能剖析

在深度學習和高性能計算領域&#xff0c;GPU的矩陣運算性能是衡量系統算力的核心指標之一。NVIDIA的cuBLAS庫作為CUDA平臺上最基礎的線性代數計算庫&#xff0c;其性能表現直接影響著上層應用的運行效率。本文將詳細介紹如何使用cublasmatmulbench工具對多GPU進行全面的性能基準…

超越模仿:探尋智能的本源

引言&#xff1a;超越模仿&#xff0c;探尋智能的本源近年來&#xff0c;以大語言模型&#xff08;LLM&#xff09;為代表的自然語言處理&#xff08;NLP&#xff09;技術&#xff0c;在模仿人類語言生成方面取得了令人矚目的成就。從流暢的對話到精煉的文本摘要&#xff0c;機…

ROS/ROS2課程筆記00-大綱-25-26-1

大綱 AI版 以下是基于第四代高校課程核心理念設計的《ROS2機器人程序設計&#xff08;ROS2 Jazzy版&#xff09;》課程大綱&#xff0c;突出智能互聯、跨學科融合、終身學習等特征&#xff0c;并融入技術賦能、生態重塑、素養導向等要求&#xff1a; 課程名稱&#xff1a;ROS…

Linux內核進程管理子系統有什么第四十六回 —— 進程主結構詳解(42)

接前一篇文章&#xff1a;Linux內核進程管理子系統有什么第四十五回 —— 進程主結構詳解&#xff08;41&#xff09; 本文內容參考&#xff1a; Linux內核進程管理專題報告_linux rseq-CSDN博客 《趣談Linux操作系統 核心原理篇&#xff1a;第三部分 進程管理》—— 劉超 《…

Linux網絡連接不上?NetworkManager提示“device not managed“!

#操作系統 #Linux #NetworkManager適用環境kylin v10Centos 8Redhat 8一、故障現象在CentOS/RHEL(同樣適用于kylin v10&#xff09;系統中&#xff0c;管理員執行 nmcli connection up ens160 命令嘗試激活名為 ens160 的網絡連接時&#xff0c;遇到以下錯誤&#xff1a;[roo…

【系統分析師】第2章-基礎知識:數學與工程基礎(核心總結)

更多內容請見: 備考系統分析師-專欄介紹和目錄 文章目錄 一、數學統計基礎 1.1 概率論基礎 1.2 數理統計基礎 1.3 常用統計分析方法 二、圖論應用 2.1 基本概念 2.2 核心算法與應用 三、預測與決策 3.1 預測方法 3.2 決策方法 四、數學建模 4.1 建模過程 4.2 常用模型類型 五、…

StrUtil.isBlank()

這段代碼是一個條件判斷&#xff0c;用于檢查變量 shopJson 是否為空或空白&#xff0c;如果是&#xff0c;就直接返回 null。我們來逐句講解&#xff1a;原始代碼&#xff1a; if(StrUtil.isBlank(shopJson)) {// 3.存在&#xff0c;直接返回return null; }逐句解釋&#xff1…

mysql 回表查詢(二次查詢,如何檢查,如何規避)

h5打開以查看 “回表查詢”通常發生在使用二級索引&#xff08;Secondary Index&#xff09;的查詢中。當查詢所需的數據列并不全部包含在二級索引中時&#xff0c;即使使用了索引&#xff0c;MySQL 也需要根據索引記錄中的主鍵值&#xff0c;回到聚簇索引&#xff08;Cluster…

深度學習(二):神經元與神經網絡

在人工智能的浪潮中&#xff0c;神經網絡&#xff08;Neural Networks&#xff09;無疑是驅動核心技術的引擎&#xff0c;它賦予了計算機前所未有的學習和識別能力。而這一切的起點&#xff0c;是受到生物大腦中基本單元——神經元&#xff08;Neurons&#xff09;的深刻啟發。…

JavaScript 行為型設計模式詳解

1. 觀察者模式1.1. 使用場景觀察者模式用于對象間的一對多依賴關系&#xff0c;當一個對象的狀態發生變化時&#xff0c;所有依賴于它的對象都能收到通知并自動更新。常用于事件處理、通知系統。在前端中&#xff0c;觀察者模式用于實現事件監聽、數據綁定等功能。1.2. 代碼實現…

指令查找表LUT

本文整理自22. FlexSPI—讀寫外部SPI NorFlash — [野火]i.MX RT庫開發實戰指南——基于i.MXRT1052 文檔 用作個人學習和分享 指令查找表LUT 訪問FLASH存儲器通常包含一些讀寫功能的的控制指令&#xff0c;主控設備可通過這些指令訪問FLASH存儲器。 為了適應這種需求&#…

uv使用指南

&#x1f680; Python 打包工具 UV 使用指南 UV 是一個用 Rust 編寫的極速 Python 包管理器和解析器&#xff0c;旨在成為 pip、pip-tools、virtualenv 等工具的單一替代方案。 &#x1f4cb; 目錄 核心概念與設計哲學安裝與配置基礎使用方法項目管理與工作流高級功能與技巧…

安卓學習 之 圖片控件和圖片按鈕

今天學習的是ImageView 和 ImageButton這兩個控件還是比較簡單的&#xff1a;先來看看最后的樣式圖片吧&#xff1a;從圖片中可以看到ImageView中的圖片要大很多&#xff0c;這是因為中的ImageView中的圖片跟ImageView控件的大小而自動調整。Imag…

動態規劃-學習筆記

這是一份動態規劃&#xff08;Dynamic Programming, DP&#xff09;完整學習筆記。筆記將從一星難度&#xff08;入門&#xff09;到五星難度&#xff08;進階&#xff09;&#xff0c;循序漸進&#xff0c;涵蓋核心思想、經典模型和解題方法論。 本來打算今天更新背包問題的題…

Linux 可信啟動深度解析:從UEFI到操作系統的信任鏈

文章目錄引言一、 可信根基&#xff1a;TPM與核心概念1.1 什么是“度量” (Measurement)&#xff1f;1.2 信任鏈與TPM PCR二、 階段一&#xff1a;固件的可信啟動 (UEFI)2.1 引導的起點&#xff1a;從SEC到DXE的初始化2.2 引導設備選擇 (BDS)&#xff1a;UEFI如何找到GRUB2.3 S…

61-python中面向對象三大特性

前言&#xff1a; 面向對象編程&#xff0c;是許多編程語言都支持的一種編程思想。簡單理解是&#xff1a;基于模板&#xff08;類&#xff09;去創建實體&#xff08;對象&#xff09;&#xff0c; 使用對象完成功能開發。面向對象包含三大主要特性&#xff1a; 封裝 繼承 多態…

BP-Adaboost模型

BP-Adaboost模型是一種將BP神經網絡作為弱分類器的集成學習框架&#xff0c;通過AdaBoost算法動態調整樣本權重和模型權重&#xff0c;顯著提升預測精度和泛化能力。一、模型架構與工作原理 1. 基礎框架 弱分類器單元&#xff1a;采用單隱藏層BP神經網絡&#xff08;結構示例&a…

k230 +canMV+ LVGL控件 仿手表表盤觸摸屏滾動、選中后彈窗效果完整示例程序

現在智能手表用的越來越多,其交互方式比較有特點,現在k230開發板上,基于LVGL(Light and Versatile Graphics Library)編寫一個嵌入式GUI應用程序,使用LVGL配合觸摸屏實現模仿智能手表的表盤滾動效果,實際效果如下: 程序使用LVGL圖形庫和MediaManager程序,創建帶有觸摸…