1. 项目概述:当单片机遇上家庭种植
去年夏天,我阳台上精心培育的几盆生菜因为连续阴雨天全部烂根,这件事让我萌生了用单片机搭建家庭植物工厂的想法。这个基于STM32F103C8T6的控制系统,本质上是一个微型环境调节中枢,通过温湿度、光照、土壤等多路传感器实时监控,配合执行机构实现自动补光、通风、灌溉等功能。相比市面动辄上万的商用设备,这套方案成本控制在300元以内,特别适合12㎡以下的家庭种植场景。
核心控制板选用STM32F103C8T6并非偶然——这款72MHz主频的Cortex-M3内核芯片,既有足够的GPIO接口驱动各类传感器,又具备PWM输出能力控制调速风扇和水泵。更重要的是其丰富的定时器资源,可以精准协调各执行机构的动作时序。我曾用Arduino Uno做过原型,但在同时处理多路传感器数据时频繁出现卡顿,而STM32的方案运行半年从未死机。
2. 系统架构设计解析
2.1 硬件拓扑设计
系统采用三层分布式架构:感知层由DHT22温湿度传感器、BH1750光照传感器和电容式土壤湿度传感器组成;控制层以STM32为核心,通过光耦隔离驱动继电器模块;执行层包含LED植物灯、12V直流风扇和微型潜水泵。这种设计最大的优势是故障隔离——去年雨季曾因水泵漏水导致短路,但由于光耦隔离保护,控制板完好无损。
传感器选型上走过不少弯路:最初用的电阻式土壤传感器,两个月后电极腐蚀严重。后来换用电容式传感器,虽然价格贵三倍(约45元/个),但使用寿命显著提升。光照监测尝试过廉价的光敏电阻,但线性度太差,最终选用BH1750数字传感器,其0-65535lx的量程和1lx的分辨率完全满足植物生长需求。
2.2 软件控制逻辑
主程序采用状态机设计,包含初始化、数据采集、决策判断、执行控制四个状态。关键之处在于决策算法——不是简单的阈值判断,而是引入时间加权机制。例如当温度超过28℃时,不会立即启动风扇,而是先检查持续时间:若短时波动则忽略,持续5分钟以上才响应。这有效避免了执行机构频繁启停。
光照控制采用PID算法动态调节LED亮度。实测表明,单纯的开关控制会导致植物叶面温度波动过大。通过PWM调光(频率1kHz,占空比10%-100%可调),能使光照强度平稳维持在设定值±5%范围内。PID参数经过现场整定,最终Kp=2.5,Ki=0
