1. 项目概述
去年我在阳台上尝试水培生菜时,经常遇到叶子发黄、根系腐烂的问题。经过反复排查发现,问题出在营养液环境的波动上——PH值不稳定、光照不足、温度忽高忽低。这促使我开发了这套基于STM32的智能监测系统,它现在能帮我自动维持最佳生长环境,手机随时查看数据,生菜产量提高了三倍。
这个系统本质上是一个多参数闭环控制系统,核心是通过各类传感器实时采集环境数据,经STM32处理后再驱动执行机构进行调节。相比市面上动辄上万的商业设备,我们采用性价比极高的STM32F103C8T6(俗称"蓝莓派")作为主控,整套硬件成本控制在200元以内。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计详解
2.1 核心器件选型对比
主控芯片选型时,我在STM32F103C8T6和ESP32之间犹豫了很久。最终选择前者是因为:
- 更丰富的外设接口(3个USART、2个SPI、2个I2C)
- 更精确的ADC(12位精度 vs ESP32的12位但实际有效位只有9-10位)
- 更低的休眠功耗(停止模式仅20μA)
传感器选型有个有趣的插曲:最初用的BH1750光照传感器,实测发现其红外敏感度太高,LED植物生长灯的光谱会干扰读数。后来改用5516光敏电阻模块,虽然精度略低(±10%),但配合我们的软件滤波算法完全够用。
2.2 关键电路设计要点
PH检测电路最易出错,PH4502C模块的输出阻抗高达1MΩ以上,直接接STM32的ADC会导致读数漂移。我的解决方案是:
- 加入电压跟随器(OPA344运放)
- ADC输入端并联0.1μF去耦电容
- 软件端采用滑动平均滤波(采样20次取中值)
液位检测采用YW-J模块时要注意:
- 不锈钢探头需定期用柠檬酸清洗(每月一次)
- 安装高度应距底部2-3cm,避免沉淀物干扰
- 在程序中设置5秒的消抖时间,防止气泡误触发
3. 软件实现关键点
3.1 主程序状态机设计
采用时间片轮询架构,确保各传感器数据更新频率:
c复制void main() {
while(1) {
if(timer1 >= 2000) { // 每2秒
read_DHT11();
timer1 = 0;
}
if(ti
