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

基于STM32单片机的智能温室控制声光报警系统设计

1 系统功能介绍

本设计是一套 基于STM32单片机的智能温室控制声光报警系统,实现了温湿度监测、声光报警、风扇控制以及移动端APP通信功能。系统结合了传感器检测、显示、声光报警、无线通信和手动控制功能,为温室环境管理提供了自动化和智能化解决方案。

主要功能如下:

  1. 温湿度监测功能:通过温湿度传感器采集温室内部环境参数,实时显示在 LCD1602 上,并通过蓝牙模块发送至 APP。
  2. 阈值报警功能:用户可通过按键设置温湿度上下限,当环境温湿度超出设定阈值时,系统通过蜂鸣器或 LED 提示,同时向 APP 发送报警信息,如“Shidu High”、“Shidu Low”或“Shidu Normal”。
  3. 风扇控制功能:通过 APP 发送指令“O”可开启风扇,“C”可关闭风扇,实现远程调节温室温度。
  4. 声光报警功能:当温度超出阈值时蜂鸣器报警,湿度异常时 LED 指示,同时系统周期性闪烁指示灯显示系统运行状态。
  5. 人机交互功能:通过按键修改温湿度报警阈值,实现本地参数设置与管理。

该系统实现了环境监测与控制、报警提示和远程管理功能的高度集成,适合小型智能温室、农业科研以及家庭种植场景使用。


2 系统电路设计

本系统电路由多个模块组成,包括核心控制模块、传感器模块、显示模块、报警模块、风扇控制模块、蓝牙通信模块及按键模块。以下分别进行详细说明。

2.1 STM32单片机最小系统

  • 核心芯片:STM32F103C8T6

  • 功能

    • 接收来自温湿度传感器的环境参数;
    • 处理阈值报警逻辑;
    • 控制蜂鸣器、LED、风扇的工作状态;
    • 通过蓝牙模块发送实时数据和报警信息至 APP。
  • 设计要点

    • 外接晶振与复位电路确保系统稳定启动;
    • 提供多个 GPIO 接口用于连接传感器、显示器、蜂鸣器和按键;
    • 采用稳压电源保证单片机及外设正常工作。

2.2 温湿度传感器模块

  • 传感器型号:常用 DHT11 或 DHT22

  • 功能:采集温室内部温度和湿度数据。

  • 接口设计

    • 单线接口,与单片机 GPIO 通信;
    • 外接上拉电阻,提高数据通信稳定性;
    • 通过定时采集,保证数据实时更新。

2.3 LCD1602液晶显示模块

  • 功能:实时显示温湿度、阈值及系统状态信息。

  • 接口设计

    • 采用 8 位并口与单片机连接;
    • 外接对比度调节电位器,保证显示清晰;
    • 可通过软件实现显示刷新和界面切换。

2.4 蜂鸣器与LED报警模块

  • 功能

    • 蜂鸣器用于温度超限报警;
    • LED 用于湿度超限或低限报警提示。
  • 设计要点

    • 蜂鸣器采用有源型,单片机 I/O 口直接驱动;
    • LED 接限流电阻防止过流烧毁。
  • 系统运行指示灯:周期闪烁显示系统正常运行状态。

2.5 风扇控制模块

  • 功能:调节温室内部温度,配合阈值报警实现环境调控。

  • 控制方式

    • 通过单片机 GPIO 控制继电器或 MOSFET 驱动风扇;
    • 支持手动通过 APP 控制开关;
    • 系统可根据温度阈值自动启停风扇。

2.6 蓝牙通信模块

  • 模块型号:HC-05 或 HC-06

  • 功能:实现单片机与 APP 的无线通信,传输温湿度数据及报警信息。

  • 接口设计

    • 串口 UART 通信;
    • 电源电压稳定 3.3V 或 5V;
    • 支持接收 APP 控制指令“ O ”开启风扇,“ C ”关闭风扇。

2.7 按键模块

  • 功能:本地修改温湿度报警阈值及其他系统设置。

  • 设计方式

    • 多按键分别实现增加、减少、确认等操作;
    • 使用上拉电阻保证按键稳定;
    • 软件进行防抖处理,避免误操作。

3 程序设计

系统程序采用模块化结构,包括初始化模块、数据采集模块、显示模块、按键处理模块、阈值判断与报警模块、蓝牙通信模块及风扇控制模块。

3.1 系统初始化

