问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32的宿舍环境智能调控系统设计与实现

创作时间:
作者:
@小白创作中心

基于STM32的宿舍环境智能调控系统设计与实现

引用
CSDN
1.
https://blog.csdn.net/whirlwind526/article/details/143056405

基于STM32的宿舍环境智能调控系统是一个集成了多种传感器和执行器的嵌入式系统项目。该系统能够监测宿舍内的温度、湿度、光照等环境参数,并根据设定的阈值自动控制风扇、加热片、加湿器、LED灯等设备,实现智能化的环境调控。

环境介绍

  • 语言环境:C语言嵌入式
  • 技术实现:STM32
  • 硬件构成:硬件部分主要涉及STM32微控制器、传感器、执行器等

项目简介

基于STM32的宿舍环境智能调控系统采取的主要技术路线包括以下步骤:

  1. 系统总体设计:设计整个智能调控系统的架构,包括硬件和软件部分。硬件部分主要涉及STM32微控制器、传感器、执行器等;软件部分主要涉及系统控制算法、数据采集与处理、通信协议等。

  2. 硬件选型与设计:选择合适的STM32微控制器、传感器和执行器等硬件模块。同时,需要考虑各模块之间的通信接口和数据传输协议,以确保系统能够稳定、可靠地运行。

  3. 软件设计与开发:编写控制算法,实现数据采集与处理、通信协议等功能。在软件设计过程中,采用模块化设计思想,将系统功能划分为多个模块,以便于代码的编写、调试和维护。

  4. 传感器与执行器配置:配置合适的传感器和执行器。传感器用于监测宿舍内的环境参数,如温度、湿度、光照等;执行器用于控制宿舍内的设备,如空调、窗帘、灯光等。

  5. 系统集成与调试:将各模块集成在一起,进行系统调试。

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

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号