STM32项目--基于STM32的办公室安保(智能家居)系统设计

这篇具有很好参考价值的文章主要介绍了STM32项目--基于STM32的办公室安保(智能家居)系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于嵌入式系统的办公室安保系统设计

简介

设计一套基于STM32的办公室安防系统,系统内部包括门禁系统、灾害报警系统、人脸识别系统和交互中心四个子系统。
门禁系统:主要实现对门禁卡的存储和读取并识别已存储卡片的信息并控制开门,如读取卡片为未存储卡片则报警。
灾害探测:系统本项目简单化使用了温湿度传感器和烟雾浓度传感器来采集外界的温湿度和烟雾浓度并传输告警信号。
人脸识别:可存储人脸信息并识别,如检测为以存储的面部则打开门锁。
交互中心:将STM32单片采集的数据通过WiFi模块上传到onenet平台,通过编写一个简单的小程序来获取温湿度和烟雾传感器的数值和门锁状态。

硬件准备

STM32单片机采用的STM32F103ZET6,人脸识别模块采用的K210作为主控芯片,温湿度传感器使用的DHT11模块,烟雾浓度使用的MQ2传感器,门禁卡使用的RC522射频模块,WiFi采用的ESP8266模块
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居

温湿度烟雾浓度数据采集

模块初始化和数据读取

DHT11模块的数据格式:8bit湿度整数数据、8bit湿度小数数据、8bit温度整数数据、8bit温度小数数据+8bit校验位,详细原理请查询DHT11时序图。
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居

u8 DHT11_Init(void)
{	 
 	GPIO_InitTypeDef  GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);	 
 	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;				
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 	GPIO_Init(GPIOG, &GPIO_InitStructure);			
 	GPIO_SetBits(GPIOG,GPIO_Pin_11);						
	DHT11_Rst();  
	return DHT11_Check();
} 
//DHT11读取数据
u8 DHT11_Read_Data(u8 *temp,u8 *humi)    
{        
 	u8 buf[5];
	u8 i;
	DHT11_Rst();
	if(DHT11_Check()==0)
	{
		for(i=0;i<5;i++)//
		{
			buf[i]=DHT11_Read_Byte();
		}
		if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])//进行校验
		{
			*humi=buf[0];
			*temp=buf[2];
		}
	}else return 1;
	return 0;	    
}
//MQ2传感器
void MQ2_Adc_Init(void)
{
	ADC_InitTypeDef ADC_InitStructure; 
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );	  //使能ADC1通道
	RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子,ADC最大时间不超过14M                    
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//选用PA1作为模拟通道输入引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//
	GPIO_Init(GPIOA, &GPIO_InitStructure);	
	ADC_DeInit(ADC1);  //复位ADC1
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC工作模式:ADC1和ADC2工作在独立模式
	ADC_InitStructure.ADC_ScanConvMode = ENABLE;	//模数转换在单通道模式
	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;	//模数转换工作在单次转换模式
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//转换由软件出发而不是外部触发启动
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//ADC数据右对齐(12位逐次逼近型)
	ADC_InitStructure.ADC_NbrOfChannel = 1;	//顺序进行规则转换的ADC通道数目
	ADC_Init(ADC1, &ADC_InitStructure);	
	ADC_Cmd(ADC1, ENABLE);	
	ADC_ResetCalibration(ADC1);	//复位校准
	while(ADC_GetResetCalibrationStatus(ADC1));
	ADC_StartCalibration(ADC1);
	while(ADC_GetCalibrationStatus(ADC1));
}
//读取ADC值
u16 Get_Adc(u8 ch)   
{
  	//设置指定ADC规则组通道,一个序列,采样时间
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	//ADC1,ADC通道,采样时间为239.5周期 			    
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的ADC1的软件转换启动功能
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
	return ADC_GetConversionValue(ADC1);	//返回最近一次ADC1规则组的转换结果
} 

获取到温湿度和烟雾的值之后进行处理并设置阈值,超过阈值时则报警,温度超过阈值之后红灯亮,烟雾浓度超过阈值之后绿灯亮。
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居

门禁卡系统

