一.系统概述
1. 核心控制器:使用STM32单片机作为主控制器,负责系统整体逻辑控制和数据处理。
2. 传感器数据采集:系统集成温湿度传感器、噪音传感器、粉尘传感器和火焰传感器,实时采集相关环境参数数据。数据可以通过显示屏实时显示,并且可以通过SD卡进行数据的存储。
3. 视频监控:系统配备摄像头,可以对周围环境进行实时拍摄。采集到的数据信息和视频信息通过无线方式上传到APP端进行远程监控和存储。
4. 报警功能:当检测到火焰时,系统触发蜂鸣器报警和控制消防喷头启动。温湿度、粉尘浓度、噪音强度超过预设阈值时,系统可以通过APP进行远程报警。
5. 模块集成与控制:系统包括语音模块、传感器数据采集模块和蓝牙模块。支持自动模式和手动模式的切换,自动模式下传感器开始检测数据,根据环境参数控制门窗的开合。通过手机发送字符"3"切换到自动模式,发送字符"4"切换到手动模式。手动模式下,可以使用语音识别模块或手机蓝牙控制门窗开关,发送字符"1"控制门窗打开,发送字符"2"控制门窗关闭。
二.电路设计
电路图采用Altium Designer进行设计:
1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心;
2. 通过DHT11进行温湿度检测,并通过one-wire总线与单片机的GPIO脚进行连接;
3. 使用KY-037声音传感器进行声音检测,模块的模拟输出脚与单片机的模拟输入脚进行连接;
4. 使用红外火焰传感器进行明火检测,该模块输出数字信号与单片机的GPIO口进行连接;
5. 通过GP2Y1010AU0F进行粉尘颗粒检测,并通过模块的模拟输出脚与单片机的ADC相接;
6. 使用ESP32-CAM进行摄像检测,模块通过UART串口与单片机进行通信;
7. 通过0.96寸的OLED12864进行数据显示,采用IIC总线的形式与单片机进行通信;
8. 通过ESP8266-01S将检测到数据上传到上位机,通过UART串口与单片机进行通信;
9. 使用蜂鸣器进行报警,蜂鸣器采用的有源蜂鸣器,使用NPN三极管进行蜂鸣器进行驱动。
三.程序设计
#include "delay.h"
#include "sys.h"
#include "adc.h"
#include "timer.h"
#include "usart.h"
#include "dma.h"
#include "mmc_sd.h"
#include "malloc.h"
#include "exfuns.h"
#include "fattester.h"
#include "ff.h"
#include "spi.h"
#include "Control_Report_To_Police.h"
int main(void)
{
FIL file;
uint8_t res=0;
UINT Bw;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
Usart1_Init(9600);
TIM4_Init(300,7200);
OLED_Init(); //OLED初始化
OLED_CLS();
Beep_init();
KEY_Init();
Adc2_Init();
Adc_Init();
SPI1_Init(); //初始化SPI
while(DHT11_Init()){}
mem_init(); //初始化内部内存池
while(SD_Initialize())//检测不到SD卡
{}
res=SD_GetSectorCount();
exfuns_init();
res=f_mount(fs[0],"0:",1);
res = f_mkdir("data");
ALi_ESP8266_GPIO_Init();
MQTT_Buff_Init();
AliIoT_Parameter_Init();
OLED_ShowCN(0,0,7);
OLED_ShowCN(0+16,0,8);
OLED_ShowCN(96,0,13);
OLED_ShowCN(96+16,0,14);
OLED_ShowCN(0,2,9);
OLED_ShowCN(16,2,10);
OLED_ShowCN(0,4,15);
OLED_ShowCN(16,4,16);
OLED_ShowCN(0,6,11);
OLED_ShowCN(16,6,12);
while(1)
{
OLED_Display_Cotrol();
}
}