基于STM32单片机远程浇花花盆GSM短信浇水补光设计

1 系统功能介绍

本设计基于 STM32F103C8T6 单片机,实现了一个具备 花盆土壤湿度检测、环境温湿度采集、光照强度检测、自动浇水补光、GSM 短信远程控制 的智能浇花系统。该系统能够实现花卉养护过程中的自动化和远程化,极大地减轻了用户的管理负担,特别适用于室内外需要远程管理和监控的花盆、盆栽及小型园艺场景。

本系统的主要功能包括:

  1. 数据采集与显示:通过 DHT11 传感器获取环境温湿度数据,通过光照强度传感器采集光照值,通过 LCD1602 液晶模块实时显示各项参数。

  2. 自动控制功能:当湿度低于 35% 时,继电器驱动水泵实现浇水;当光照不足时,自动开启高亮 LED 灯补光。

  3. 远程短信控制功能:通过 GSM 模块 SIM800A 与手机交互,可远程发送指令:

    • 发送 jiaoshui,系统启动继电器 1(控制水泵),进行浇水,1 分钟后自动关闭,并返回短信 jiaoshui_ok
    • 发送 buguang,系统开启补光 LED 灯,持续 1 分钟后关闭,并返回短信 buguang_ok
    • 发送 get,系统将当前液晶显示的内容(温度、湿度、光照强度)通过短信返回用户手机。
  4. 安全与节能设计:所有继电器与 LED 均设有定时关闭机制,避免过度运行造成能源浪费。


2 系统电路设计

整个系统由 STM32F103C8T6 最小系统电路 作为核心,外围模块包括 DHT11 温湿度传感器电路、LCD1602 液晶显示模块、继电器驱动电路、SIM800A GSM 短信模块、高亮 LED 补光电路、光照强度检测电路以及电源电路

2.1 STM32F103C8T6 单片机最小系统电路

  • 核心器件:STM32F103C8T6,32 位 ARM Cortex-M3 内核,主频 72MHz,丰富的外设接口。

  • 功能:作为整个系统的控制核心,负责数据采集、逻辑判断、短信收发、继电器与补光灯控制。

  • 接口分配

    • ADC 通道:采集光照强度模拟信号。
    • GPIO 口:连接继电器驱动电路、补光 LED 开关控制。
    • USART1:与 GSM 模块通信。
    • I2C/并口:驱动 LCD1602 液晶显示。

2.2 DHT11 温湿度传感器电路

  • 元件:DHT11 数字温湿度传感器。
  • 功能:通过单总线协议与 STM32 通信,周期性读取环境温湿度数据。
  • 应用:用于环境参数监测,为远程获取温湿度信息提供支持。

2.3 LCD1602 液晶显示模块

  • 显示内容:实时显示温度、湿度、光照强度以及系统状态(浇水/补光)。
  • 接口:采用 4 位并行方式与 STM32 通信,节省 IO 资源。

2.4 光照强度检测电路

  • 传感器:光敏电阻与分压电路,输出电压与光照强度成反比。
  • 接口:连接至 STM32 的 ADC 通道,实现光照强度采样。
  • 应用:当光照低于设定阈值时,自动启动补光 LED。

2.5 继电器控制电路

  • 作用:通过单片机 GPIO 控制继电器,驱动外部水泵和 LED 补光灯。

  • 设计:采用三极管放大电路驱动继电器,增加续流二极管保护。

  • 控制对象

    • 继电器 1:控制水泵,实现浇水功能。
    • 继电器 2:控制补光 LED 灯,实现自动或远程补光功能。

2.6 GSM 短信模块 SIM800A 电路

  • 功能:通过 AT 指令与 STM32 通信,实现短信收发。
  • 接口:采用 USART 串口通信,波特率 9600。
  • 应用:接收来自手机的指令,并返回执行结果或传感器数据。

2.7 高亮 LED 灯补光电路

  • 元件:高亮 LED,额定工作电压 12V,通过继电器控制供电。
  • 应用:光照不足时自动开启,或通过短信远程控制强制补光。

2.8 电源电路

  • 设计

    • 系统采用 220V AC 转 5V DC 电源模块,为单片机与传感器供电。
    • SIM800A 需 4V 电源,采用 AMS1117-4.0 稳压芯片提供稳定电源。

3 系统程序设计

系统软件采用模块化设计,主要包括 主程序框架、DHT11 温湿度采集模块、光照采集模块、LCD1602 显示模块、继电器控制模块、SIM800A 短信通信模块

