基于STM32单片机的智能温室控制声光报警系统设计
1 系统功能介绍
本设计是一套 基于STM32单片机的智能温室控制声光报警系统,实现了温湿度监测、声光报警、风扇控制以及移动端APP通信功能。系统结合了传感器检测、显示、声光报警、无线通信和手动控制功能,为温室环境管理提供了自动化和智能化解决方案。
主要功能如下:
- 温湿度监测功能:通过温湿度传感器采集温室内部环境参数,实时显示在 LCD1602 上,并通过蓝牙模块发送至 APP。
- 阈值报警功能:用户可通过按键设置温湿度上下限,当环境温湿度超出设定阈值时,系统通过蜂鸣器或 LED 提示,同时向 APP 发送报警信息,如“Shidu High”、“Shidu Low”或“Shidu Normal”。
- 风扇控制功能:通过 APP 发送指令“O”可开启风扇,“C”可关闭风扇,实现远程调节温室温度。
- 声光报警功能:当温度超出阈值时蜂鸣器报警,湿度异常时 LED 指示,同时系统周期性闪烁指示灯显示系统运行状态。
- 人机交互功能:通过按键修改温湿度报警阈值,实现本地参数设置与管理。
该系统实现了环境监测与控制、报警提示和远程管理功能的高度集成,适合小型智能温室、农业科研以及家庭种植场景使用。
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 的无线通信功能。各模块协同工作,确保温室环境稳定、安全和高效运行。