1 系统功能介绍
本设计基于 STM32F103C8T6 单片机,实现了一个具备 花盆土壤湿度检测、环境温湿度采集、光照强度检测、自动浇水补光、GSM 短信远程控制 的智能浇花系统。该系统能够实现花卉养护过程中的自动化和远程化,极大地减轻了用户的管理负担,特别适用于室内外需要远程管理和监控的花盆、盆栽及小型园艺场景。
本系统的主要功能包括:
-
数据采集与显示:通过 DHT11 传感器获取环境温湿度数据,通过光照强度传感器采集光照值,通过 LCD1602 液晶模块实时显示各项参数。
-
自动控制功能:当湿度低于 35% 时,继电器驱动水泵实现浇水;当光照不足时,自动开启高亮 LED 灯补光。
-
远程短信控制功能:通过 GSM 模块 SIM800A 与手机交互,可远程发送指令:
- 发送 jiaoshui,系统启动继电器 1(控制水泵),进行浇水,1 分钟后自动关闭,并返回短信 jiaoshui_ok。
- 发送 buguang,系统开启补光 LED 灯,持续 1 分钟后关闭,并返回短信 buguang_ok。
- 发送 get,系统将当前液晶显示的内容(温度、湿度、光照强度)通过短信返回用户手机。
-
安全与节能设计:所有继电器与 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 灯补光电路,实现了一个集 自动化管理与远程控制 于一体的智能浇花花盆系统。
其特点总结如下:
- 功能全面:集环境参数监测、自动控制、远程短信控制于一体。
- 实用性强:自动浇水与补光功能可解放用户双手,短信控制功能解决了长时间出行时花卉难以养护的问题。
- 通信协议简单直观:用户仅需通过短信发送简短命令,即可远程管理花盆。
- 安全与节能:通过继电器定时关闭机制,避免水泵与补光灯长时间运行造成损耗。
- 可扩展性强:后续可增加土壤湿度传感器数据上传至云端,实现 APP 控制与数据分析,进一步拓展至物联网园艺应用。
该系统不仅适用于个人家庭养花爱好者,也适用于学校实验室、智能园艺展示场景,具有良好的应用前景与推广价值。