基于STM32F103C8T6的农业大棚监测系统设计(原理图+全部资料)

基于STM32F103C8T6的农业大棚监测系统设计

摘要

本文设计并实现了一套基于STM32F103C8T6单片机的农业大棚监测系统。该系统通过集成多种传感器,实现对大棚内部环境参数(光照强度、二氧化碳浓度、空气温湿度、土壤湿度)的实时监测,并将采集到的数据显示在0.96寸OLED显示屏上,同时通过ESP8266 Wi-Fi模块将数据上传到手机APP(机智云)。系统支持自动控制模式和APP远程控制模式,根据环境参数自动控制相关设备,并在参数超出阈值时触发蜂鸣器报警。本文详细介绍了系统的硬件设计、软件设计、实现过程以及测试结果。

关键词

STM32F103C8T6;农业大棚监测;自动控制;APP远程控制;OLED显示屏;ESP8266

目录
  1. 引言
    • 1.1 设计背景与意义
    • 1.2 研究现状
    • 1.3 研究内容
  2. 系统总体设计
    • 2.1 系统功能需求
    • 2.2 系统设计方案
    • 2.3 系统硬件框图
    • 2.4 系统主流程图
  3. 系统硬件设计
    • 3.1 微控制器模块
    • 3.2 传感器模块
    • 3.3 显示模块
    • 3.4 通信模块
    • 3.5 控制模块
    • 3.6 电源模块
    • 3.7 原理图与PCB设计
  4. 系统软件设计
    • 4.1 开发环境搭建
    • 4.2 系统初始化
    • 4.3 传感器数据采集
    • 4.4 数据处理与显示
    • 4.5 自动控制逻辑
    • 4.6 APP远程控制
    • 4.7 程序代码示例
  5. 系统测试与结果分析
    • 5.1 硬件测试
    • 5.2 软件测试
    • 5.3 系统集成测试
    • 5.4 结果分析
  6. 结论与展望
    • 6.1 结论
    • 6.2 展望
  7. 参考文献
  8. 附录
    • 8.1 原件清单
    • 8.2 演示PPT模板
    • 8.3 APP与小程序安装教程
1. 引言
1.1 设计背景与意义

随着现代农业技术的不断发展,对农业大棚内部环境的实时监测和控制变得尤为重要。传统的农业大棚环境监测方式存在设备复杂、操作繁琐、需要大量进口设备等问题。本文旨在设计并实现一套基于STM32F103C8T6单片机的高性价比、模块化的农业大棚监测系统,以解决上述问题。该系统能够实时监测大棚内的环境参数,并根据参数自动控制相关设备,提高种植户的生产效率,减少劳动力投入,为农业生产提供决策支持。

1.2 研究现状

目前,国内智能大棚系统尚处于初级探索阶段,存在智能化程度低、设备昂贵、推广难度大等问题。国外的智能大棚系统虽然技术成熟,但价格高昂,且不完全适应我国的农业国情。因此,设计一套适合我国农业国情的智能大棚监测系统,并推广应用在传统农业中,是未来国内智能农业大棚的发展方向。

1.3 研究内容

本文的研究内容主要包括以下几个方面:

  • 了解农业大棚的监测系统的发展现状及需求。
  • 根据需求设计系统总体方案,包括硬件设计和软件设计。
  • 研究各传感器的特点,结合环境特点选型,并设计相应电路。
  • 编写系统软件,实现数据采集、处理、显示和控制功能。
  • 对系统进行测试与调试,验证系统的可行性和有效性。
2. 系统总体设计
2.1 系统功能需求

本系统需要实现以下功能:

  • 采集当前室内光照强度、二氧化碳浓度、空气温湿度、土壤湿度。
  • 将采集到的数据显示在0.96寸OLED显示屏上。
  • 通过ESP8266 Wi-Fi模块将数据上传到手机APP(机智云)。
  • 支持自动控制模式和APP远程控制模式。
    • 自动控制模式:根据环境参数自动控制相关设备(如热片、风扇、LED灯、水泵等),并在参数超出阈值时触发蜂鸣器报警。
    • APP远程控制模式:通过手机APP界面上的控制按钮来控制相关设备的开关。
2.2 系统设计方案

系统采用STM32F103C8T6单片机作为核心控制器,通过集成多种传感器来监测环境参数。系统硬件包括微控制器模块、传感器模块、显示模块、通信模块、控制模块和电源模块。系统软件采用Keil MDK-ARM集成开发环境进行编程,实现数据采集、处理、显示和控制功能。

2.3 系统硬件框图

<img src="https://example.com/hardware_diagram.png" />

2.4 系统主流程图

<img src="https://example.com/main_flowchart.png" />

3. 系统硬件设计
3.1 微控制器模块

本系统选用STM32F103C8T6单片机作为核心控制器。该单片机具有低功耗、高性能、价格适中等优点,能够满足系统的需求。

