当前位置: 首页 > news >正文

基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计

1 系统功能介绍

本系统是一款基于 STM32 单片机 的智能粮仓温湿度监控与阈值控制系统,能够实现对粮仓内温度、湿度的实时采集、显示、报警及远程控制。系统通过 蓝牙模块 与手机进行无线通信,手机端可接收温湿度数据,也可发送命令调整温湿度报警阈值,实现粮仓环境的智能化管理。

系统的主要功能包括:

  1. 温湿度实时采集与显示

    • 使用 DS18B20 采集温度数据;
    • 使用 土壤湿度传感器 采集湿度数据;
    • OLED 显示屏显示实时温度、湿度及报警阈值。
  2. 蓝牙数据传输与阈值控制

    • 通过蓝牙模块向手机发送实时温湿度数据;
    • 手机通过串口调试软件或专用 APP 接收数据并显示;
    • 手机可发送指令调整温湿度报警阈值。
  3. 继电器控制与报警

    • 当温度超过温度阈值时,自动打开继电器1(可接风机、降温装置);
    • 当湿度超过湿度阈值时,自动打开继电器2(可接除湿机、通风装置);
    • 超限时手机端显示报警信息。
  4. 手机命令控制格式

    • 温度阈值增加:temp add
    • 温度阈值减少:temp down
    • 湿度阈值增加:dh add
    • 湿度阈值减少:dh_down

2 系统电路设计

2.1 单片机最小系统

本系统的核心控制单元是 STM32F103C8T6 单片机,其 ARM Cortex-M3 内核运行速度快,适合实时数据采集与多任务处理。

  • 晶振电路:使用 8MHz 外部晶振,配合内部倍频至 72MHz 主频,保证系统稳定运行;
  • 复位电路:上电自动复位,并提供手动复位按钮;
  • 电源电路:使用 3.3V 稳压电源为 STM32 供电,外围传感器和蓝牙模块根据需要提供 3.3V 或 5V 电源。

2.2 温度传感器 DS18B20

  • 功能:用于测量粮仓内温度,测量范围 -55℃~125℃,精度 ±0.5℃;
  • 通信协议:单总线协议,占用一个 GPIO 口即可完成数据传输;
  • 工作模式:由 STM32 定时读取温度数据,转换为浮点数后显示与发送。

2.3 土壤湿度传感器

  • 功能:检测粮仓内环境湿度(或粮堆湿度);
  • 信号类型:模拟电压信号;
  • 接口:通过 STM32 ADC 模块采集电压值,映射为湿度百分比。

2.4 OLED 显示模块

  • 屏幕类型:0.96 英寸 128×64 OLED,I2C 接口;
  • 功能:显示温度、湿度的实时值及报警阈值;
  • 优点:低功耗、高对比度,适合暗光环境。

2.5 蓝牙通信模块

  • 型号:HC-05/HC-06(串口透传模块);

  • 接口:UART 串口通信,波特率 9600bps;

  • 功能

    • 向手机发送温湿度数据;
    • 接收手机端阈值调整命令并解析执行。

2.6 继电器模块

  • 功能:驱动外部风机、加热器、除湿机等设备;

  • 控制逻辑

    • 温度超限 → 打开继电器1;
    • 湿度超限 → 打开继电器2;
    • 恢复到正常值 → 关闭继电器。

3 程序设计

3.1 主程序框架

程序主要流程为:初始化 → 采集温湿度数据 → OLED 显示 → 蓝牙发送数据 → 蓝牙接收命令并调整阈值 → 判断是否超限并控制继电器。

#include "stm32f10x.h"
#include "ds18b20.h"
#include "oled.h"
#include "adc.h"
#include "usart.h"
#include "relay.h"
#include <stdio.h>
#include <string.h>float temperature = 0;
float humidity = 0;
float tempThreshold = 30.0;
float humThreshold = 60.0;
char rxBuffer[50];int main(void)
{SystemInit();DS18B20_Init();OLED_Init();ADC_Init();USART1_Init(9600);Relay_Init();while(1){temperature = DS18B20_GetTemp();humidity = ADC_GetHumidity();OLED_ShowTempHum(temperature, humidity, tempThreshold, humThreshold);SendDataToPhone(temperature, humidity, tempThreshold, humThreshold);if(USART1_Receive(rxBuffer)){ParseCommand(rxBuffer);}Relay_Control(temperature, humidity, tempThreshold, humThreshold);}
}

