全部版块 我的主页
论坛 经济学人 二区 教师之家与经管教育
172 0
2025-12-05

一、系统功能概述

项目名称:基于STM32单片机的大棚环境监测控制系统

项目标识码:dz-908

主控芯片型号:STM32F103C8T6

本系统集成了多种传感器与执行机构,实现对大棚内部环境的智能化监控与调节,具体功能如下:

  • 采用DS18B20数字温度传感器实时采集环境温度。当检测值超过预设上限时,自动启动风扇进行降温处理;
  • 利用光敏电阻模块感知光照强度,若光照低于设定下限,则自动开启补光灯以维持作物生长所需光照条件;
  • 通过PH检测模块对土壤或营养液的酸碱度进行监测:当PH值偏低时,系统控制加碱装置工作;当PH值偏高时,则启动加酸机制,确保环境处于适宜范围;
  • 使用SGP30气体传感器检测空气中二氧化碳浓度,一旦CO2含量超出安全阈值,系统将自动开启通风设备,调节空气成分;
  • 配备按键输入模块,支持用户现场设置各项参数阈值,并可手动控制各执行单元;
  • OLED显示屏用于实时显示当前各项环境数据,包括温度、光照、PH值及CO2浓度等信息;
  • 集成WIFI通信模块,实现与手机终端的数据互联。用户可通过移动设备查看实时监测数据,远程设置阈值并操控风扇、补光灯、加酸/碱泵和通风装置。

二、系统结构设计

设计工具:Microsoft Visio

本系统以STM32F103C8T6为核心控制单元,协同多个功能模块构建完整的大棚环境检测体系。整体架构分为中控单元、输入单元和输出单元三大组成部分。

中控单元:由STM32F103C8T6单片机构成,负责接收来自各类传感器的数据信号,经过逻辑分析后发出相应控制指令,驱动执行部件动作。

输入单元包含以下六个部分:

  1. 温度采集模块:利用DS18B20获取当前环境温度;
  2. 光照感应模块:通过光敏电阻测量光照强度;
  3. PH值检测模块:用于实时监测环境酸碱度;
  4. 二氧化碳检测模块:SGP30传感器采集CO2浓度数据;
  5. 按键设置模块:提供人机交互接口,用于配置参数和手动操作;
  6. 电源供电模块:为整个系统提供稳定电力支持。

输出单元主要包括:

  1. OLED显示模块:动态展示温度、光照、PH值、CO2浓度等关键参数;
  2. 继电器驱动电路:分别控制风扇(降温)、补光灯、加酸泵、加碱泵以及通风装置的启停。

此外,WIFI模块可将采集到的所有环境数据上传至手机端应用,支持远程数据查看、阈值修改及设备控制功能,极大提升了系统的灵活性与实用性。系统总体结构框图如图3.1所示。

三、实物展示

主控芯片:STM32F103C8T6

PCB板采用绿色双层设计,厚度为1.2mm,上下层均覆铜并接地,提升抗干扰能力。大部分元器件为直插式封装,仅个别降压芯片采用贴片形式以节省空间。

供电接口类型:Type-C 接口,便于连接常用充电设备进行供电。

四、电路原理图说明

设计软件版本:Altium Designer 2013

电路连接方式采用网络标号方式进行布线,提高图纸可读性与设计效率。

需特别说明:所提供的原理图仅呈现各功能模块的外部引脚连接关系,并未展示其内部详细电路结构。

五、PCB布局图说明

PCB图由原理图导出生成,绝大部分元器件封装由设计者自行绘制完成,不对外提供独立封装库文件,仅提供已整合连接的完整工程源文件。

在PCB板中央位置设有项目编号标记,该标识位于单片机底座下方,安装单片机后即被遮挡,外观不可见。

采用双层板设计,顶层与底层均实施覆铜并可靠接地,增强系统稳定性与电磁兼容性能。

六、程序代码片段展示

开发环境:Keil uVision5

软件架构上将逻辑控制程序与硬件驱动程序分离处理,main.c文件主要负责主流程控制,而各个外设的驱动代码则分别存放于独立的.c源文件中,便于维护与扩展。

/**********************************
函数名:定时器中断回调函数
传参值:无
返回值:无
**********************************/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	static uint32_t time_1ms_count = 0;
	static uint32_t time_count_5s = 0;

	if(htim->Instance == htim1.Instance)		//定时器1触发中断
	{
		time_1ms_count++;
		if(time_1ms_count >= 10)							//10ms计时
		{
			time_1ms_count = 0;
			flag_time_10ms = 1;
		}
		
		if(flag_begin_5s == 1)
		{
			time_count_5s++;
			
			if(time_count_5s >= 5000)						//5s计时
			{
				time_count_5s = 0;
				
				flag_finish_5s = 1;
			}
		}
		else
		{
			time_count_5s = 0;
			flag_finish_5s = 0;
		}
	}
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群