2025单片机选题|基于STM32的宿舍环境智能调控系统设计与实现

作者主页:编程千纸鹤

作者简介:Java领域优质创作者、优快云博客专家 、优快云内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作

主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等

业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-DPJ-015

一,环境介绍

语言环境:C语言嵌入式

技术实现:STM32

硬件构成:硬件部分主要涉及STM32微控制器、传感器、执行器等

二,项目简介

基于STM32的宿舍环境智能调控系统采取的主要技术路线包括以下步骤: 系统总体设计:首先需要设计整个智能调控系统的架构,包括系统的硬件和软件部分。硬件部分主要涉及STM32微控制器、传感器、执行器等;软件部分主要涉及系统控制算法、数据采集与处理、通信协议等。 硬件选型与设计:根据系统需求,选择合适的STM32微控制器、传感器和执行器等硬件模块。同时,需要考虑各模块之间的通信接口和数据传输协议,以确保系统能够稳定、可靠地运行。 软件设计与开发:编写控制算法,实现数据采集与处理、通信协议等功能。在软件设计过程中,需要采用模块化设计思想,将系统功能划分为多个模块,以便于代码的编写、调试和维护。 传感器与执行器配置:根据系统需求,配置合适的传感器和执行器。传感器用于监测宿舍内的环境参数,如温度、湿度、光照等;执行器用于控制宿舍内的设备,如空调、窗帘、灯光等。 系统集成与调试:将各模块集成在一起,进行系统调试。

针对宿舍环境智能调控系统的设计与实现,首先进行了国内外相关研究现状的调研。通过图书馆、知网等渠道,收集了关于单片机、传感器应用、智能调控系统等方面的文献和论文,深入了解了当前技术发展水平及应用现状。在确定系统框架之前,对已有文献进行综述和分析,结合宿舍环境的特点和需求,提出了适合的系统框架。框架图的绘制考虑了各个功能模块之间的联系和交互,确保系统设计合理且易于实现。在确定各元器件时,根据系统框架和需求,选择了适合的硬件元件,温湿度传感器、光敏电阻模块、红外检测模块等。在硬件设计方面,考虑到系统的稳定性、可靠性和成本效益,进行了细致的选型和布局。在软件设计方面,采用了基于STM32的嵌入式系统开发平台,结合相关编程语言和开发工具,编写了系统所需的程序代码。完成硬件设计和软件设计后,对系统进行了整体测试和调试,验证了系统的功能完整性和稳定性。

三,系统展示

实物效果图:

系统初始化后,利用温湿度传感器监测宿舍温度和湿度。一旦检测到温度超过设定阈值,系统将自动启动风扇以降温;反之,如果温度低于阈值,系统则会启动加热片以升温。如下图所示。

系统初始化后,通过温湿度传感器实时监测宿舍的温度和湿度。当系统检测到湿度超过设定的阈值时,将自动启动风扇以降低湿度。相反,如果湿度低于阈值,则会启动加湿器以增加湿度。系统还配备液晶显示屏,用于显示当前室内温湿度以及系统运行状态,为用户提供实时信息和控制界面。如下图所示。

系统上电后,通过光敏电阻传感器实时监测宿舍内的光线情况。一旦检测到光线不足的情况,系统将自动启动LED灯,以提供足够的照明。这项功能能够确保在光线不足的情况下,宿舍内的可见性得到维持,提升居住环境的舒适度和安全性。如图下图所示。

系统上电后,系统通过红外热释传感器检测宿舍是否有人,当检测到有人时,系统通过LED进行补光。如图所示。

四,核心代码展示

#include "stm32f10x.h"                  // Device header
#include "sys.h"
#include "delay.h"
#include "oled.h"
#include "bsp_dht11.h"
#include "timer.h"
#include "Key.h"
#include "led.h"
#include <stdio.h> 
#include "AD.h" 

char war[28];
u8 temp,hum,Flag=0;
u8 yu_temp=20,yu_hum=50;

