基于stm32 智能农业环境监测 功能介绍:系统有监测控制两个方面 1.监测方面:能检测温室大棚中温湿度,光照强度,土壤湿度和二氧化碳气体浓度。 2.控制方面:根据温度是否达到阈值控制开启或关闭风扇通风;根据二氧化碳浓度是否达到阈值控制开启或者关闭蜂鸣器警报;根据光照强度是否达到阈值控制开启或关闭led补光灯;根据土壤湿度是否达到阈值控制开启或关闭水泵浇水灌溉。 资料包含:提供元件清单,(依照清单购买元件)提供程序源码(源码带注释,小白容易看懂),提供pcb原理图(依据画好的pcb原理图开打板子),提供电路原理图,提供产品使用到的传感器模块资料以及详细介绍(写文章可用)。

最近,我一直在折腾一个基于STM32的智能农业环境监测系统项目,感觉整个过程既充实又有成就感。虽然中间遇到一些小问题,但最终还是把系统给搞定了。今天就来跟大家分享一下这个项目的完整流程,让大家也能轻松上手。


一、项目背景与目标

近年来,随着农业智能化的发展,温室大棚的环境监测与自动化控制越来越受到关注。传统的农业管理方式依赖人工巡检,效率低且成本高。而通过STM32单片机搭建的环境监测系统,可以实现对温室大棚的智能化管理,自动监测温湿度、光照强度、土壤湿度和二氧化碳浓度,并根据设定的阈值自动控制设备。

我们的项目目标是:

  1. 监测部分:
    - 采集温湿度、光照强度、土壤湿度和二氧化碳浓度数据。
  1. 控制部分:
    - 根据温度自动控制风扇开关。
    - 根据二氧化碳浓度自动控制蜂鸣器报警。
    - 根据光照强度自动控制LED补光灯。
    - 根据土壤湿度自动控制水泵浇水。

二、硬件设计与元件清单

这个项目需要准备的元件不算太多,但每一样都很关键。以下是完整的元件清单,方便大家购买时参考:

  • 主控芯片: STM32F103C8T6开发板(性能强劲,价格实惠)
  • 传感器模块:
  • DHT11温湿度传感器 ×1
  • 光照强度传感器(比如YF-G2) ×1
  • 土壤湿度传感器(比如YL-69) ×1
  • 二氧化碳传感器(MQ-135或更专业的版本) ×1
  • 执行机构:
  • 5V直流风扇 ×1
  • 蜂鸣器 ×1
  • LED补光灯 ×1
  • 水泵 ×1
  • 其他元件:
  • 继电器模块 ×4(用于控制高功耗设备)
  • USB转TTL调试线 ×1
  • 各类电阻、电容、接线端子等

三、系统硬件连接图

为了让大家更直观地理解,我画了一个简化的电路原理图,这里直接放上关键点:

  • 主控芯片STM32: 作为系统的“大脑”,负责接收传感器数据并控制外设。
  • 传感器连接: 温湿度、光照、土壤湿度和二氧化碳传感器分别通过数字或模拟端口连接到STM32。
  • 执行机构控制: 通过继电器模块控制高低功耗设备的开关。

四、软件实现与代码分析

1. 系统主程序框架

整个项目的主程序逻辑非常清晰,主要分为以下几个部分:

// 初始化外设(传感器、GPIO、中断等)
void System_Init(void) {
    GPIO_Init();
    I2C_Init();
    ADC_Init();
    Timer_Init();
}

// 主循环
int main(void) {
    System_Init();
    while (1) {
        GetData();   // 获取传感器数据
        ProcessData(); // 数据处理
        ControlDevice(); // 控制设备
        delay_ms(1000); // 延时1秒
    }
}

2. 传感器数据采集

传感器数据采集是整个系统的基础。下面以温湿度传感器DHT11为例,简单分析一下代码实现:

// 读取DHT11温湿度数据
void ReadDHT11(void) {
    uint8_t data[5];
    DHT11_Read_Data(data);  // 读取数据
    temperature = data[2] + data[3]/10.0;  // 温度
    humidity = data[0] + data[1]/10.0;     // 湿度
}

这里要注意的是,DHT11的时序要求较高,一定要确保在正确的时间点读取数据。

3. 设备控制

接下来是设备控制部分,这部分主要依赖于继电器模块。例如,当温度超过阈值时,系统会自动开启风扇:

// 温度控制风扇
void ControlFan(void) {
    if (temperature > FAN_ON_TEMP) {
        GPIO_Write(_gpio_fan, GPIO_PIN_SET); // 打开风扇
    } else {
        GPIO_Write(_gpio_fan, GPIO_PIN_RESET); // 关闭风扇
    }
}

同样的逻辑也适用于蜂鸣器、补光灯和水泵。


五、系统测试与优化

在测试过程中,我们发现了一些问题,比如传感器数据不稳定、风扇控制时延较大等。通过调整代码和优化硬件布局,这些问题都得到了解决。

基于stm32 智能农业环境监测 功能介绍:系统有监测控制两个方面 1.监测方面:能检测温室大棚中温湿度,光照强度,土壤湿度和二氧化碳气体浓度。 2.控制方面:根据温度是否达到阈值控制开启或关闭风扇通风;根据二氧化碳浓度是否达到阈值控制开启或者关闭蜂鸣器警报;根据光照强度是否达到阈值控制开启或关闭led补光灯;根据土壤湿度是否达到阈值控制开启或关闭水泵浇水灌溉。 资料包含:提供元件清单,(依照清单购买元件)提供程序源码(源码带注释,小白容易看懂),提供pcb原理图(依据画好的pcb原理图开打板子),提供电路原理图,提供产品使用到的传感器模块资料以及详细介绍(写文章可用)。

测试结果展示:

  • 温湿度采集误差在1%以内。
  • 光照强度和土壤湿度的响应时间在0.5秒以内。
  • 所有控制设备均能正常启停,系统运行稳定。

六、总结与展望

通过这次项目开发,我对STM32的硬件开发和程序设计有了更深入的理解,同时也积累了一些农业物联网的经验。虽然整个项目不算特别复杂,但却是实现农业智能化管理的重要一步。

未来,我计划在这个基础上继续优化,比如:

  1. 增加无线通信模块,实现远程监控。
  2. 开发一个简单的Web界面,方便用户查看和调整设置。
  3. 尝试加入更多的传感器,比如土壤pH值和光照强度的长时间记录功能。

如果你对这个项目感兴趣,欢迎一起讨论交流!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