3.1 主程序框架

#include "stm32f10x.h"
#include "dht11.h"
#include "lcd1602.h"
#include "relay.h"
#include "gsm.h"
#include "adc.h"

float temperature, humidity, light;
uint8_t relay_pump = 0;
uint8_t relay_light = 0;

int main(void)
{
    SystemInit();
    DHT11_Init();
    LCD1602_Init();
    Relay_Init();
    GSM_Init(9600);
    ADC_Config();
    
    while(1)
    {
        DHT11_Read(&temperature, &humidity);
        light = ADC_ReadChannel(0);
        
        LCD1602_Clear();
        LCD1602_Printf("T:%.1f H:%.1f",temperature,humidity);
        LCD1602_SetCursor(1,0);
        LCD1602_Printf("L:%.1f",light);
        
        if(humidity < 35)
        {
            Relay_On(1);  // 启动水泵
            DelayMs(60000);
            Relay_Off(1);
        }
        
        if(light < 2000)
        {
            Relay_On(2);  // 开启补光灯
            DelayMs(60000);
            Relay_Off(2);
        }
        
        GSM_ProcessCmd(&relay_pump, &relay_light, temperature, humidity, light);
    }
}

3.2 DHT11 采集模块

void DHT11_Read(float *temp, float *humi)
{
    uint8_t buf[5];
    if(DHT11_GetData(buf) == 0)
    {
        *humi = buf[0] + buf[1]/10.0;
        *temp = buf[2] + buf[3]/10.0;
    }
}

3.3 光照采集模块

float Get_Light(void)
{
    uint16_t adc_value = ADC_ReadChannel(0);
    float light = (adc_value/4096.0) * 10000; 
    return light;
}

3.4 继电器控制模块

void Relay_Init(void)
{
    // 初始化 GPIO,省略寄存器配置
}

void Relay_On(uint8_t id)
{
    if(id == 1) GPIO_SetBits(GPIOB, GPIO_Pin_0); // 水泵
    if(id == 2) GPIO_SetBits(GPIOB, GPIO_Pin_1); // 补光灯
}

void Relay_Off(uint8_t id)
{
    if(id == 1) GPIO_ResetBits(GPIOB, GPIO_Pin_0);
    if(id == 2) GPIO_ResetBits(GPIOB, GPIO_Pin_1);
}

3.5 GSM 短信通信模块

void GSM_ProcessCmd(uint8_t *pump, uint8_t *light, float t, float h, float l)
{
    char cmd[32];
    if(GSM_ReceiveSMS(cmd))
    {
        if(strstr(cmd,"jiaoshui"))
        {
            Relay_On(1);
            DelayMs(60000);
            Relay_Off(1);
            GSM_SendSMS("jiaoshui_ok");
        }
        else if(strstr(cmd,"buguang"))
        {
            Relay_On(2);
            DelayMs(60000);
            Relay_Off(2);
            GSM_SendSMS("buguang_ok");
        }
        else if(strstr(cmd,"get"))
        {
            char buffer[64];
            sprintf(buffer,"T:%.1f H:%.1f L:%.1f",t,h,l);
            GSM_SendSMS(buffer);
        }
    }
}

4 总结

本设计利用 STM32F103C8T6 单片机 作为核心,结合 DHT11 温湿度传感器、光敏电阻光照采集模块、LCD1602 显示模块、继电器控制电路、SIM800A GSM 短信模块及高亮 LED 灯补光电路,实现了一个集 自动化管理与远程控制 于一体的智能浇花花盆系统。

其特点总结如下:

  1. 功能全面:集环境参数监测、自动控制、远程短信控制于一体。
  2. 实用性强:自动浇水与补光功能可解放用户双手,短信控制功能解决了长时间出行时花卉难以养护的问题。
  3. 通信协议简单直观:用户仅需通过短信发送简短命令,即可远程管理花盆。
  4. 安全与节能:通过继电器定时关闭机制,避免水泵与补光灯长时间运行造成损耗。
  5. 可扩展性强:后续可增加土壤湿度传感器数据上传至云端,实现 APP 控制与数据分析,进一步拓展至物联网园艺应用。

该系统不仅适用于个人家庭养花爱好者,也适用于学校实验室、智能园艺展示场景,具有良好的应用前景与推广价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式基地

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

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

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

打赏作者

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

抵扣说明:

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

余额充值