#include "stm32f10x.h"
#include "lcd1602.h"
#include "dht11.h"
#include "bluetooth.h"
#include "buzzer_led.h"
#include "fan_control.h"
#include "key.h"uint8_t temp, hum;
uint8_t temp_upper=30, temp_lower=20;
uint8_t hum_upper=70, hum_lower=40;void System_Init(void){LCD1602_Init();DHT11_Init();Bluetooth_Init();BuzzerLED_Init();Fan_Init();Key_Init();LCD1602_Clear();LCD1602_ShowString(0,0,"Smart Greenhouse Init");
}

3.2 温湿度采集模块

void Read_TempHum(void){DHT11_Read(&temp, &hum);
}

3.3 LCD显示模块

void Display_Data(void){LCD1602_Clear();LCD1602_ShowString(0,0,"Temp:");LCD1602_ShowNum(5,0,temp,2);LCD1602_ShowString(8,0,"C");LCD1602_ShowString(0,1,"Hum:");LCD1602_ShowNum(4,1,hum,2);LCD1602_ShowString(7,1,"%");
}

3.4 按键处理模块

void Key_Process(void){if(Key_Set==0){// 进入阈值设置模式}if(Key_Up==0){// 增加当前参数}if(Key_Down==0){// 减少当前参数}
}

3.5 阈值判断与报警模块

void Alarm_Control(void){if(temp > temp_upper){Buzzer_ON();Bluetooth_Send("Temp High");} else if(temp < temp_lower){LED_ON();Bluetooth_Send("Temp Low");}if(hum > hum_upper){Bluetooth_Send("Shidu High");} else if(hum < hum_lower){Bluetooth_Send("Shidu Low");} else {Bluetooth_Send("Shidu Normal");}
}

3.6 蓝牙通信模块

void Bluetooth_Process(void){char cmd = Bluetooth_Receive();if(cmd == 'O'){Fan_Start();} else if(cmd == 'C'){Fan_Stop();}
}

3.7 风扇控制模块

void Fan_Control(void){if(temp > temp_upper){Fan_Start();} else if(temp < temp_lower){Fan_Stop();}
}

3.8 主程序循环

int main(void){System_Init();while(1){Read_TempHum();Display_Data();Key_Process();Alarm_Control();Bluetooth_Process();Fan_Control();}
}

系统通过模块化设计,实现了温湿度实时监测、阈值报警、风扇控制以及与 APP 的无线通信功能。各模块协同工作,确保温室环境稳定、安全和高效运行。

http://www.xdnf.cn/news/1395865.html

相关文章:

  • Geocodify 的 API
  • CD71.【C++ Dev】二叉树的三种非递归遍历方式
  • 网络编程 反射【详解】 | Java 学习日志 | 第 15 天
  • 2025牛客暑期多校训练营4 G Ghost in the Parentheses 题解记录
  • Day17 Docker学习
  • uac播放与录制
  • 论文阅读:arixv 2025 WideSearch: Benchmarking Agentic Broad Info-Seeking
  • React Three Fiber
  • LBM——大型行为模型助力波士顿人形Atlas完成多任务灵巧操作:CLIP编码图像与语义,之后DiT去噪扩散生成动作
  • 编程速递:RAD Studio 13 即将到来的功能
  • Linux 线程调度核心要点
  • Shell 脚本基础教程
  • java序列化
  • Android系统框架知识系列(十九):Android安全架构深度剖析 - 从内核到应用的全栈防护
  • python学习打卡day48
  • “白月光”焦点何晟铭现身宁夏中宁,助力非遗与三农发展
  • 拎包入住搭建 Browser Use Agent:基于PPIO Model API +Agent 沙箱的一体化构建
  • 变量声明方式
  • linux学习-数据库
  • 中科米堆CASAIM五金配件三维扫描测量尺寸形位公差
  • 嵌入式Linux驱动开发:i.MX6ULL平台设备驱动
  • 使用 Docker 部署 Squid 为 Kubernetes 中的 Nexus3 提供公网代理访问
  • linux 条件变量与生产消费者模型
  • 玳瑁的嵌入式日记D29-0829(进程间通信)
  • Python OpenCV图像处理与深度学习:Python OpenCV开发环境搭建与入门
  • 基于能量方法的纳维-斯托克斯方程高阶范数有界性理论推导-陈墨仙
  • STM32CubeMX + HAL 库:基于 I²C 通信的 AHT20 高精度温湿度测量实验
  • 【系列03】端侧AI:构建与部署高效的本地化AI模型 第2章:端侧AI硬件入门
  • 134-细粒度多尺度符号熵和鲸鱼优化算法的滚动轴承故障诊断技术MSVM
  • Redis搭建哨兵模式一主两从三哨兵