基于单片机的温室环境数据监测系统的设计

这篇具有很好参考价值的文章主要介绍了基于单片机的温室环境数据监测系统的设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

收藏和点赞,您的关注是我创作的动力

概要

  与农业发达国家相比,我国的农业科技方面还处于刚刚起步的状态,多数自动化农业设备仍然使用在科研方。目前在温室环境数据监测方面,自动化设备比较落后。本文介绍了以STM32F103RCT6微控制器为核心,结合多种外设进行设计的温室环境数据监测系统。主要以温湿度度传感器和土壤湿度湿度传感器作为获得农田环境的传感器测量模块。以继电器为执行模块。以基本的按键输入和OLED显示屏输出信息联合作为人机交互模块。程序则采用更加方便易懂的封装好的C语言库函数进行编写。
关键词:STM32,温室环境,数据监测,传感器

一、总体方案设计

  以农田节水灌溉系统为对象,采用合适的STM32硬件和软件系统,设计实现温室环境数据监测系统设计。

2.1 总体架构设计

温室环境数据监测系统由单片机、空气温湿度检测模块、按键输入模块、电源模块、继电器模块、土壤湿度传感器模块、OLCD液晶显示器等几部分组成 。土壤湿度检测模块检测土壤的湿度并把信息传给单片机,按键模块可以对土壤的湿度范围进行设置,显示模块使用的是液晶显示屏,可以将当前土壤湿度、空气温湿度范围显示出来,继电器模块用于加水。当湿度传感器检测到土壤湿度低于设定值,并且空气温度大于设定值时,单片机引脚输出控制继电器打开。电源模块由DC电源插座、自锁开关和外接USB电源组成,如下图2.1为系统总的原理架构。
环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

图2.1 系统总体框图

二、整体硬件电路设计

3.1 主控制器电路

本次系统的设计是以STM32F103C8T6作为核心控制器,这是意法半导体公司ST旗下的一款增强型的微控制器。具体的实物如图3.1所示。
环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

图3.1 STM32_mini开发板实物图
在工作频率上,C8T6所使用的内核具有很优良的性能。使用外设的8MHZ精准晶振,经过倍频后能够达到72MHZ的工作频率,优良的运行速度能购极大的提高系统的运行性能。外部晶振如图3.2。
环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

图3.2 系统时钟晶振
除此之外,微控制器集成了其他很多外设,有ADC/DAC转换器。在控制系统的设计中,使用传感器,除了少数的直接已经转换完成能够字接读取的数字型传感器,绝大多数传统传感器都是输出模拟量,需要接AD转换模块。有4个通用的定时器,可以用来提供有关计数定时、输出PWM波、捕获输入等功能。有两个IIC和三个SPI接口,可以用来提供通信接口,这是扩展外设例如链接显示屏、读取传感器、读写FLASH存储芯片等都要用到这些通信接口。该芯片引脚具体如图3.3所示。
环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

图3.3 STM32RCT6引脚图

三 系统设计概要

4.2 主程序设计

在本次设计中我使用了时间片轮转的设计思想,设计了一个多任务并行的控制系统。这一设计思想的具体实现是在一个时间片内设置多个时间点,在每一个时间点执行相应的任务,由于控制器极高的运行频率,一次任务并不会对其他的任务造成影响,也就造成了多任务并行的现相。
以下将介绍main函数中的各个任务:
下图4.3所示的是检测控制任务,顾名思义该任务的作用是检测环境参数和控制继电器。该任务调用Soil_read和Read_DHT11函数检测环境参数后与湿度设定值setnum和温度设定值settem相互比较,满足湿度低且温度符合后打开水泵进行灌溉。我将LED0作为水泵的开关指示灯,水泵打开时LED0亮。
环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

图4.3 主程序设计流程图

原理图

环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

环境温湿度监测系统流程图,单片机,单片机,嵌入式硬件

程序

附录(源程序):


