1. 项目概述
这个基于STM32单片机的盆栽远程浇水系统,是我去年为了解决出差期间家中绿植养护问题而设计的。作为一个嵌入式开发工程师兼植物爱好者,我发现市面上大多数自动浇水装置要么功能单一,要么价格昂贵,于是决定自己动手打造一套高性价比的解决方案。
系统核心功能是通过手机APP远程控制浇水,同时自动监测土壤湿度实现智能灌溉。实测下来,这套系统不仅稳定可靠,成本还控制在200元以内,比商业产品便宜至少60%。特别适合经常出差但又想养好植物的上班族,或者需要同时管理多盆植物的园艺爱好者。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统设计与硬件选型
2.1 整体架构设计
系统采用典型的物联网三层架构:
- 感知层:土壤湿度传感器+水泵
- 传输层:ESP8266 WiFi模块
- 应用层:自行开发的手机APP
选择STM32F103C8T6作为主控芯片,主要考虑其性价比高(约10元/片)、外设丰富,且社区资源充足。相比Arduino方案,STM32的性能更强,更适合需要复杂逻辑控制的场景。
2.2 关键硬件组件
-
土壤湿度传感器:
- 选用电容式传感器(如SEN0193)
- 相比电阻式更耐腐蚀,寿命更长
- 注意:需要做防水处理,我用热缩管包裹传感器探头
-
水泵选型:
- 微型潜水泵(DC3-6V)
- 流量约1L/min,满足盆栽需求
- 关键参数:扬程>1米,功率<5W
-
WiFi模块:
- ESP8266(ESP-01S)
- 支持AT指令,与STM32通过UART通信
- 实测发现:需外接3.3V稳压,直接接5V容易烧毁
-
电源设计:
- 主电路:5V/2A电源适配器
- 传感器:3.3V LDO稳压
- 重要经验:水泵电源单独控制,避免干扰MCU
3. 核心功能实现
3.1 土壤湿度检测
c复制// 湿度传感器ADC采样代码示例
uint16_t Read_Soil_Moisture(void)
{
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ret
