嵌入式毕设分享:基于STM32的火灾监控与可视化系统(包含源码、硬件和论文)

文章目录

  • 0 前言
  • 1 主要功能
  • 2 硬件设计(原理图)
  • 3 核心软件设计
  • 4 实现效果
  • 5 最后

  • 0 前言

    🔥
    这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

    为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

    🚩 毕业设计 stm32的火灾监控与可视化系统(源码+硬件+论文)

    🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分
  • 🧿 项目分享:见文末!

    实物演示效果

    毕业设计 stm32的火灾监控与可视化系统 – 单片机 嵌入式 物联网

    1 主要功能

    本系统采用的是stm32芯片来作为系统处理器,stm32处理器对烟雾浓度、温度等火警信息进行采集时,选择的火警探测器型号为数字型,利用HL_340总线将其与处理器串口相连来实现预期目的。当检测到火灾发生时,通过串口连接的 wifi/NBIOT模块将数据发送到远程客户端,远程客户端接收到数据后,根据不同的设置来执行不同的操作。

    2 硬件设计(原理图)

    3 核心软件设计

    系统整体结构

    火灾监控报警系统的构架采用单片机的形式。报警器内含灰尘传感器、烟雾(空气质量)传感器,由烟雾传感器发出模拟信号,经由放大模块进行放大后,通过AD转换器完成信号转换,最后由单片机接收转换后的数字信号[18]。通过零点补偿、标定运算等处理后,即可将接收的数字信号显示到液晶模块上,之后再经由串行口传送到上位机。同时在单片机内与不同的预订值相比较达到哪个等级就启动哪个等级的延时声光报警。

    本系统的控制核心为STM32单片机,为了实现系统各项功能,又配备了其他电路,如状态显示、信号采集、按键输入等。在报警值的设定上,本系统引入了巡检方式,其发出的声信号、光有所不同。在单片机的选择上,本系统所选的STM32单片机具有诸多优点,如功耗低、精度高等,既能确保报警器的可靠性与精确性,而且也可降低报警器的整体体积,让系统开发所需成本得到有效降低。
    以下是本系统的整体结构框架示意图,如图

    主程序流程

    系统总体方案采用单片机构架实现烟雾浓度采集、数据传送通信、人机交互等功能。其工作流程大致可以分为以下几步:
    (1)在系统正式工作前,首先要预热传感器,这是因为所选的MQ-2型传感器在长时间不工作的情况下,如果刚通电则无法正常工作,也就是无法对烟雾信息进行正常采集,所以要事先进行预热。只有在完成程序初始化操作后,才可让系统处于监管状态[19]。
    (2)下位机数据采集,烟雾浓度采集系统的特点:此系统通过烟雾传感器完成对烟雾浓度的采集,将烟雾信号转化为电信号。
    (3)生产现场的各种物理量经过传感器变为电信号,这些电信号往往比较小,要想更准确的对火灾是否发生进行判断,要将其放大。所以要将烟雾传感器的电信号通过信号调理电路和采样保持器进行调整,接着让AD转换器对电信号进行模数转换等处理。
    (4)烟雾浓度信息经过stm32单片机内部分析处理后,判断电压是否超过程序设计的阈值,再综合上灰尘传感器的判断,来判断系统是否启动报警。判断完成后单片机通过WIFI模块的设置跟上位机进行数据通信。
    系统主程序流程图如图

    篇幅有限,不过多复述详细设计细节,详细的设计分享在论文中。。。

    关键代码

    主函数中初始化了串口1、串口2、SPI2、液晶屏、IED灯引脚及按键引脚、烟雾报警器,PM2.5的ADC功能引脚及ADC功能初始化,然后直接进入WIFI模块配置的过程,将WIFI配置为AP模式后,开始跟上位机进行通讯。
     int main(void)
     { 
    	delay_init();	    	                             //延时函数初始化
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   //设置NVIC中断分组
    	uart_init(115200);	 	                         //串口初始化为115200
    	USART2_Init(115200);                   //初始化串口2波特率为115200
    	SPI2_Init();		                                //初始化SPI
    	LCD_Init();				                         //初始化液晶
    	LED_Init();         	                         //LED初始化 
    	KEY_Init();				                         //按键初始化  													    
    	#if (CODE_TYPE==2)
    	DHT11_GPIO_Config();
    	 Adc_Init_Light();
    	 Adc_Init_Soil();
    	#elif(CODE_TYPE==3)
    	 Adc_Init_Fire();
    	 //Adc_Init_MQ25();
    	 Adc_Init_MQ135();
    	 Adc_Init_PM25();
    	#endif   
    	  			                              //初始化空气质量检测传感器
     	mem_init();				                       //初始化内存池  
    	Lcd_Clear(WHITE);	 
    	LCD_ShowString(5,20,128,16,16,"System Success!");
    	delay_ms(1500);	
    	Lcd_Clear(WHITE);//清屏       
    	atk_8266_test();		                          //进入ATK_ESP8266测试
    }
    
    WIFI模块的连接
    	WIFI模块通过单片机串口2的引脚PA2和PA3来连接,首先初始化串口2,然后通过AT命令,将WIFI模块设置工作在AP模式,且作为服务器,服务器的端口号为5000,上位机首先连接次WIFI的热点,然后连上WIFI的服务器,此时单片机可以将采集的火情及毒气浓度值及PM2.5 的值发送给上位机,上位机也可以设置单片机的手动或自动工作的模式。也可以远程让单片机发出报警。
    
    //连接端口号:8086
    const u8* portnum="5000";		 
    
    //WIFI   STA模式 ,设置要去连接的路由器无线参数
    const u8* wifista_ssid="ALIENTEK";			//路由器SSID号
    const u8* wifista_encryption="wpawpa2_aes";	//wpa/wpa2 aes加密方式
    const u8* wifista_password="12345678"; 	//连接密码
    
    //WIFI   AP模式 模块对外的无线参数
    #if (CODE_TYPE==2)
    const u8* wifiap_ssid="DanChenBS_Soil";			
    #elif (CODE_TYPE==3)
    const u8* wifiap_ssid="DanChenBS_Fire";			//对外SSID号
    #else
    const u8* wifiap_ssid="DanChenBS_FC";			
    #endif
    const u8* wifiap_encryption="wpawpa2_aes";	//wpa/wpa2 aes加密方式
    const u8* wifiap_password="12345678"; 		//连接密码
    
    自动报警
    当上位机与下位机连接成功过后,上位机的模式切换到自动报警模式以后,下位机会把单片机所处环境信息实时传给上位机程序并显示,当数据远远超过所设置阈值时,就进行报警。
        def manual_close(self):
            send_data = '###AUTO'
            self.gui.var1.set('已切换到自动模式')
            i = 15
            while(i > 0): 
                tcp_client_socket.send(send_data.encode("gbk"))
                data_len = len(prase_data)
                if( data_len > 0 and data_len < 10):
                    break
                i -= 1
                time.sleep(0.1)
        def Add_open(self):
            send_data = '###OPEN'
            self.gui.var2.set('开始报警')
            i = 15
            while(i > 0): 
                tcp_client_socket.send(send_data.encode("gbk"))
                data_len = len(prase_data)
                if( data_len > 0 and data_len < 10):
                    
                    break
                i -= 1
                time.sleep(0.1)
        def Add_close(self):
            send_data = '###CLOSE'
            self.gui.var2.set('停止报警')
            i = 15
            while(i > 0): 
                tcp_client_socket.send(send_data.encode("gbk"))
                data_len = len(prase_data)
                if( data_len > 0 and data_len < 10):
                    
                    break
                i -= 1
                time.sleep(0.1)
    

    4 实现效果


    上位机

    实现效果视频:

    毕业设计 stm32的火灾监控与可视化系统 – 单片机 嵌入式 物联网

    5 最后

    包含内容


    详细设计论文

    🧿 项目分享:见文末!

    作者:Mdc_stdio

    物联沃分享整理
    物联沃-IOTWORD物联网 » 嵌入式毕设分享:基于STM32的火灾监控与可视化系统(包含源码、硬件和论文)

    发表评论