3.2 传感器模块
  • 光照强度传感器:采用光敏电阻,其阻值随光照强度的变化而变化,便于实现光照强度的实时监测。
  • 二氧化碳传感器:采用SGP30传感器,能够准确测量环境中的二氧化碳浓度。
  • 温湿度传感器:采用DHT11温湿度传感器,具有响应速度快、抗干扰能力强等特点,能够同时测量温度和湿度。
  • 土壤湿度传感器:选用电阻式土壤湿度传感器,通过测量土壤中的电阻值来推算土壤湿度。
3.3 显示模块

采用0.96寸OLED显示屏,用于实时显示当前温湿度、二氧化碳浓度、土壤湿度、当前模式等信息。

3.4 通信模块

采用ESP8266 Wi-Fi模块,实现系统与手机APP之间的无线通信。通过该模块,系统可以将采集到的数据上传到手机APP,并接收APP的控制指令。

3.5 控制模块
  • 热片:用于加热,当温度低于设置阈值时开启。
  • 风扇:用于通风降温和降低二氧化碳浓度,当湿度高于设置阈值或二氧化碳浓度高于阈值时开启。
  • LED灯:用于补光,当光照强度低于设置阈值时开启。
  • 水泵:用于灌溉,当土壤湿度低于设置阈值时开启。
  • 蜂鸣器:用于报警,当任意参数超出阈值时触发。
3.6 电源模块

采用可充电锂电池供电,并设计电源管理电路以确保系统稳定运行。

3.7 原理图与PCB设计

使用Altium Designer或类似软件绘制系统原理图和PCB图,并进行PCB板打样和焊接。

4. 系统软件设计
4.1 开发环境搭建

使用Keil MDK-ARM集成开发环境进行软件编程。首先,安装Keil MDK-ARM软件,并配置STM32F103C8T6的开发环境。然后,安装必要的硬件抽象层(HAL)或标准外设库。

4.2 系统初始化

在系统初始化阶段,完成以下工作:

  • 配置系统时钟、GPIO、UART等外设。
  • 初始化各个传感器模块、显示模块、通信模块和控制模块。
4.3 传感器数据采集

通过STM32的ADC(模数转换器)读取传感器的模拟信号,并将其转换为数字信号进行处理。具体实现如下:

 

c复制代码

#include "stm32f1xx_hal.h"
#include "dht11.h"
#include "soil_moisture_sensor.h"
#include "light_sensor.h"
#include "co2_sensor.h"
void Read_Sensors(float *temperature, float *humidity, float *soil_moisture, float *light_intensity, float *co2_concentration) {
// 读取DHT11温湿度传感器数据
Read_DHT11(temperature, humidity);
// 读取土壤湿度传感器数据
*soil_moisture = Read_SoilMoistureSensor();
// 读取光照强度传感器数据
*light_intensity = Read_LightSensor();
// 读取二氧化碳传感器数据
*co2_concentration = Read_CO2Sensor();
}
4.4 数据处理与显示

对采集到的数据进行处理,并在OLED显示屏上显示。具体实现如下:

 

c复制代码

#include "oled.h"
void Display_Data(float temperature, float humidity, float soil_moisture, float light_intensity, float co2_concentration, char *mode) {
char buffer[128];
sprintf(buffer, "Temp: %.2fC\nHum: %.2f%%\nSoil: %.2f%%\nLight: %.2f\nCO2: %.2fppm\nMode: %s",
temperature, humidity, soil_moisture, light_intensity, co2_concentration, mode);
OLED_ShowString(0, 0, buffer, 12);
}
4.5 自动控制逻辑

根据环境参数自动控制相关设备,并在参数超出阈值时触发蜂鸣器报警。具体实现如下:

 

c复制代码

#include "control.h"
void Auto_Control(float temperature, float humidity, float soil_moisture, float light_intensity, float co2_concentration, float temp_threshold, float humidity_threshold, float soil_moisture_threshold, float light_intensity_threshold, float co2_threshold) {
if (temperature < temp_threshold) {
Turn_On_Heater();
} else {
Turn_Off_Heater();
}
if (humidity > humidity_threshold || co2_concentration > co2_threshold) {
Turn_On_Fan();
} else {
Turn_Off_Fan();
}
if (light_intensity < light_intensity_threshold) {
Turn_On_LED();
} else {
Turn_Off_LED();
}
if (soil_moisture < soil_moisture_threshold) {
Turn_On_Pump();
} else {
Turn_Off_Pump();
}
if (temperature > temp_threshold || humidity > humidity_threshold || soil_moisture < soil_moisture_threshold || light_intensity < light_intensity_threshold || co2_concentration > co2_threshold) {
Trigger_Buzzer();
}
}
4.6 APP远程控制