#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"	 
#include "dht11.h" 	
#include "oled.h"
#include "timer.h" 
u8 key=0;
u8 T_Alarm_L=20;
u8 T_Alarm_H=30;
u8 RH_Alarm_L=20;
u8 RH_Alarm_H=60;
u8 Light_Alarm=50;
u8 Light=0;
u8 MENU_NUM=0;
//0;主界面 1;温度低 2;温度高 3:湿度低  4:湿度高  5;光照 
int main(void)
{	 	    
u8 temperature;  	    
u8 humidity;    
delay_init();	  //延时函数初始化	 
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
OLED_Init();
DHT11_Init();
KEY_Init();
	Gpio_Init();
	delay_ms(1000);
	while(1)
	{	 
	delay_ms(200);
	key=KEY_Scan(1);		
	switch(key)
	{				 
	case WKUP_PRES:	
	if(MENU_NUM>0)
	{
	MENU_NUM++;	
	OLED_Clear();
	if(MENU_NUM==2)
	{
OLED_ShowNum(40,2, T_Alarm_H,2,16);  
	OLED_ShowString(0,0,"T_H Alarm:"); 
}else if(MENU_NUM==3)
	{	OLED_ShowNum(40,2, RH_Alarm_L,2,16);  
	OLED_ShowString(0,0,"RH_L Alarm:"); 
	}else if(MENU_NUM==4)
	{	OLED_ShowNum(40,2, RH_Alarm_H,2,16);  			OLED_ShowString(0,0,"RH_H Alarm:"); 
				}else if(MENU_NUM==5){
		OLED_ShowNum(40,2, Light_Alarm,2,16);  			OLED_ShowString(0,0,"Light Alarm:"); 
				}else if(MENU_NUM==6){		MENU_NUM=0;
		}
		}
		break;
		case KEY2_PRES:	
		if(MENU_NUM==1)
	{
	T_Alarm_L++;
	OLED_ShowNum(40,2, T_Alarm_L,2,16);  
			}else if(MENU_NUM==2)
			{
	T_Alarm_H++;
	OLED_ShowNum(40,2, T_Alarm_H,2,16);  
			}else if(MENU_NUM==3)
			{
	RH_Alarm_L++;
	OLED_ShowNum(40,2, RH_Alarm_L,2,16); 
			}else if(MENU_NUM==4){
	RH_Alarm_H++;
					OLED_ShowNum(40,2, RH_Alarm_H,2,16); 
			}else if(MENU_NUM==5){
	Light_Alarm++;
		OLED_ShowNum(40,2, Light_Alarm,2,16); 
			}
			break;
			case KEY1_PRES:	 				 if(MENU_NUM==1)
			{
					T_Alarm_L--;
		OLED_ShowNum(40,2, T_Alarm_L,2,16);  
			}else if(MENU_NUM==2)
			{
		T_Alarm_H--;
	OLED_ShowNum(40,2, T_Alarm_H,2,16);  
			}else if(MENU_NUM==3)
			{
		RH_Alarm_L--;
		OLED_ShowNum(40,2, RH_Alarm_L,2,16); 
			}else if(MENU_NUM==4){
	RH_Alarm_H--;
	OLED_ShowNum(40,2, RH_Alarm_H,2,16); 
			}else if(MENU_NUM==5){
	Light_Alarm--;
	OLED_ShowNum(40,2, Light_Alarm,2,16); 
			}
		break;
	case KEY0_PRES:	
	if(MENU_NUM==0)
				{
	MENU_NUM=1; 
	OLED_Clear();
OLED_ShowNum(40,2, T_Alarm_L,2,16);  
	OLED_ShowString(0,0,"T_L Alarm:"); 
			}
		break;
	}
 	if(MENU_NUM==0)			//每200ms读取一次
		{							DHT11_Read_Data(&temperature,&humidity);	//读取温湿度值				OLED_ShowString(0,0,"T:");  
	OLED_ShowString(0,2, "RH:");  
				OLED_ShowNum(40,0,temperature,2,16);  
OLED_ShowNum(40,2, humidity,2,16);  
			}	
		//判断温度
if(humidity!=0||temperature!=0)
	{
	if(temperature<T_Alarm_L)
		{
			L_T_Led_1;
			M_T_Led_0;
			H_T_Led_0;
			}else if(temperature>T_Alarm_H)
			{
			L_T_Led_0;
			M_T_Led_1;
			H_T_Led_1;		  
			}else{
			L_T_Led_0;
			M_T_Led_1;
			H_T_Led_0;		  
			}
			//判断湿度
	if(humidity<RH_Alarm_L)
			{
			L_RH_Led_0;
			H_RH_Led_1;
			}else if(humidity>RH_Alarm_H)
			{
			L_RH_Led_1;
			H_RH_Led_0;	
			}else{
			L_RH_Led_1;
			H_RH_Led_1;
			}
			//判断光照
			if(Light<Light_Alarm)
			{
				Light_Led_1;	
			}else{
				Light_Led_0;
			}
		}
	}
}

四、 结论

首先STM32微控芯片的基本功能完全可以满足系统设计的需要。作为一个工业级的控制芯片能够有足够的的I/O口用于外接各种外设。在此之外,微控芯片高达72MHZ的处理速度能够相当迅速的对信息判断进行处理,这对于系统性能的优化提供了先决条件。再利用DHI11、土壤湿度传感器的过程中,高集成的微控制器提供了便利的开发环境。其次是本系统采用OLED屏幕以及蜂鸣器作为报警装置,相比较于传统的人工监测更加智能化。在软件方面,使用将系统工作过程具象化的状态机思想可以及为具体的分析,完善程序逻辑。除此之外,使用模块化编程,将每一个模块当成一个任务描写,将模块的信息详尽的编写,在以后改进修改时能更简单,毕竟读程序无论是自己的还是被人的都是一件困难的事。

五、 文章目录

