基于51单片机智能大棚浇花花盆浇水灌溉补光散热设计

基于51单片机智能大棚浇花花盆浇水灌溉补光散热设计

1. 系统功能概述

本系统是一个基于STC89C52单片机的智能温室/花盆自动管理系统,能够对环境的光照、温度、土壤湿度进行实时监测,并通过控制补光灯、风扇、水泵等执行器,自动调节植物生长环境,以达到节能高效、智能控制的目的。设计中还引入了用户按键设定功能,使系统具备更强的互动性与可配置性。

本系统具有以下功能:

  1. 实时检测环境光照强度,低于设定值自动补光;
  2. 实时检测温度,温度过低自动加热,过高自动散热;
  3. 实时检测土壤湿度,湿度不足自动启动水泵浇水;
  4. 1602液晶显示模块实时显示光照、温度、湿度、设定值等参数;
  5. 用户通过按键设定各项阈值;
  6. 所有模拟信号(光照/湿度)均通过PCF8591 A/D模块进行采集;
  7. 控制电路包括LED、风扇、继电器、水泵等。

2. 电路设计

2.1 单片机控制模块(STC89C52)

STC89C52作为系统核心,承担传感器采集、执行器控制、参数处理、液晶显示、按键输入等所有核心逻辑功能。

  • 利用P0口与LCD1602通讯;
  • 利用P1口控制LED、风扇、水泵;
  • 利用P2口读取按键;
  • P3.4/P3.5用于I2C通信(与PCF8591及其他I2C模块通讯)。

2.2 光照检测与补光电路

  • 使用光敏电阻作为光照检测元件,通过与固定电阻分压后送入PCF8591的A/D通道;
  • 单片机通过I2C读取光照强度值;
  • 若强度低于设定阈值,则点亮1颗白色高亮LED作为补光灯;
  • 若强度正常或偏高,补光灯关闭。

2.3 温度检测与调节模块

  • 使用DS18B20数字温度传感器直接与单片机通信;

  • 温度值通过液晶显示;

  • 可设定温度阈值;

    • 若温度低于设定值,则点亮黄色LED模拟加热;
    • 若温度高于设定值,则启动风扇。

2.4 土壤湿度检测模块

  • 使用土壤湿度传感器输出模拟电压;

  • 通过PCF8591 A/D采样获得湿度值;

  • 可设定湿度阈值;

    • 若湿度低于设定值,则驱动继电器开启水泵加水;
    • 若湿度正常或偏高,水泵不动作。

2.5 A/D采样模块(PCF8591)

  • PCF8591为四路8位A/D模块;
  • 接入光照与湿度两个模拟信号;
  • I2C方式与STC89C52通讯;
  • 采样数据实时读取并处理后用于控制逻辑判断。

2.6 显示模块(LCD1602)

  • 用于实时显示:

    • 当前光照强度与设定阈值;
    • 当前温度与设定值;
    • 当前湿度与设定阈值;
  • 使用并口与单片机通信;

  • 背光常开或通过控制引脚管理。


2.7 控制执行模块

LED补光/加热
  • 白色LED用于光照补光;
  • 黄色LED用于温度过低模拟加热;
  • 电路经限流电阻后直接由单片机控制。
风扇控制
  • 使用NPN三极管+反向二极管驱动小型风扇;
  • 温度高于设定阈值时,自动启动风扇散热。
水泵与继电器控制
  • 水泵通过继电器控制;
  • 若湿度低于设定值,单片机输出高电平驱动继电器闭合,供电给水泵。

2.8 按键输入模块

  • 使用若干独立按键实现用户设定功能;
  • 可切换光照、温度、湿度的设定模式;
  • 调整各项设定阈值;
  • 按键去抖处理后读取操作意图。

2.9 电源电路

  • 统一使用+5V电源供电;
  • 风扇、水泵需额外+12V电源通过继电器控制;
  • 所有传感器、单片机等均由稳压+5V供电。

3. 程序设计

3.1 主程序结构

主函数中初始化所有模块,然后循环读取传感器数据并进行处理:

void main() {
    Init_All();
    while(1) {
        Read_Sensors();
        Display_Values();
        Process_LightControl();
        Process_TempControl();
        Process_SoilControl();
        Key_Scan();
        Delay_ms(200);
    }
}

3.2 初始化模块

初始化LCD、DS18B20、PCF8591、IO端口等:

void Init_All() {
    LCD_Init();
    PCF8591_Init();
    DS18B20_Init();
    Set_Default_Thresholds();
    Init_IO();
}

3.3 传感器数据采集模块

光照、湿度通过PCF8591采集:
uint8_t Read_Light() {
    return PCF8591_Read(0);  // 通道0:光照
}

uint8_t Read_Soil() {
    return PCF8591_Read(1);  // 通道1:湿度
}
温度通过DS18B20读取:
float Read_Temperature() {
    return DS18B20_GetTemp(); // 返回摄氏温度
}

3.4 显示模块

LCD显示光照、温度、湿度、设定阈值:

void Display_Values() {
    LCD_ShowString(1, 1, "L:");
    LCD_ShowNum(1, 3, light_value, 3);
    LCD_ShowString(1, 7, "T:");
    LCD_ShowNum(1, 9, (int)temperature, 2);
    LCD_ShowString(2, 1, "S:");
    LCD_ShowNum(2, 3, soil_value, 3);
}

3.5 光照控制模块

void Process_LightControl() {
    if(light_value < light_threshold) {
        LED_White_On();
    } else {
        LED_White_Off();
    }
}

3.6 温度控制模块

void Process_TempControl() {
    if(temperature < temp_threshold) {
        LED_Yellow_On(); // 加热
        Fan_Off();
    } else if(temperature > temp_threshold) {
        Fan_On();        // 散热
        LED_Yellow_Off();
    } else {
        Fan_Off();
        LED_Yellow_Off();
    }
}

3.7 土壤湿度控制模块

void Process_SoilControl() {
    if(soil_value < soil_threshold) {
        WaterPump_On();
    } else {
        WaterPump_Off();
    }
}

3.8 按键设置模块

通过状态变量控制当前调整项(光照阈值、温度阈值、湿度阈值):

void Key_Scan() {
    key = Get_Key();
    if(key == SET_LIGHT) {
        state = SETTING_LIGHT;
    } else if(key == SET_TEMP) {
        state = SETTING_TEMP;
    } else if(key == SET_SOIL) {
        state = SETTING_SOIL;
    } else if(key == INC) {
        if(state == SETTING_LIGHT) light_threshold += 5;
        if(state == SETTING_TEMP) temp_threshold += 1;
        if(state == SETTING_SOIL) soil_threshold += 5;
    } else if(key == DEC) {
        if(state == SETTING_LIGHT) light_threshold -= 5;
        if(state == SETTING_TEMP) temp_threshold -= 1;
        if(state == SETTING_SOIL) soil_threshold -= 5;
    }
}

3.9 控制模块驱动函数

void LED_White_On() { P1_0 = 0; }
void LED_White_Off() { P1_0 = 1; }

void LED_Yellow_On() { P1_1 = 0; }
void LED_Yellow_Off() { P1_1 = 1; }

void Fan_On() { P1_2 = 0; }
void Fan_Off() { P1_2 = 1; }

void WaterPump_On() { P1_3 = 0; }
void WaterPump_Off() { P1_3 = 1; }

4. 总结

本系统基于STC89C52单片机,融合了传感器检测、A/D采集、用户交互与自动控制等功能模块,成功实现了温室/花盆的智能灌溉、补光、加热与通风管理。系统结构清晰,功能分明,逻辑严密,适合在农业自动化、家庭园艺、智能生态瓶等多种场景推广应用。

其优点包括:

  • 自动化程度高,可长时间无人值守;
  • 用户可灵活设定各项参数;
  • 数据实时反馈,便于观察与调整;
  • 模块化设计,便于扩展或维护。

后续可进一步扩展远程控制(如加入WiFi/蓝牙)、历史数据存储、手机APP联动等功能,实现真正意义上的“智能农业管理系统”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值