DHT11_Data_TypeDef DHT11_Data;
u8 time[15];
u8 key_value,keyset_num=0,set_mode=0;
uint16_t AD0;
float Voltage,Y_voltage=1.0;

int main(void)
{
	Key_Init();
	LED_Init();

	LED =0;     		
	Jiashi =0;  	
	PFC_hot =0; 	
	MOTOR_fan	=0;
	

	DHT11_Init();
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
 
	OLED_Init();
  OLED_Clear();
	TIM2_Int_Init(30000, 719);
//	//Delay_ms(50);
//		//OLED_ShowChar(4, 13,'%');
//	sprintf((char *)war, "YT:%dC YH:%d",  yu_temp, yu_hum);				
//	OLED_ShowString(4, 1, (char *)war);	
//	
//	sprintf((char *)war, "Y_V:%.1fv",  Y_voltage);
//	OLED_ShowString(3, 1, (char *)war);	
	
//	OLED_ShowChar(1, 15,'A');
	AD_Init();
	
	while(1)
		{
						
			key_value=Key_GetNum();//			
			if(key_value==4)//设置调节模式,1次:温度;2湿度;3烟雾  阈值
			{
				keyset_num++;
				if(keyset_num>=3)
				{
					keyset_num=0;
				}
				
				switch(keyset_num)
				{
					case 1:	OLED_ShowChar(4, 15,'T'); break;
					case 2:	OLED_ShowChar(4, 15,'H'); break;
					case 0:	OLED_ShowChar(4, 15,' '); break;
				}								
			}
					
			if(key_value==5&&keyset_num==1)//调节温度
			{
				yu_temp++;//
			}
			if(key_value==6&&keyset_num==1)//
			{
				yu_temp--;			
			}			
//
			if(key_value==5&&keyset_num==2)//调节SHIDU
			{
				yu_hum++;//
			}
			if(key_value==6&&keyset_num==2)//
			{
				yu_hum--;				
			}		
			sprintf((char *)war, "YT:%2dC YH:%2d",  yu_temp, yu_hum);				
			OLED_ShowString(3, 1, (char *)war);			

//				sprintf((char *)war, "Y_V:%.1fv",  Y_voltage);
//				OLED_ShowString(3, 1, (char *)war);				
			
			

			if(P_red==1)
			{
				OLED_ShowChar(3, 15,'P');
			}
			else
			{
				OLED_ShowChar(3, 15,'N');
			}

			if(temp>yu_temp||hum>yu_hum)
			{
				MOTOR_fan	=1;
			}
			else
			{
				MOTOR_fan	=0;
			}
//			
			if(temp>=yu_temp)
			{
				PFC_hot =0;
			}
			else
			{
				PFC_hot =1;
			}			
//jiashi
				if(hum<yu_hum)
				{
					Jiashi =1; 
				}
				else
				{
					Jiashi =0; 
				}
//灯
				if(AD0<700&&P_red==1)
				{
					LED =1; 
				}
				else
				{
					LED =0; 
				}

				
				
			if(Flag==1)
			{
				Flag=0;
					if(DHT11_Read_TempAndHumidity(&DHT11_Data) == SUCCESS)
					{  
							temp=DHT11_Data.temp_int;
							hum=DHT11_Data.humi_int;
					}	

					sprintf((char *)war, "T:%d H:%d",  temp, hum);				
					OLED_ShowString(1, 1, (char *)war);
					
					AD0 = AD_GetValue(ADC_Channel_0);
					OLED_ShowString(2, 1, "L:");	
					OLED_ShowNum(2, 3, AD0, 5);
//					Voltage = (float)AD0 / 4095 * 3.3;
//					sprintf((char *)war, "V:%.1fv",  Voltage);
//					OLED_ShowString(2, 8, (char *)war);
							
			}
				
		}
}


void TIM2_IRQHandler(void)  
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
		{
					TIM_ClearITPendingBit(TIM2, TIM_IT_Update);  
					Flag=1;			
		}
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程千纸鹤

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值