扫码加入

  • 方案介绍
  • 相关推荐
申请入驻 产业图谱

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

1小时前
138
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1 系统功能介绍

本设计是一套基于 STM32 单片机 的智能温室控制报警系统,主要实现温湿度实时监测、超限报警、远程控制风扇等功能。该系统综合了温湿度采集、液晶显示、蓝牙通信、风扇驱动和蜂鸣器报警等模块,能够对温室的环境状态进行智能化管理,具有实时性高、可远程控制、报警灵敏的特点,适用于农业大棚、植物培养室等需要环境控制的场景。

系统的主要功能包括:

  1. 温湿度实时检测与显示
    系统使用温湿度传感器实时采集温度与湿度数据,通过 1602 液晶 在本地显示,同时将数据通过蓝牙发送至手机 APP 实时查看。
  2. 湿度超限报警
    当湿度超过 75% 时,系统通过蓝牙向 APP 发送报警信息,提示用户注意空气湿度过高。
  3. 远程风扇控制
    用户可通过 APP 发送控制命令:

    • 发送 "O":风扇启动。
    • 发送 "C":风扇关闭。
  4. 温度超限蜂鸣器报警
    当温度超过设定阈值(可在程序中预设,例如 30℃),蜂鸣器会自动发出声响报警,提示用户温室温度过高。

2 系统电路设计

本系统硬件部分主要由 STM32 单片机最小系统电路、温湿度传感器电路、1602 液晶显示电路、蓝牙模块电路、风扇驱动电路蜂鸣器驱动电路电源电路 组成。

2.1 STM32 单片机最小系统电路

  • 核心器件STM32F103C8T6Cortex-M3 内核,主频 72MHz,内置丰富的外设接口)。
  • 时钟电路:采用外部 8MHz 晶振,经内部 PLL 倍频至 72MHz,提高运算与通信速度。
  • 复位电路:上电自动复位,同时配备独立复位按键,方便调试与维护。
  • I/O 分配

2.2 温湿度传感器电路

  • 传感器型号DHT11 或 DHT22(可根据精度要求选择)。
  • 工作原理:传感器通过单总线与 STM32 通信,周期性发送温湿度数据。
  • 供电电压:3.3V 或 5V,数据端配有上拉电阻以保证信号稳定。
  • 作用:为系统提供温室内温湿度的实时数据基础。

2.3 1602 液晶显示电路

  • 显示功能:两行字符显示,第一行显示温度,第二行显示湿度。
  • 接口方式:4 位并行数据接口,节省 STM32 I/O 口。
  • 供电与对比度:使用 5V 供电,通过可调电位器调节对比度,确保不同光照环境下的可读性。

2.4 蓝牙模块电路

  • 模块型号:HC-05 或 HC-06(串口蓝牙模块)。
  • 通信方式UART 接口与 STM32 连接,波特率常设为 9600bps。
  • 作用
    1. 将 STM32 采集的温湿度数据实时传输到手机 APP。
    2. 接收来自 APP 的控制指令,实现风扇启停控制。
    3. 湿度超过阈值时发送报警信息。

2.5 风扇驱动电路

  • 控制原理:使用 NPN 三极管MOSFET 驱动直流风扇,通过 GPIO 控制导通与关断。
  • 供电:风扇由独立 12V 或 5V 电源供电,驱动电路与控制端进行隔离。
  • 作用:降低温度或调节空气湿度。

2.6 蜂鸣器驱动电路

  • 类型有源蜂鸣器
  • 驱动方式:由 STM32 GPIO 控制电平实现鸣叫。
  • 作用:温度超限时发出声响报警,提醒用户及时处理。

2.7 电源电路

  • 供电方式:统一 DC 12V 输入,经降压模块提供 5V,再由 LDO 提供 3.3V。
  • 稳压与滤波:采用电解电容陶瓷电容组合滤波,保证系统运行稳定,避免因电源波动导致传感器或通信异常。

3 程序设计

系统软件部分主要包括 初始化模块、温湿度采集模块、LCD 显示模块、蓝牙通信模块、风扇控制模块、蜂鸣器报警模块、主循环逻辑模块

3.1 主程序框架

#include "stm32f10x.h"
#include "lcd1602.h"
#include "dht11.h"
#include "bluetooth.h"
#include "fan.h"
#include "buzzer.h"

float temperature = 0;
float humidity = 0;
float temp_threshold = 30.0;
float hum_threshold = 75.0;

int main(void) {
    System_Init();
    while(1) {
        DHT11_ReadData(&temperature, &humidity);
        LCD_Update(temperature, humidity);
        Bluetooth_SendData(temperature, humidity);
        Check_Alarms();
        Bluetooth_ReceiveCommand();
    }
}

3.2 系统初始化模块

void System_Init(void) {
    LCD_Init();
    DHT11_Init();
    Bluetooth_Init(9600);
    Fan_Off();
    Buzzer_Off();
}
  • 初始化 LCD、传感器、蓝牙模块、风扇、蜂鸣器等硬件。
  • 设定初始状态为风扇关闭、蜂鸣器关闭。

3.3 温湿度采集模块

void DHT11_ReadData(float *temp, float *hum) {
    // 从DHT11读取温湿度数据
    // 存储到 temp 和 hum 指针指向的变量
}
  • 周期性读取传感器数据。
  • 通过软件延时或定时器中断实现固定周期采样(例如 1s 一次)。

3.4 LCD 显示模块

void LCD_Update(float temp, float hum) {
    char buffer[16];
    sprintf(buffer, "T:%.1fC", temp);
    LCD_ShowString(0, 0, buffer);
    sprintf(buffer, "H:%.1f%%", hum);
    LCD_ShowString(0, 1, buffer);
}
  • 第一行显示温度,第二行显示湿度。
  • 数据实时刷新,便于本地监控。

3.5 蓝牙通信模块

void Bluetooth_SendData(float temp, float hum) {
    char msg[32];
    sprintf(msg, "T=%.1fC H=%.1f%%n", temp, hum);
    UART_SendString(msg);
}

void Bluetooth_ReceiveCommand(void) {
    char cmd = UART_ReadByte();
    if(cmd == 'O') Fan_On();
    else if(cmd == 'C') Fan_Off();
}
  • 发送数据:将温湿度信息通过串口发送到 APP。
  • 接收指令:根据接收到的命令控制风扇。

3.6 风扇控制模块

void Fan_On(void) {
    GPIO_SetBits(GPIOB, GPIO_Pin_0);
}

void Fan_Off(void) {
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}
  • 使用 GPIO 控制 MOSFET 驱动端实现风扇启停。

3.7 蜂鸣器报警模块

void Check_Alarms(void) {
    if(temperature > temp_threshold) {
        Buzzer_On();
    } else {
        Buzzer_Off();
    }
    if(humidity > hum_threshold) {
        Bluetooth_SendString("Humidity High!n");
    }
}
  • 当温度超过设定阈值时蜂鸣器响。
  • 湿度超限时发送蓝牙报警信息到 APP。

3.8 软件设计特点

  1. 模块化设计:各功能独立封装,便于维护与扩展。
  2. 实时性高:传感器数据采集与显示刷新周期短,满足温室实时监测需求。
  3. 人机交互方便:既能本地查看数据,也能通过 APP 实时监控和控制设备。
  4. 报警灵敏:温湿度超限均能快速响应并提示用户。

相关推荐