目 录
摘 要: I
ABSTRACT:. II
1 绪论 1
1.1 国内外的研究现状 1
1.2 设计的目的与意义 2
1.3 设计说明书的结构安排 2
2 总体方案设计 4
2.1 总体架构设计 4
2.1 核心控制器选择 4
2.2 电源电路 5
2.3 显示模块 5
3 整体硬件电路设计 6
3.1 主控制器电路 6
3.2 测量模块 8
3.2.1 测量温湿度原因 8
3.2.1 DHT11温湿度传感器 9
3.2.2 土壤湿度传感器 10
3.3 人机交互模块 11
3.3.1 显示模块 11
3.3.2 按键输入模块 13
3.4 执行模块 14
4 软件设计 15
4.1 软件设计支持 15
4.2 主程序设计 17
4.3 显示程序的设计 18
4.4 按键程序设计 19
4.5 检测模块设计 21
5 系统调试与结果 23
5.1 各个模块的调试结果显示 23
5.1.1 OLED屏幕的调试结果显示 23
5.1.2 温湿度模块调试 23
5.1.3 土壤湿度模块调试 24
5.1.4 光敏强度模块调试 24
5.1.4 报警值设置 24
5.2 总体调试结果 25
6 总结 27
7 致谢 28
参 考 文 献 29
附录(源程序): 31文章来源地址https://www.toymoban.com/news/detail-842187.html

到了这里,关于基于单片机的温室环境数据监测系统的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32单片机的智能家居环境监测与控制系统设计

    基于STM32单片机的智能家居环境监测与控制系统设计 摘要 :随着物联网技术的不断发展,智能家居环境监测与控制系统的应用越来越广泛。本文设计了一种基于STM32单片机的智能家居环境监测与控制系统,该系统能够实时监测环境中的温湿度和天然气浓度,并将数据显示在

    2024年04月25日
    浏览(50)
  • 基于单片机的恒温恒湿温室大棚温湿度控制系统的设计与实现

           功能介绍 以51单片机作为主控系统; 液晶显示当前温湿度 按键设置温湿度报警上限和下限; 温度低于下限继电器闭合加热片进行加热; 温度超过上限继电器闭合开启风扇进行降温 湿度低于下限继电器闭合加湿器进行加湿 湿度高于上限继电器闭合开启风扇进行除

    2024年02月13日
    浏览(39)
  • 单片机开发|基于单片机的婴儿睡眠监测系统设计

    作者简介:全栈开发工程,从事Java、Python、前端、小程序方面的开发和研究,对大数据应用与开发比较感兴趣, 主要内容:Java项目、前端项目、Python项目、小程序开发、大数据项目、单片机 收藏点赞不迷路  关注作者有好处 文末获取源码   感谢您的关注,请收藏以免忘记

    2024年02月10日
    浏览(45)
  • 【Proteus仿真】【STM32单片机】环境监测系统设计

    本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、蜂鸣器、按键模块、DHT11温湿度传感器、继电器加热祛湿加湿模块等。 主要功能: 系统运行后,LCD1602显示传感器检测的温度、湿度及有害气体浓度值;若按下K3键进入阈值设置模式,默认以温度下限开始位置闪烁

    2024年02月01日
    浏览(100)
  • 基于单片机的智能水质监测系统设计

    收藏和点赞,您的关注是我创作的动力   水资源一直以来都是人类最重要的财富之一,由于工农业的发展人 们对水资源的污染变得越来越严重,保护水资源应势在必行。在这个科学技术日新月异的时代,嵌入式技术和物联网技术一直在发展未曾被淘汰便足以证明这些技术

    2024年02月04日
    浏览(40)
  • 基于单片机的胎压监测系统的设计

    收藏和点赞,您的关注是我创作的动力   本文以STC89C52单片机为控制核心,通过气压传感器模块对汽车各轮胎的胎压进行实时数据的采集与处理,利用2.4G ZigBee无线模块反馈给单片机进行数据处理和判断,当汽车胎压高于和低于系统设定的阙值时,时钟DS1302进行时间记录,

    2024年02月05日
    浏览(40)
  • 基于单片机智能液位水位监测控制系统设计

    ** 单片机设计介绍, 基于单片机智能液位水位监测控制系统设计   基于单片机的智能液位水位监测控制系统可以用来检测和控制液位的高低,并可以用于水泵的控制和自动化水位控制。 该系统主要由单片机、液位传感器、继电器、液晶显示屏等组成。 液位传感器可以通过

    2024年02月05日
    浏览(43)
  • 基于51单片机的温度检测监测报警系统设计

    前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 微信公众号:创享日记 发生:单片机温度检测 获取原理图源文件+程序源文件+仿真源文件+报告+相关资料 基于51单片机的温

    2024年02月13日
    浏览(51)
  • 基于单片机的厨房安全监测系统的设计与实现

     功能介绍  以STM32/51单片机作为主控系统;  OLED液晶显示当前检测的气体浓度,温度,是否有火等信息;  按键可以设置温度上限、可燃气体浓度上限;  当温度超过我们设置自动开启风扇进行降温;  当检测到天然气泄露后蜂鸣器进行声光报警,并且舵机进行控制模拟关

    2024年02月15日
    浏览(36)
  • 毕业设计 STM32单片机的智能家居环境监测控制系统

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月10日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包