基于STM32单片机远程浇花花盆GSM短信浇水补光设计
基于STM32单片机远程浇花花盆GSM短信浇水补光设计
1. 功能介绍
本设计的目标是实现对家庭或温室花盆的智能化管理,解决人们在外出或无法及时照顾植物时的养护问题。系统以STM32F103C8T6单片机为核心,结合传感器、继电器和GSM模块,实现土壤湿度、环境温度、光照强度的实时检测和远程控制。
主要功能包括:
-
湿度检测与自动浇水:当检测到花盆土壤湿度低于35%时,自动驱动继电器打开水泵进行浇水,保证植物根部获得充足水分。
-
光照检测与补光:通过光敏电阻检测环境光照,当环境光线不足时,自动打开高亮LED进行补光,保障植物光合作用。
-
温湿度检测与显示:利用DHT11传感器检测环境温湿度,并通过LCD1602实时显示。
-
GSM短信远程控制:用户可通过手机短信实现远程管理,包括远程浇水、远程补光和远程数据查询。
- 发送
jiaoshui
:系统开启继电器,执行浇水任务,并自动回复“jiaoshui_ok”,1分钟后自动关闭。 - 发送
buguang
:系统开启LED补光灯,自动回复“buguang_ok”,1分钟后自动关闭。 - 发送
get
:系统将当前温湿度、光照等信息通过短信返回,方便用户随时查看植物生长环境。
- 发送
该设计不仅提升了植物养护的智能化水平,也具备良好的实用性与扩展性,能够广泛应用于家庭阳台、办公室小型花盆及智能温室等场景。
2. 系统电路设计
2.1 STM32F103C8T6核心电路
STM32F103C8T6是基于ARM Cortex-M3内核的32位单片机,主频高达72MHz,具有丰富的外设接口,包括USART、I2C、SPI、ADC、PWM等。
在本系统中,STM32作为主控器,负责:
- 采集DHT11温湿度数据与光照传感器数据;
- 控制继电器、水泵、LED补光灯;
- 与SIM800A模块通过USART通信,实现短信收发;
- 驱动LCD1602显示屏,实时显示环境参数。
其优势在于处理速度快,资源丰富,能够同时处理多种传感器数据和执行控制任务。
2.2 DHT11温湿度传感器电路
DHT11是一款集成了温湿度采集功能的数字传感器。它通过单总线方式与STM32通信,输出温度和湿度的数字量数据。
在本系统中,DHT11用于:
- 实时检测环境温度和湿度;
- 作为远程短信反馈的重要参数。
电路连接上,DHT11的VCC接3.3V电源,GND接地,DATA通过一个上拉电阻连接至STM32的IO口。
2.3 LCD1602液晶显示电路
LCD1602是一种常见的字符型液晶显示屏,能够显示两行各16个字符。
在本系统中主要用于:
- 显示实时温度、湿度与光照数值;
- 提供给用户直观的数据信息。
其接口采用并行方式与STM32通信,优点是稳定性强,显示速度快。
2.4 光照检测电路
光照检测采用光敏电阻与分压电路,将光照强度转化为电压信号,再通过STM32的ADC采集。
在本系统中,光照强度值用于判断是否需要开启LED补光灯,从而保障植物在光照不足时仍能进行光合作用。
2.5 继电器控制电路
继电器用于控制外部高功率设备,如水泵和LED补光灯。
- 水泵继电器:当湿度低于设定阈值时,STM32输出高电平驱动继电器,水泵启动执行浇水。
- LED补光继电器:当光照不足时,STM32控制继电器,开启高亮LED进行补光。
2.6 GSM短信模块电路(SIM800A)
SIM800A是一款广泛应用的GSM/GPRS模块,支持短信、语音及数据传输功能。
在本系统中,SIM800A主要用于短信收发,实现远程控制:
- 接收用户短信命令,如
jiaoshui
、buguang
、get
; - 通过串口与STM32通信,STM32解析指令并执行对应动作;
- 将反馈信息以短信形式返回给用户。
SIM800A的VCC接4V电源,串口TX、RX与STM32 USART接口相连。
2.7 高亮LED补光电路
高亮LED作为人工补光设备,提供额外光照,确保植物在阴天或夜间能够进行光合作用。LED通过继电器控制,实现自动与手动两种工作模式。
2.8 电源电路
系统电源采用稳压模块,为STM32、DHT11、LCD1602提供3.3V/5V电压,为SIM800A提供4V电压。
3. 程序设计
系统的软件部分基于STM32标准库开发,分为数据采集、显示、阈值判断、执行控制和短信通信几个模块。
3.1 主程序框架
主程序主要负责:
- 初始化外设(USART、GPIO、ADC、LCD、定时器);
- 周期性采集DHT11温湿度数据与光照数据;
- 判断湿度和光照是否达到阈值,执行浇水或补光;
- 处理SIM800A短信命令;
- 将数据更新至LCD和远程反馈。
#include "stm32f10x.h"
#include "lcd1602.h"
#include "dht11.h"
#include "usart.h"
#include "relay.h"
#include "adc.h"
#include "sim800a.h"int main(void) {SystemInit();LCD1602_Init();DHT11_Init();USART1_Init(9600);Relay_Init();ADC_Init();while (1) {// 采集温湿度DHT11_ReadData();// 采集光照uint16_t light = ADC_Read();// 显示数据LCD1602_ShowData(temp, humi, light);// 自动判断AutoControl(temp, humi, light);// 短信处理SIM800A_Process();}
}
3.2 DHT11数据采集程序
uint8_t DHT11_Read(uint8_t *temperature, uint8_t *humidity) {// 与DHT11通信,采集温湿度// 返回温湿度数据
}
3.3 LCD1602显示程序
void LCD1602_ShowData(int temp, int humi, int light) {LCD_SetCursor(0,0);LCD_Print("T:");LCD_PrintNum(temp);LCD_Print(" H:");LCD_PrintNum(humi);LCD_SetCursor(1,0);LCD_Print("Light:");LCD_PrintNum(light);
}
3.4 自动控制程序
void AutoControl(int temp, int humi, int light) {if (humi < 35) {Relay_WaterPump(ON);} else {Relay_WaterPump(OFF);}if (light < 300) {Relay_LED(ON);} else {Relay_LED(OFF);}
}
3.5 短信命令处理程序
void SIM800A_Process(void) {char cmd[20];if (SIM800A_ReadSMS(cmd)) {if (strcmp(cmd, "jiaoshui") == 0) {Relay_WaterPump(ON);SIM800A_SendSMS("jiaoshui_ok");Delay_ms(60000);Relay_WaterPump(OFF);}else if (strcmp(cmd, "buguang") == 0) {Relay_LED(ON);SIM800A_SendSMS("buguang_ok");Delay_ms(60000);Relay_LED(OFF);}else if (strcmp(cmd, "get") == 0) {char msg[50];sprintf(msg, "T:%d H:%d L:%d", temp, humi, light);SIM800A_SendSMS(msg);}}
}
4. 总结
本设计以STM32F103C8T6为核心,融合了温湿度检测、光照检测、自动浇水与补光、短信远程控制等功能,实现了一个实用的远程智能花盆管理系统。通过DHT11、光敏电阻和LCD1602的组合,用户能够直观获取植物生长环境参数;结合SIM800A模块,用户即使不在家,也能通过短信实时了解植物状态,并执行远程操作。
该系统不仅满足了日常养花的自动化需求,还能作为物联网与智能农业的应用案例,为未来更大规模的智能温室系统提供基础。系统的设计理念和实现方式具有可扩展性,例如可增加WiFi模块接入云平台,实现APP可视化管理,进一步提升智能化水平。