1 系统功能介绍
本设计实现了一个 基于 STM32 单片机的远程浇花花盆 GSM 短信浇水补光系统。随着人们生活节奏的加快,很多家庭在养花种植过程中,常常因工作繁忙或出差而无法及时给植物浇水与补光。本系统结合传感器检测、自动控制与 GSM 短信远程通信,实现了花盆环境参数检测、自动浇水与补光、远程短信控制等功能,从而有效提高植物的养护效率和智能化水平。
系统主要功能如下:
-
环境参数检测与显示
系统通过 DHT11 温湿度传感器和光照强度传感器实时检测花盆土壤湿度、环境温度和光照状态,并通过 LCD1602 液晶屏进行实时显示。 -
自动浇水与补光
当湿度低于阈值(35%)时,系统自动启动继电器控制水泵浇水;当光照强度较低时,自动点亮高亮 LED 灯进行补光。 -
短信远程控制功能
借助 SIM800A GSM 模块,用户可通过手机发送指令短信实现远程控制:- 发送
jiaoshui
,系统启动继电器 1 打开水泵浇水,并返回jiaoshui_ok
短信,浇水持续 1 分钟后关闭。 - 发送
buguang
,系统强制开启补光灯,并返回buguang_ok
短信,持续 1 分钟后关闭。 - 发送
get
,系统将当前温湿度与光照信息通过短信返回,用户可远程查看植物环境数据。
- 发送
-
本地与远程结合
系统既能实现本地自动化控制,又能支持远程人工干预,保证植物在无人管理情况下依然能获得良好的生长环境。
2 系统电路设计
2.1 STM32 最小系统电路
本系统核心为 STM32F103C8T6,具有 ARM Cortex-M3 内核,主频 72MHz,片上资源丰富,特别适合需要多模块协同工作的项目。其主要功能包括:
- 串口通信:与 DHT11、LCD1602、SIM800A、光照传感器通信;
- GPIO 控制:继电器、水泵、LED 补光灯;
- 定时器管理:用于浇水与补光的时间控制。
电路部分包括 电源电路、时钟电路、复位电路,保证主控系统稳定运行。
2.2 DHT11 温湿度传感器电路
DHT11 通过 单总线通信 与 STM32 连接,能够实时获取环境温度与湿度信息:
- 湿度数据用于判断是否需要自动浇水;
- 温度数据用于监测环境变化,作为远程返回数据的一部分。
2.3 LCD1602 液晶显示电路
LCD1602 通过并行方式(或 I2C 模块)与 STM32 相连,用于显示:
- 当前温湿度;
- 光照强度状态;
- 系统工作状态(浇水、补光、待机等)。
2.4 光照强度检测电路
光照检测电路通过光敏电阻与电阻分压方式获取光照强度,输入 STM32 的 ADC 接口。
- 当光照强度低于设定阈值时,自动开启补光灯。
- 数据同时显示在 LCD1602 上,并可通过短信
get
获取。
2.5 继电器控制电路
继电器由 STM32 控制:
- 继电器 1 控制水泵,实现浇水;
- 继电器 2 控制高亮 LED 灯,实现补光。
驱动部分通过 NPN 三极管和二极管保护电路,确保继电器稳定工作。
2.6 GSM 短信模块 SIM800A 电路
SIM800A 模块通过串口与 STM32 通信:
- 接收用户手机发送的指令短信;
- 解析指令后控制继电器执行动作;
- 执行后发送反馈短信,如
jiaoshui_ok
、buguang_ok
等。
模块需要外接天线以增强信号,并通过专用 AT 指令集实现收发短信功能。
2.7 电源电路
系统供电采用 5V 输入,经过 AMS1117-3.3 稳压芯片提供 3.3V 电压,分别供给 STM32、DHT11、SIM800A、光照电路和 LCD1602,确保整机稳定运行。
3 程序设计
程序设计分为以下几个模块:主程序框架、温湿度采集与处理模块、LCD 显示模块、光照检测模块、继电器控制模块、GSM 短信通信模块、定时器管理模块。
3.1 主程序框架
#include "stm32f10x.h"
#include "dht11.h"
#include "lcd1602.h"
#include "relay.h"
#include "gsm.h"
#include "adc.h"
#include "timer.h"
uint16_t humidity, temperature, light;
uint8_t sms_buffer[64];
int main(void)
{
SystemInit();
LCD_Init();
DHT11_Init();
GSM_Init();
Relay_Init();
ADC_Init();
Timer_Init();
while(1)
{
// 读取传感器数据
DHT11_Read(&temperature, &humidity);
light = ADC_Read();
// 显示数据
LCD_ShowNum(0,0,temperature,2);
LCD_ShowNum(1,0,humidity,2);
LCD_ShowNum(0,10,light,4);
// 自动控制
if(humidity < 35) Relay_On(1);
if(light < 2000) Relay_On(2);
// 短信处理
if(GSM_ReceiveSMS(sms_buffer))
{
GSM_CommandProcess(sms_buffer);
}
}
}
3.2 温湿度采集与处理
void DHT11_Read(uint16_t *temp, uint16_t *humi)
{
// 读取 DHT11 数据
if(DHT11_GetData(temp, humi) == SUCCESS)
{
// 数据有效
}
}
3.3 光照检测模块
uint16_t ADC_Read(void)
{
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
return ADC_GetConversionValue(ADC1);
}
3.4 继电器控制模块
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_CommandProcess(char *cmd)
{
if(strstr(cmd,"jiaoshui"))
{
Relay_On(1);
GSM_SendSMS("jiaoshui_ok");
Delay_ms(60000);
Relay_Off(1);
}
else if(strstr(cmd,"buguang"))
{
Relay_On(2);
GSM_SendSMS("buguang_ok");
Delay_ms(60000);
Relay_Off(2);
}
else if(strstr(cmd,"get"))
{
char buf[64];
sprintf(buf,"T:%d H:%d L:%d",temperature,humidity,light);
GSM_SendSMS(buf);
}
}
3.6 定时器管理模块
用于定时浇水和补光时间控制,避免设备长时间运行造成损坏。
void Timer_Init(void)
{
// 配置 TIM2,定时 1ms 中断
}
4 总结
本设计基于 STM32F103C8T6 单片机,实现了远程浇花花盆智能管理系统,具有以下优势:
- 自动化管理:通过传感器实时监测湿度和光照,自动执行浇水与补光操作。
- 远程操控:通过 GSM 短信控制,用户即使在外地也能随时掌握花盆状态并执行操作。
- 智能反馈:执行操作后返回确认短信,保证用户及时了解系统状态。
- 扩展性强:系统可进一步加入土壤温度传感器、空气质量监测模块,实现更完善的智能花盆管理。
- 应用前景广阔:适用于家庭、办公室、温室等场所,尤其适合经常出差或工作繁忙的用户。
本系统有效结合了传感器技术、自动控制、GSM 短信通信和单片机控制,展现了 物联网与智能家居技术在绿色生活中的应用价值。