基于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 的无线通信功能。各模块协同工作,确保温室环境稳定、安全和高效运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值