智能宿舍系统的实现

基于STM32的智能宿舍
选题背景:
随着社会经济结构的不断变化和互联网的普及与发展,传统宿舍管理方式已经不能满足智能化管理的需求,在无人情况下难以对突发情况做出预警,更缺乏对多个宿舍进行统一管理的手段。人们对宿舍环境的舒适性、安全性、便捷性等提出了更高的要求,信息化、智能化成为高校宿舍管理系统的重要发展趋势。
意义:
将物联网技术与学生宿舍相结合,设计并实现智能宿舍系统,这对提高学生的在校生活质量具有很大的意义。所以我运用硬件和软件两大方面的技术来提升宿舍生活质量,通过手机或电脑平台进行操作,包括远程控制门锁开关,电灯,风扇,以及对宿舍环境监控的目的。科技化的宿舍会让学生们得到安心、舒适的生活。

需求分析:
1)传感器数据采集:温度、湿度、烟雾浓度、雨水浓度、是否有火等环境因素的实时监测功能。
2)安全警报模块:当有火灾发生或者烟雾浓度过高会,蜂鸣器会响应做警报提示。
3)指纹识别模块:通过录入不同指纹,当识别正确指纹时,宿舍门打开。
4)远程控制:可以在后台中远程控制宿舍门、风扇、灯等不同电器的开关。
5)宿舍服务模块:消息通知、调宿申请、报修服务。
6)水电费的查询与缴纳模块
7)后台管理:宿舍服务模块、用户管理模块、设备控制模块、安全警报模块、宿舍环境监测模块、水电费的查询与缴纳模块。
实现硬件截图:
在这里插入图片描述
实现软件截图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后台管理系统实现截图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
KEIL5实现主函数:

//头文件
#include “led.h”
#include “delay.h”
#include “key.h”
#include “sys.h”
#include “usart.h”//串口TTL头文件
#include “esp8266.h”//WIFI模块头文件
#include “pbdata.h”//GPIO映射的头文件
#include “oled_iic.h”//显示屏头文件
#include “pwm.h”//PWM波驱动L298N电机模块头文件
#include “as608.h”
#include “timer.h”
#include “usart3.h”
#include “adc.h”
#include “dht11.h”
#include “lsens.h”
//网络协议层
#include “onenet.h”//MQTT协议头文件(WIFI数据上传协议)

//网络设备
#include “esp8266.h”
//c库
#include “string.h”

extern u8 flag;
u8 doorflag=0;

u8 humidityH; //湿度整数部分
u8 humidityL; //湿度小数部分
u8 temperatureH; //温度整数部分
u8 temperatureL; //温度小数部分
extern u16 smog;
u8 rain;

//灯的状态
// u8 LED0_FLAG;
// u8 LED1_FLAG;
//串口接收
u8 USART1_TX_BUF[USART_REC_LEN]; //串口1,发送缓存区
__align(4) u8 dtbuf[50]; //打印缓存器

void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void USART_Configuration(void);

void Configuration_init(void)
{
extern const u8 BMP1[];
HZ= GB16_NUM();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
RCC_Configuration();	//系统时钟初始化
NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
GPIO_Configuration();//端口初始化	
delay_init();	    	 //延时函数初始化	  
uart_init(9600);//串口1初始化
KEY_Init();
LED_Init();
uart2_init(115200);//串口2初始化
OLED_Init();        //OLED初始化
OLED_Clear();   
usart3_init(57600);
pwm_init();	
ADCX_Init();
DHT11_Init();//DHT11初始化
ESP8266_Init();					//初始化ESP8266
Lsens_Init();

}

DHT11_Data_TypeDef DHT11_Data;

int main(void)
{

unsigned char *dataPtr = NULL;
unsigned short timeCount = 0;	//发送间隔变量
Configuration_init();
while(OneNet_DevLink())			//接入OneNET
delay_ms(500);
printf("接入onenet成功");

OLED_ShowCH(16,0,"指纹锁门禁系统");
OLED_ShowCH(16,2,"K1键添加指纹");
OLED_ShowCH(16,4,"K3键删除指纹");
OLED_ShowCH(16,6,"K5键验证指纹");


while(1) 
{		
	
		if( Read_DHT11(&DHT11_Data)==SUCCESS)										 //“\”表示转向一下行
		{
			//主要用于数据上传使用
			humidityH=DHT11_Data.humi_int;	  //湿度整数部分
		temperatureH=DHT11_Data.temp_int;   //温度整数部分

		}

// TIM_SetCompare1(TIM3, 195);//开门
// TIM_SetCompare1(TIM3, 185);//关门

key_num=KEY_Scan(0);
	if(key_num==1)
	{
	key_num=0;
			OLED_Clear();
			Add_FR();
	}
	if(key_num==3)
	{
	
			key_num=0;
			GPIO_SetBits(GPIOE,GPIO_Pin_5);
			OLED_Clear();
			Del_FR();

	}
	if(key_num==5)
	{
		key_num=0;
		OLED_Clear();
		OLED_ShowCH(32,2,"请按手指");
		press_FR();
		
	}
		if(smog>1600)
		{
			GPIO_SetBits(GPIOF,GPIO_Pin_2);//开风扇
		}
		else
		{
		GPIO_ResetBits(GPIOF,GPIO_Pin_2);//开风扇
		
		}
						if(++timeCount >= 100)		//时间间隔5s
	{
		
			
			rain=Lsens_Get_Val();//获取雨水浓度
		Get_ADC();
		OneNet_SendData();//发送数据给onenet
			timeCount = 0;
		ESP8266_Clear();
		printf("%d%d%d%d\r\n",smog,temperatureH,humidityH,rain);
	}

			dataPtr = ESP8266_GetIPD(0);//获取平台返回的数据
			if(dataPtr != NULL)//如果返回数据不为空
			OneNet_RevPro(dataPtr);//平台返回数据检测

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值