3.2 温度采集模块(DS18B20)

float DS18B20_GetTemp(void)
{// 发送温度转换命令// 延时等待转换完成// 读取数据并转换为摄氏温度return tempValue;
}

逻辑:通过单总线协议发送温度转换命令 → 读取两个字节数据 → 转换成浮点数。


3.3 湿度采集模块(ADC)

float ADC_GetHumidity(void)
{uint16_t value = ADC_ReadChannel(ADC_Channel_1);return (value / 4095.0) * 100; // 转换为百分比
}

逻辑:ADC 采样 03.3V 电压 → 映射到 0100% 湿度值。


3.4 蓝牙通信与命令解析

void ParseCommand(char *cmd)
{if(strcmp(cmd, "temp add") == 0) tempThreshold += 1;else if(strcmp(cmd, "temp down") == 0) tempThreshold -= 1;else if(strcmp(cmd, "dh add") == 0) humThreshold += 1;else if(strcmp(cmd, "dh_down") == 0) humThreshold -= 1;
}

逻辑:蓝牙串口接收到命令 → 比对字符串 → 修改对应阈值。


3.5 OLED 显示模块

void OLED_ShowTempHum(float temp, float hum, float tThr, float hThr)
{OLED_Clear();OLED_ShowString(0, 0, "T:");OLED_ShowFloat(20, 0, temp);OLED_ShowString(70, 0, "TH:");OLED_ShowFloat(100, 0, tThr);OLED_ShowString(0, 2, "H:");OLED_ShowFloat(20, 2, hum);OLED_ShowString(70, 2, "HH:");OLED_ShowFloat(100, 2, hThr);
}

逻辑:第一行显示温度和温度阈值,第二行显示湿度和湿度阈值。


3.6 继电器控制模块

void Relay_Control(float temp, float hum, float tThr, float hThr)
{if(temp > tThr) Relay1_On();else Relay1_Off();if(hum > hThr) Relay2_On();else Relay2_Off();
}

逻辑:根据当前采集值与阈值比较,控制继电器开关。


4 总结

该基于 STM32 单片机 的智能粮仓温湿度检测系统,将 DS18B20 温度传感器土壤湿度传感器OLED 显示蓝牙通信继电器控制 有机结合,既能在本地显示与控制,又能通过蓝牙与手机实时交互,实现温湿度数据监控与报警阈值的远程设置。

这种设计能够有效防止粮食储存过程中出现温湿度异常造成的霉变、虫害等问题,提升粮仓管理的智能化与自动化水平。未来还可扩展 WiFi 模块,实现云端存储与大数据分析,提高系统的可视化与远程管理能力。

http://www.dtcms.com/a/333869.html

相关文章:

  • YAML:锚点深度解析,告别重复,拥抱优雅的配置艺术
  • 初识CNN02——认识CNN2
  • 浏览器面试题及详细答案 88道(45-55)
  • MyBatis 与 MyBatis-Plus 的区别
  • 20day-人工智能-机器学习-线性回归
  • 数据处理与统计分析 —— numpy入门
  • @mcp.tool如何从函数定义映射到llm系统输入
  • Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
  • LORA模块的通讯速率(915Mhz)以及通道数量规划
  • 图片滤镜处理(filters)
  • 【机器学习深度学习】生成式评测
  • 数据处理分析环境搭建+Numpy使用教程
  • Design Compiler:使用IC Compiler II Link
  • PCA降维 提升模型训练效率
  • CUDA TensorRT Python智能提示补全解决方案
  • MySQL约束知识点
  • iceberg 底层存储HDFS与juiceFS的区别
  • epoll发数据学习
  • 自己开发的VIP monitor通过TLM port口连接到RefenceModel 但是get不出transaction的问题
  • 《中国棒球知识科普》国家级运动健将标准·棒球1号位
  • 力扣(接雨水)——标准双指针
  • 最长链(二叉树直径DFS)
  • 【学习笔记】NTP服务客户端配置
  • 医疗领域名词标准化工具
  • 二分算法(模板)
  • Vue插槽---slot详解
  • RAGFlow入门
  • 大麦APP抢票揭秘
  • 亚马逊新品推广的智能突围:从传统SP广告到DeepBI策略革新
  • 结合项目对AOP的实践和理论讲解-AOP八股