一.系统概述

本系统能够对实验室的温湿度、烟雾浓度等环境参数进行实时监测和自动调节,同时具备电压、电流安全监控和门禁管理等功能。主要功能模块如下:

  1. 温湿度传感器 (DHT11):采用单总线方式传输数据,精准监测实验室温湿度,兼具高性价比和较高测量精度。
  2. 烟雾传感器 (MQ-2):采集模拟信号检测烟雾浓度,用于火灾的预警监测。
  3. 电流传感器:利用运算放大器将电流信号转换输出,实现对电流的有效检测。
  4. RFID刷卡门禁系统 (RC522):通过SPI接口与主控通讯,识别学生身份并控制门禁开关。
  5. 红外传感器模块:侦测实验室人员进出情况,若有人未刷卡擅自进入,则联动蜂鸣器及远程上位机进行报警。
  6. 蜂鸣器与继电器模块:负责警报触发及环境温湿度的自动调节控制。
  7. 无线通信模块 (ESP-01S):通过串口和AT指令进行数据传输,支持远程数据交互及APP一键开锁操作。
  8. 密码开锁功能:新增密码开锁方式,进一步提升安全性。当烟雾浓度超标时,系统自动启动风扇并通过手机端推送报警信息;湿度超限时则自动启用除湿功能。

在这里插入图片描述

二.电路设计

电路图采用Altium Designer进行设计,主要包括以下部分:

  1. 选用STM32F103C8T6单片机作为系统主控,最小系统电路作为整个方案的核心部分;
  2. 利用DHT11传感器实现温湿度检测,通过单总线协议将其数据脚与单片机的GPIO引脚连接;
  3. 采用MQ-2传感器进行烟雾浓度检测,将其模拟信号输出端接入单片机的模拟输入引脚;
  4. 配置RC522刷卡模块进行刷卡检测,模块通过SPI接口与主控单片机进行数据通信;
  5. 采用4*4矩阵键盘用于密码输入,4行4列分别由单片机GPIO口独立控制;
  6. 通过光电开关完成人体检测,模块的数据输出直接连接至单片机的GPIO接口;
  7. 使用EG8542电流传感器检测回路电流强度,模拟输出端与单片机ADC接口相连;
  8. 通过ESP8266-01S无线模块实现数据上传,模块通过UART串口方式与单片机通信;
  9. 利用继电器模块进行门锁和温湿度调节设备的控制,继电器控制端接入单片机GPIO口;

10.采用有源蜂鸣器进行报警,使用NPN三极管作为驱动器件与单片机连接。

在这里插入图片描述

在这里插入图片描述

三.程序设计

#include “sys.h”
#include “delay.h”
#include “adc.h”
#include “math.h”
#include “key.h”
#include “OLED_I2C.h”
#include “Beep_Led_Relay.h”
#include “Control_Report_To_Police.h”

int main(void)
{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init();	    	 //延时函数初始化	
Beep_init();					  //PC15
Beep=0;
TIM4_Init(300,7200);

OLED_Init();            //PB6 PB7  OLED初始化
 
E18_D80_Init();					//PA10
Relay_init();					  //PA11  PA9
 
KEY1_Init();            //PB0 PB5 PB8 PB9 PB12 PB13 PB14 PB15
while(DHT11_Init()){}   //PA12

//*1–SDA_CS <----->PA4
//*2–SCK <----->PA5
//*3–MOSI <----->PA7
//*4–MISO <----->PA6
//*5–悬空
//*6–GND <----->GND
//*7–RST <----->PB1
//*8–VCC <----->VCC
RC5222_GPIO_Init_analog_Spi();

Adc_Init1();       		 	//PA0  MQ-2    烟雾
Adc_Init2();       		 	//PA1  电流

ALi_ESP8266_GPIO_Init();    //PA2  PA3 PA8
MQTT_Buff_Init();

AliIoT_Parameter_Init();

OLED_CLS();              //OLED清屏
OLED_ShowCN(32,2,0);			
OLED_ShowCN(32+16,2,1);
OLED_ShowCN(32+32,2,2);
OLED_ShowCN(32+32+16,2,3);
OLED_ShowCN(40,5,4);
OLED_ShowCN(64,5,5);
delay_ms(1000);
OLED_CLS();

while(1)
{
  OLED_Display_Cotrol(); //显示控制函数
}	 

}

四.资料内容

在这里插入图片描述

24-32-102

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