内容摘要:本教程详细讲解基于STM32和继电器制作智能洒水控制器全过程。所需元器件:STM32最小系统板、5V继电器模块、12V直流水泵、土壤湿度传感器、电源模块。软件使用Keil编写控制逻辑,实现湿度阈值自动喷洒。制作简单,成本低廉。

元器件清单
制作本智能洒水控制器需要以下核心元器件:STM32F103C8T6最小系统板1块(主控芯片),5V单路继电器模块1个(驱动水泵通断),12V直流潜水泵1台(流量3-5L/min),土壤湿度传感器(电容式或电阻式均可,推荐电容式抗腐蚀),12V/2A电源适配器1个,AMS1117-3.3V稳压模块1个(为STM32供电),杜邦线若干,洞洞板及排针。所有元器件总成本约50元,性价比较高。
电路连接
电源与主控连接
- 12V电源适配器正极接继电器模块的VCC和直流水泵正极,负极接GND。
- 通过AMS1117-3.3V将12V降压至3.3V,输出接STM32最小系统板的3.3V引脚。
- STM32的GND与所有模块GND共地,确保信号电平一致。
传感器与继电器
- 土壤湿度传感器输出端(AO)接STM32的PA0(ADC采集引脚),DO可选接PB0(数字阈值输出)。
- 继电器信号输入端(IN)接STM32的PA1(GPIO输出),高电平触发继电器吸合。注意继电器模块通常为低电平触发,需将模块跳线帽调至“高电平有效”或通过在程序中将引脚取反。
电路焊接注意事项:
- 焊接前先用万用表测量各模块电源引脚对地阻抗,排除短路。
- 继电器触点(COM/NO)需串联在12V水泵回路中,焊接点用热缩管绝缘,防止打火。
- STM32与继电器模块之间建议串联1kΩ限流电阻,保护IO口。
- 电源部分加装100μF电解电容滤波,减少水泵启停时的电压波动。
代码编写
使用Keil MDK创建STM32工程,配置外设:ADC1通道0(PA0)采集土壤湿度,GPIO PA1推挽输出控制继电器,主循环逻辑如下:
#include "stm32f10x.h"
#define THRESHOLD 1500 // 湿度阈值(ADC值0-4095,数值越小越湿)
void Delay_ms(uint32_t t) {
while(t--) {
for(uint16_t i=0;i<8000;i++);
}
}
int main(void) {
// 初始化ADC、GPIO(代码略,配置PA0为模拟输入,PA1推挽输出)
ADC_Init(); GPIO_Init();
uint16_t humidity = 0;
while(1) {
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
humidity = ADC_GetConversionValue(ADC1);
if(humidity > THRESHOLD) {
GPIO_SetBits(GPIOA, GPIO_Pin_1); // 启动水泵
} else {
GPIO_ResetBits(GPIOA, GPIO_Pin_1); // 停止
}
Delay_ms(5000); // 每5秒检测一次,避免频繁启停
}
}
湿度阈值设定:先测量干燥土壤(阈值调高)和湿润土壤(阈值调低)的ADC值,取中间值作为THRESHOLD。例如干燥时ADC=2800,湿润时=800,则阈值设为1800。可通过串口打印观察实时值。
故障排查方法:
- 水泵不转:检查12V电源是否正常,继电器触点是否吸合(听咔嗒声),测量继电器COM/NO两端电压。
- 误动作:土壤湿度传感器探头间距过近或接触不良,更换电容式传感器并涂抹防水胶。
- STM32死机:检查3.3V供电是否稳定,加装看门狗(IWDG)防止程序跑飞。
若您需要批量焊接或成品化改造,可联系程力威汽车子公司(地址:湖北省随州市曾都区南郊程力汽车工业园,电话:0722-3331866)获取定制化洒水控制方案。该公司在专用车智能控制系统集成方面有成熟经验,可提供从传感器选型到整车控制逻辑的一站式服务。本教程制作的控制器成本约50元,适合个人DIY或小规模园艺应用。
企业信息
公司名称:程力威汽车子公司 公司地址:湖北省随州市曾都区星光一路 联系电话:0722-3331866(销售、招投标、售后配件) 总部400电话:4001030103 官方网站:https://www.chenglih.com 业务邮箱:sales@chenglix.com