采用RC522射频模块,工作的过程:寻卡->防冲突->选卡->操作卡片,
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
对模块进行初始化,STM32通过SPI协议和RC522模块进行数据读取,在使用RC522之前应先初始化SPI,然后对RC522模块进行复位和设置工作模式。

void SPI1_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(	RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE );
    // CS
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    GPIO_Init(GPIOA, &GPIO_InitStructure);					 
    // SCK
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    // MISO
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 		
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    // MOSI
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    // RST
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}

将卡片放到模块上,按下KEY0读取卡片信息并存储。
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
按下KEY1键,读取卡片信息,若读取到已存卡片则开门,若为未知卡片,则关门蜂鸣器报警。并将门锁信息上传到onenet平台和小程序。
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居

人脸识别功能

采用K210模块进行人脸识别,外部链接摄像头和LCD。K210集成了机器视觉(卷积神经网络加速处理器KPU),可以实现人脸识别功能。摄像头采集数据后传输到K210进行图像处理,如果图像中有人脸,K210能识别人脸在图像中的位置并在LCD显示中用方框框住人脸所在的区域。
k210采用MaixPy IDE开发,模型使用MaixHub提供的人脸识别模型,具体如何烧录固件和获取机器码不再赘述,网上有很多讲解。
MaixPy 资料站
获取与烧录固件
机器码获取模型
人脸识别模型

STM32 和 K210通信

使用串口进行通信

import sensor
import image
import lcd
import KPU as kpu
import time
from Maix import FPIOA, GPIO
import gc
from fpioa_manager import fm
from board import board_info
import utime
from machine import UART
#communication with STM32
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(9, fm.fpioa.UART1_RX, force=True)
uart = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
Message1 = 'Hello\r\n'
Message2 = 'World\r\n'
while (1)
	img = sensor.snapshot()
	uart.write(Message1);
	utime.sleep_ms(1000);
	uart.write(Message2);
	utime.sleep_ms(1000);
	lcd.display(img);

人脸识别代码太长了就不放在这里了,如有需要可以私信或上网搜索。
按下K210板子上的BOOT键进行人脸识别的存储。将面部特征存储下来,并在下一次识别时如果匹配上的话将结果信息返回给STM32改变门锁状态,并将结果上传到云端。若未识别到存储的人脸信息则关闭门锁。
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居

WIFI模块上传ONENET 平台

WIFI模块初始化

WIFI模块通过USART2串口与单片机进行通信,ESP8266通过AT指令来连接云平台。

void ESP8266_Init(void)
{	
	GPIO_InitTypeDef GPIO_Initure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	GPIO_Initure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Initure.GPIO_Pin = GPIO_Pin_13;					
	GPIO_Initure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_Initure);
	GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET);
	delay_ms(250);
	GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET);
	delay_ms(500);
	ESP8266_Clear();
	printf("1. AT\r\n");
	while(ESP8266_SendCmd("AT\r\n", "OK"))
		delay_ms(500);
	printf("2. CWMODE\r\n");
	while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
		delay_ms(500);
	printf( "3. AT+CWDHCP\r\n");
	while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK"))
		delay_ms(500);
	printf("4. CWJAP\r\n");
	while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
		delay_ms(500);
	printf( "5. CIPSTART\r\n");
	while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))
		delay_ms(500);
	printf("6. ESP8266 Init OK\r\n");
}
void USART2_IRQHandler(void)
{

	if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) 
	{
		if(esp8266_cnt >= sizeof(esp8266_buf))	esp8266_cnt = 0; 
		esp8266_buf[esp8266_cnt++] = USART2->DR;
		USART_ClearFlag(USART2, USART_FLAG_RXNE);
	}
}

如何创建ONENET平台账号和创建项目可自行上网查询。将自己设备接入ONENET平台后,即可接收到通过ESP8266模块上传的数据。然后通过小程序获取云平台的数据,实现在远端实时监控办公室的情况。
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
STM32项目--基于STM32的办公室安保(智能家居)系统设计,stm32,单片机,智能家居
初步实现了基本功能,后续可以进行优化添加电机来模拟门锁开关,对K210进行掉电存储功能,增加一些外设来优化办公室监控的环境状态,优化小程序的界面,并实现人机交互功能。
刚学习单片机不久,学习做一个小项目,希望各位大佬多多指导!文章来源地址https://www.toymoban.com/news/detail-754160.html

