1 系统功能介绍

本设计为 基于 STM32 单片机的智能温室控制系统,旨在利用现代嵌入式控制技术与物联网通信技术,实现对温室内部环境的实时监控与智能调控。温室是植物生长的重要场所,合理的温度与湿度环境对于作物的健康成长至关重要,而人工管理往往效率低、准确性差。通过本系统,用户不仅可以在本地通过液晶屏直观查看温湿度信息,还能够借助蓝牙模块与手机 APP 实现远程监控与控制,达到节能高效、智能便捷的目标。

系统的主要功能包括:

  1. 环境参数检测与显示:通过温湿度传感器采集环境温湿度数据,实时显示在 1602 液晶屏 上,同时通过蓝牙模块传输至手机 APP。

  2. 报警功能:当湿度超过 75%RH 时,系统会自动向手机 APP 发送报警信息,提醒用户采取措施。

  3. 风扇智能控制:用户可以通过手机 APP 发送指令实现风扇远程控制:

    • 发送字符 “O”:风扇启动;
    • 发送字符 “C”:风扇关闭。
  4. 自动化与交互结合:系统既具备自动监测与报警功能,又能通过 APP 交互进行手动调控,保证了灵活性与可靠性。

该系统在实际应用中可广泛应用于智能农业、温室种植、仓储环境调节等场合,为绿色农业与物联网结合提供了良好的实践样例。


2 系统电路设计

2.1 单片机最小系统电路

核心控制器选用 STM32F103C8T6 单片机,其具有 32 位 ARM Cortex-M3 内核,主频可达 72MHz,拥有丰富的外设接口与强大的运算能力。

  • 时钟电路:采用 8MHz 晶振,通过倍频获得系统主频;
  • 复位电路:采用上电复位与按键复位双重方式,保证系统稳定启动;
  • 电源电路:单片机工作电压为 3.3V,通过 AMS1117-3.3 稳压芯片由 5V 电源转换而来。

2.2 温湿度传感器电路

系统采用 DHT11 或 DHT22 温湿度传感器

  • 传感器通过单总线与 STM32 通信,周期性输出当前温湿度数据;
  • 湿度检测范围在 20%RH~90%RH,精度满足温室应用需求;
  • 数据读取通过定时器与 IO 捕捉实现可靠通信。

2.3 1602 液晶显示电路

  • 1602 液晶用于实时显示温湿度数据;
  • 数据接口模式选择 4 位总线方式,节省 IO 口;
  • 第一行显示温度,第二行显示湿度,界面简洁直观。

2.4 风扇控制电路

  • 采用 NPN 三极管+继电器驱动电路
  • STM32 输出高低电平控制三极管,继电器吸合与断开控制风扇电源;
  • 驱动电路中加入反向二极管保护,防止继电器产生的感应电压损坏电路。

2.5 蓝牙通信电路

  • 系统采用 HC-05 蓝牙串口模块,与 STM32 的 USART 串口通信;
  • 波特率设置为 9600bps,满足数据传输需求;
  • 手机 APP 通过蓝牙连接至系统,实现数据接收与命令发送。

2.6 电源电路

  • 整个系统供电电压为 5V;
  • 1602 液晶、蓝牙模块均可直接使用 5V;
  • STM32 与 DHT11 工作电压为 3.3V,由 AMS1117-3.3 稳压模块提供;
  • 电路中增加电源滤波电容,保证电源稳定,减少干扰。

3 程序设计

3.1 主程序设计

主程序负责系统的整体调度,包括初始化、数据采集、数据显示、蓝牙通信与风扇控制。

#include "stm32f10x.h"
#include "lcd1602.h"
#include "dht11.h"
#include "usart.h"
#include "fan.h"

uint8_t humidity, temperature;
uint8_t rxData;

int main(void)
{
    LCD1602_Init();
    DHT11_Init();
    USART1_Init(9600);
    Fan_Init();

    while(1)
    {
        if(DHT11_Read_Data(&temperature, &humidity) == SUCCESS)
        {
            LCD1602_ShowString(0,0,"Temp: ");
            LCD1602_ShowNum(6,0,temperature,2);
            LCD1602_ShowString(0,1,"Humi: ");
            LCD1602_ShowNum(6,1,humidity,2);

            USART1_SendString("T:");
            USART1_SendNum(temperature);
            USART1_SendString(" H:");
            USART1_SendNum(humidity);
            USART1_SendString("\r\n");

            if(humidity > 75)
            {
                USART1_SendString("ALARM: HUMI HIGH!\r\n");
            }
        }

        if(USART1_Receive(&rxData) == SUCCESS)
        {
            if(rxData == 'O') Fan_On();
            else if(rxData == 'C') Fan_Off();
        }
        Delay_ms(1000);
    }
}

3.2 DHT11 温湿度采集程序

uint8_t DHT11_Read_Data(uint8_t *temp, uint8_t *humi)
{
    uint8_t buf[5];
    // 按照时序读取40位数据
    if(DHT11_Read(buf) == SUCCESS)
    {
        *humi = buf[0];
        *temp = buf[2];
        return SUCCESS;
    }
    return ERROR;
}

3.3 液晶显示程序

void LCD1602_ShowNum(uint8_t x, uint8_t y, uint16_t num, uint8_t len)
{
    char str[5];
    sprintf(str,"%d",num);
    LCD1602_ShowString(x,y,str);
}

3.4 蓝牙串口通信程序

void USART1_Init(uint32_t baudrate)
{
    // 配置USART1:波特率9600, 8N1格式
    // 开启接收中断,处理蓝牙指令
}

void USART1_SendString(char *str)
{
    while(*str)
    {
        USART_SendData(USART1, *str++);
        while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    }
}

3.5 风扇控制程序

void Fan_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}

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

void Fan_Off(void)
{
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}

4 总结

本设计的 基于 STM32 的智能温室控制系统,实现了对温湿度的实时监测与风扇的智能控制,能够在本地与远程(手机 APP)两种方式下使用。系统不仅可以直观显示温湿度信息,还能够在湿度过高时及时报警,避免作物因环境不适而生长受阻。

其优点主要体现在:

  1. 实时性强:传感器检测频率高,信息即时更新。
  2. 交互性好:液晶显示与 APP 通信结合,用户体验友好。
  3. 控制灵活:支持自动报警与手动远程控制相结合。
  4. 扩展性强:未来可接入 Wi-Fi 模块,实现互联网远程控制。

该系统在现代智能农业和温室管理中具有广泛的应用前景,为实现智慧农业与节能管理提供了可靠的技术支撑。

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