通过ESP8266 Wi-Fi模块与手机APP进行通信,实现APP远程控制功能。具体实现如下:

 

c复制代码

#include "esp8266.h"
void APP_Control(char *command) {
if (strcmp(command, "TURN_ON_LED") == 0) {
Turn_On_LED();
} else if (strcmp(command, "TURN_OFF_LED") == 0) {
Turn_Off_LED();
} else if (strcmp(command, "TURN_ON_FAN") == 0) {
Turn_On_Fan();
} else if (strcmp(command, "TURN_OFF_FAN") == 0) {
Turn_Off_Fan();
} else if (strcmp(command, "TURN_ON_PUMP") == 0) {
Turn_On_Pump();
} else if (strcmp(command, "TURN_OFF_PUMP") == 0) {
Turn_Off_Pump();
} else if (strcmp(command, "TURN_ON_HEATER") == 0) {
Turn_On_Heater();
} else if (strcmp(command, "TURN_OFF_HEATER") == 0) {
Turn_Off_Heater();
}
}
4.7 程序代码示例

以下是一个简化的主程序示例,展示了系统的整体工作流程:

 

c复制代码

#include "main.h"
int main(void) {
System_Init(); // 系统初始化
float temperature, humidity, soil_moisture, light_intensity, co2_concentration;
char mode[10] = "AUTO"; // 默认模式为自动模式
while (1) {
Read_Sensors(&temperature, &humidity, &soil_moisture, &light_intensity, &co2_concentration); // 读取传感器数据
Display_Data(temperature, humidity, soil_moisture, light_intensity, co2_concentration, mode); // 显示数据
if (strcmp(mode, "AUTO") == 0) {
Auto_Control(temperature, humidity, soil_moisture, light_intensity, co2_concentration, TEMP_THRESHOLD, HUMIDITY_THRESHOLD, SOIL_MOISTURE_THRESHOLD, LIGHT_INTENSITY_THRESHOLD, CO2_THRESHOLD); // 自动控制
}
// 处理APP控制指令(这里省略了具体的通信实现)
// APP_Control(command);
HAL_Delay(1000); // 延时1秒再次采集数据
}
}
5. 系统测试与结果分析
5.1 硬件测试

对系统的各个硬件模块进行逐一测试,确保它们能够正常工作。具体包括:

  • 测试传感器模块是否能够准确采集数据。
  • 测试显示模块是否能够正常显示数据。
  • 测试通信模块是否能够正常通信。
  • 测试控制模块是否能够正常控制相关设备。
  • 测试电源模块是否能够稳定供电。
5.2 软件测试

对系统的各个软件模块进行逐一测试,确保它们能够正确实现功能。具体包括:

  • 测试系统初始化是否能够正确配置外设。
  • 测试传感器数据采集模块是否能够正确读取数据。
  • 测试数据处理与显示模块是否能够正确处理并显示数据。
  • 测试自动控制逻辑是否能够根据环境参数正确控制相关设备。
  • 测试APP远程控制模块是否能够正确接收并处理APP的控制指令。
5.3 系统集成测试

将系统的各个模块进行集成测试,验证系统的整体性能。具体包括:

  • 测试系统是否能够正确采集并显示大棚内的环境参数数据。
  • 测试系统是否能够根据环境参数自动控制相关设备。
  • 测试系统是否能够正确接收并处理APP的控制指令。
  • 测试系统的稳定性、响应速度和准确性等指标。
5.4 结果分析

根据测试结果对系统进行优化和改进,以提高系统的整体性能。具体包括:

  • 对传感器数据进行校准和滤波处理,提高数据的准确性。
  • 优化自动控制逻辑,提高系统的响应速度和稳定性。
  • 完善APP远程控制功能,提高用户体验。
6. 结论与展望
6.1 结论

本文设计并实现了一套基于STM32F103C8T6单片机的农业大棚监测系统。该系统能够实时监测大棚内的环境参数,并根据参数自动控制相关设备,同时支持APP远程控制功能。通过系统集成与测试,验证了系统的可行性和有效性。该系统具有操作简单、体积小、功能丰富、功耗低等特点,能够显著提高种植户的生产效率,减少劳动力投入,为农业生产提供决策支持。

6.2 展望

未来可以进一步拓展系统功能,如加入更多的传感器类型以监测更多的环境参数,优化自动控制逻辑以提高系统的智能化程度,完善APP远程控制功能以提高用户体验等。同时,还可以考虑将系统与其他智能农业设备进行集成,实现更加智能化的农业大棚环境管理。

7. 参考文献

[此处列出参考文献]

8. 附录
8.1 原件清单

[此处列出系统所需的原件清单]

8.2 演示PPT模板

[此处提供演示PPT模板的下载链接或文件]

8.3 APP与小程序安装教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科创工作室li

你的鼓励将是大学生的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值