到了这里,关于STM32项目--基于STM32的办公室安保(智能家居)系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • AR 技术应用与管理:施工建造、机柜扫描、办公室导航

    随着科技的不断革新和创新,越来越多的行业开始迎来数字化时代的变革。建筑行业作为人类历史上最重要的产业之一,在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用,为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑施工管理过程中,

    2024年02月13日
    浏览(53)
  • 共享办公室在国内外的发展史以及现状介绍

    共享办公室,这个曾经陌生的概念,如今已成为全球范围内炙手可热的话题。在这个时代,越来越多的人开始关注灵活性和协作性,而共享办公室正是在这种需求下应运而生的。本文将带您一探共享办公室的国内外发展史、国内当前发展现状以及未来5年的发展预期。 国外共

    2024年02月11日
    浏览(70)
  • 化身全能战士:ChatGPT助我横扫办公室【文末送书两本】

    🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主,新星计划导师。 💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。 🎁🎁:文章末尾扫描二维码可以加入粉丝交流群 。 程序员

    2024年02月06日
    浏览(81)
  • 家庭用或者办公室用的小型局域网的组建过程

    如何建立小型局域网? 方法/步骤设置硬件环境 将所有电脑网线插入路由器的LAN口,使路由器与电脑相连。 配置电脑IP地址 对所有电脑分别按如下提示操作:网上邻居右键属性-本地连接右键属性-双击“internet协议(TCP/IP)”,在出现界面里都选自动获得。 双击“internet协议

    2024年02月07日
    浏览(51)
  • 如何使用iPhone15在办公室观看家里电脑上的4k电影?

    我同事老王最近刚换了新出的iPhone 15 Pro Max,直呼屏幕牛逼,太香了! 但他作为我司摸鱼比赛一等奖获得者,每天都潜心研究摸鱼技巧,怎么能在办公室用iPhone15上这块超爽的屏幕看存在家里电脑上的4kHDR电影呢? 本教程解决的问题是: 下载到家中电脑的电影电视剧无法在户

    2024年02月05日
    浏览(51)
  • 群晖NAS+内网穿透实现人在办公室轻松观看家里电脑上的4k电影

    我同事老王最近刚换了新出的iPhone 15 Pro Max,直呼屏幕牛逼,太香了! 但他作为我司摸鱼比赛一等奖获得者,每天都潜心研究摸鱼技巧,怎么能在办公室用iPhone15上这块超爽的屏幕看存在家里电脑上的4kHDR电影呢? 本教程解决的问题是: 下载到家中电脑的电影电视剧无法在户

    2024年02月05日
    浏览(48)
  • 在办公室会客室隔断中,如何平衡功能性、美观性和经济性

    在办公室会客室隔断的设计中,平衡功能性、美观性和经济性是非常重要的。以下是一些建议: 1. 功能性: - 考虑隔断的功能需求,例如提供私密性、减少噪音、分隔空间等。选择适当的隔断材料和结构,以满足这些功能要求。 - 考虑到隔断的灵活性和可调性,以便根据需要

    2024年02月15日
    浏览(51)
  • 如何使用iPhone15在办公室观看家里电脑上的4k电影,实现公网访问本地群晖!

    我同事老王最近刚换了新出的iPhone 15 Pro Max,直呼屏幕牛逼,太香了! 但他作为我司摸鱼比赛一等奖获得者,每天都潜心研究摸鱼技巧,怎么能在办公室用iPhone15上这块超爽的屏幕看存在家里电脑上的4kHDR电影呢? 本教程解决的问题是: 下载到家中电脑的电影电视剧无法在户

    2024年02月08日
    浏览(47)
  • SV-7041T 30W网络有源音箱校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱

    SV-7041T 30W网络有源音箱 校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率30W。同时

    2024年01月19日
    浏览(49)
  • 次时代摸鱼骚操作:人在办公室轻松观看家里电脑上的4k电影(移动端公网访问本地群辉存储视频文件)

    正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 我同事老王最近刚换了新出的iPhone 15 Pro Max,直呼屏幕牛逼,太香了! 但他作为我司摸鱼比赛一等奖获得者,每天都潜心研究摸鱼技

    2024年02月08日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包