基于单片机的家庭安防系统的设计和实现_第1页
基于单片机的家庭安防系统的设计和实现_第2页
基于单片机的家庭安防系统的设计和实现_第3页
基于单片机的家庭安防系统的设计和实现_第4页
基于单片机的家庭安防系统的设计和实现_第5页
已阅读5页,还剩41页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引言1.1研究背景随着社会经济的高速发展和科技水平的持续提升,传统的居住环境逐渐显现出很多安全隐患。不过传统的家庭安防系统难以符合当下人们的需求,所以构建一套灵活可靠的安防系统,对保障小区及家庭安全而言尤为迫切[1]。优质的家庭安防系统具备信息数据处理及时的特性,依靠高效率、高精度且操作性强的技术,在当前社会需求中展现出了广阔的发展空间。随着人们对生活质量的要求不断提升,功能强大、布局灵活、低能耗且操作便捷的家庭安防系统成为人们的普遍期待。优质的家庭安防系统可以给家庭带来全新的生活体验,也可以帮助家庭解决一些安全问题,所以实施优质的家庭安防系统是非常有必要的[2]。世界上第一个智能家居系统在1984年出现后,人们逐渐了解到智能家居能给人们带来很多便利。在国外,智能家居系统的发展主要是以发达国家为主体,这些国家在智能家居有着重大的投入,在美国、日本和德国等国家,它们在智能家居上的使用越来越多,这代表智能家居已进入人们的生活,且能够给人们的生活提供很大的帮助,现在这些国家投入的资金基本趋于稳定,这是因为国外发展智能家居这一方面的投入早,它们这一方面的技术相比较国内更加成熟[3]。受历史因素影响,中国在早期阶段缺乏充足的技术积累与资金支持,难以推进智能家居安防计划。不过,随着国家的发展进步,已经在工业控制、仪器仪表、家用电器等领域实现了更快速的发展[4]。随着智能家居产品的发展,家居安防系统的呼声越来越高,但是传统的家居安防系统硬件的成本高,有些技术也达不到要求,所以国内传统的家居安防产品主要应用在生活水平较高的家庭中,不能够推广到普通的家庭当中[5]。1.2国内外研究现状国内外在家庭安防系统的研究方面都取得了显著进展,但仍存在一定的差异。国外的研究起步较早,技术相对成熟,已经形成了较为完善的家庭安防系统方案。例如,欧美国家的家庭安防系统普遍采用无线通信技术,如ZigBee、Z-Wave等,实现了设备之间的低功耗、高可靠性的通信[6-8]。这些系统不仅能够实现基本的安防功能,如入侵检测、火灾报警等,还与智能家居系统深度融合,通过手机应用程序或智能家居平台实现远程监控和控制。此外,国外的研究还注重系统的智能化和个性化,利用人工智能和大数据技术对家庭环境进行分析,自动调整安防策略,以适应不同用户的需求[9-11]。相比之下,国内的研究虽然起步比国外晚,但随着科技水平的不断提高,智能家庭安防系统的发展速度也越来越快。近年来,随着物联网技术的普及和智能家居市场的兴起,我国经济的快速发展和全面小康社会的建成,人们对生活品质的要求不断提高,在城镇化进程加快的背景下,小区数量不断增加,家庭安全面临诸多挑战,如火灾、煤气泄漏、入室盗窃等意外事件时有发生[12]。此外,家庭成员的疏忽也可能导致安全隐患,例如忘记关闭天然气阀门。传统的安防措施如防盗窗、木门等已难以满足现代家庭对安全性的需求。与此同时,智能化技术的快速发展为家庭安防提供了新的解决方案。单片机作为一种高性能、低功耗的微控制器,广泛应用于各类智能控制系统中[13]。基于单片机的家庭安防系统能够通过多种传感器实时监测家庭环境,如烟雾、可燃气体、温湿度等,并在检测到异常时及时发出警报。这种智能化的安防系统不仅能够有效弥补传统安防措施的不足,还能为用户提供更加便捷、高效的安全保障[14-15]。国内学者和企业对基于单片机的家庭安防系统进行了大量研究和开发。国内的研究主要集中在系统功能的集成和优化上,通过结合多种传感器实现对家庭环境的全面监测,并利用单片机的低功耗、高性能特点,开发出适合家庭使用的安防系统。同时,国内研究还注重系统的经济性和实用性,通过降低成本和简化操作流程,使家庭安防系统更加普及。此外,国内的研究也在积极探索与智能家居系统的融合,通过与智能家电、智能门锁等设备的联动,提升家庭生活的便利性和安全性[16-18]。1.3市场需求在国家政策的大力扶持下,智能家庭安防的市场需求稳步增长,行业的发展形势也越来越好。在这背景下,家庭安防系统迎来了蓬勃的发展契机。在现代社会生活中,房屋内暗藏着如火灾、盗窃、燃气泄漏等很多安全隐患,一旦发生,不仅可能造成家庭悲剧,还会造成大量的财产损失。通过对不同家庭的调研,用户对家庭安防系统的功能需求主要集中在以下几个方面[19-20]:(1)可以播报当日天气。(2)当检测到有毒气体泄漏时,系统会通知室内人员及其他家庭成员。(3)当家中无人且遭遇非法人员入侵时,系统将自动触发警报。(4)家中环境变化数据、空气质量数据等均可实时传输至小区物业或保安值班室。通过功能需求分析,系统需要做到以下几点功能:(1)当监测到非法闯入等情况时,系统将自动发送报警信息。(2)可以远程发送报警消息。(3)系统需要易于操作和使用,数据的准确性要高。1.4设计任务与要求本文基于STM32F103C8T6单片机,设计并实现一套完整的家庭安防系统。系统集成DHT11温湿度传感器、DS1302时钟模块、ESP8266WIFI模块、MQ-7一氧化碳传感器、OLED显示屏、警报模块、火焰检测模块及门磁模块,可对家庭安防信息实施实时监测。系统借助MQ-7一氧化碳传感器、DHT11温湿度传感器及火焰传感器采集室内环境数据,传输到STM32主控制芯片进行分析处理,并在OLED显示屏上实时呈现。当家庭环境出现异常,系统将迅速响应并触发警报机制。以门磁模块为例,当监测到非法闯入行为时,系统即刻发出警报,同时在显示屏上直观显示异常信息。在进入系统前需正确输入用户设置的密码,进入系统后可以通过按键调节温度、湿度、烟雾的阈值,超过则报警并显示在OLED上。该系统可以连接手机APP,连接成功后,APP内会显示实时的温度、湿度及烟雾浓度,若有报警信息,也可以看见哪个模块发出的警报,通过APP设置也可关闭或开启报警开关,关闭后,该模块就不会执行报警操作。2系统硬件部分设计2.1系统框架设计的主要系统芯片为STM32单片机,系统包括火焰检测、温湿度检测、空气质量检测、门磁感应、按键输入、时钟模块、OLED显示、报警装置、WIFI模块及APP操控,具体系统框图如图2.1所示。图2.1系统框架示意图2.2STM32F103C8T6简介本系统采用STM32F103C8T6芯片作为主控制器。STM32F103C8T6是意法半导体(STMicroelectronics)推出的高性能32位微控制器,基于ARMCortex-M3内核架构设计。其主频最高可达72MHz,采用Thumb-2指令集,支持单周期乘法与硬件除法运算,有效提升计算效率。芯片内置64KBFlash程序存储器和20KBSRAM,能充分满足中等规模嵌入式系统的存储需求。硬件层面采用LQFP48封装(7×7mm),供电电压范围2.0–3.6V,典型运行功耗为36mA(72MHz全速模式),具备工业级温度适应性(-40°C至+85°C)。开发支持方面,可通过STM32CubeMX工具快速配置时钟与外设,并生成初始化代码;主流IDE如KeilMDK-ARM、IAREmbeddedWorkbench及STM32CubeIDE均提供完整编译与调试支持。该芯片的局限性主要集中于存储容量,复杂算法或协议栈需结合外部存储或代码优化,但其高性价比与成熟生态使其成为中小型嵌入式系统的典型选择。其模块框图如图2.2所示。图2.2STM32F103C8T6模块框图2.3最小系统的原理图最小系统板电路原理图总览图如图2.3所示。图2.3原理图总览图2.3.1电源电路电源电压由两部分电压(5V和3.3V)组成,其中5V主要给一些外接模块供电,3.3V主要给单片机和LED供电。(1)5V电路系统通常采用普通USB5V(U3)接口作为输入供电方式,同时电路板上配备5V电压插针(P4的5V)。在原理图设计中,当网络号名称一致时,实际电路板上的对应电路即视为连通。因此,插针上的5V电源与USB接口的5V电源在电气连接上是导通的,所以我们也可以用外接5V的电源供电,外接5V输入一般有两根线:电源的正极接5V插针(P4的5V),电源的负极接GND(P4的GND),如图2.4所示。图2.45V电路原理图(2)3.3V电路3.3V电路如图2.5所示,其中3.3V电压是通过USB口的5V电压输入到电源芯片,从而实现5V电压降压到3.3V。C5、C7输入滤波电容在电源接通时,利用电容充放电特性,将从零开始且波动极大的输入电压,转化为纹波较小的直流电;C6、C8输出滤波电容则用于抑制因负载变化导致的电压波动与稳压电路振荡,在稳定输出电压、提升稳压电路稳定性的同时,确保输出电压的稳定。图2.53.3V电路原理图去耦电容应放置在单片机电源引脚附近,其主要功能是滤除杂波以维持单片机电源引脚电压稳定,且需尽量靠近单片机的VDD脚与GND脚,若距离较远,单片机输入电压易受电源波动影响,如图2.6所示。图2.6去耦电容原理图2.3.2LED指示灯电路电路板上设有两个指示灯,D1为红色电源指示灯,只要电路板供电即可常亮;D2为绿色状态指示灯,单片机PC13引脚输出低电平时才会点亮,若PC13引脚周期性输出高低电平,D2则会闪烁。其中,R1和R5为限流电阻,电阻阻值越小,LED灯亮度越高,如图2.7所示。图2.7LED指示灯电路原理图2.3.3复位电路按下SW1会将RESET引脚拉低,产生外部复位信号及复位脉冲,从而使系统完成复位操作,复位电路如图2.8所示。图2.8复位电路原理图2.3.4晶振电路STM32最小系统板的时钟电路全称为晶体振荡电路,是电子设备中用于生成稳定精准频率信号的电路,主要为系统提供精确的时间基准与稳定的时钟信号,晶振电路原理图如图2.9所示。图2.9晶振电路原理图2.3.5调试下载电路(1)调试电路:程序下载调试都需要通过板子上P2进行(如图2.10所示),采用图2.10调试电路原理图SWD接线方式,SWD是一种基于JTAG协议的两线调试接口,由ARM公司提出,用于替代JTAG接口,提高调试效率和降低成本。SWD接口需要两根信号线,分别是:1)SWCLK(SerialWireClock):串行时钟线,提供同步时钟信号;2)SWDIO(SerialWireDataInput/Output):串行数据输入输出线,用于双向数据传输。STLINK/JLINK调试器通过SWD接口与板子连接后,可实现程序下载、单步调试、全速调试,以及查看或修改单片机内部变量和内存等操作。(2)BOOT选择电路单片机上电或复位后,启动方式有三种:1)内部FLASH启动方式2)内部SRAM启动方式3)系统存储器启动方式。单片机一般把BOOT0引脚通过100K电阻下拉到地(如图2.11所示,P1双排插针用短路帽把3,5脚短路),这样就配置成内部FLASH启动方式。用STLINK下载调试的时候,芯片正常运行的时候都是采用内部FLASH启动方式。图2.11BOOT选择电路原理图2.4DHT11温湿度传感器DHT11属于数字式温湿度复合传感器,它的测量范围为温度0~50°C(精度±2°C)、湿度20%~90%RH(精度±5%RH),分辨率分别是1°C和1%RH,采样周期需至少1秒以避免数据漂移。传感器工作电压为3.3~5.5V,典型应用中使用5V供电,DATA引脚需外接4.7~10kΩ上拉电阻至电源。物理封装为4引脚单列直插(实际使用VCC、GND、DATA三引脚),尺寸紧凑(15.5mm×12mm×5.5mm)。通信时,微控制器需先发送起始信号(拉低总线≥18ms后释放),传感器响应后返回40位数据包,包含16位湿度整数、16位温度整数及8位校验和。数据位通过高电平持续时间区分:逻辑"0"对应26~28μs高电平,逻辑"1"对应70μs高电平。校验和为湿度与温度数据末8位之和,校验失败需重新读取。在与微控制器连接时,单总线上需配置上拉电阻(R1),确保单总线在闲置状态下维持高电平。该电阻通过提供上拉电流,避免总线悬空导致的逻辑状态不稳定,保障单总线通信中闲置电平的可靠性,如图2.12所示。图2.12DHT11电路原理图2.5MQ-7一氧化碳传感器MQ-7气体传感器是常用的气体检测元件,核心功能为监测空气中一氧化碳浓度,其工作机制基于半导体气敏元件的电阻变化特性。当可燃气体进入传感器内部,与气敏元件表面敏感材料发生化学反应,促使元件电阻值改变,通过测定电阻变化可推知空气中一氧化碳浓度。该传感器采用二氧化锡(SnO2)作为半导体气敏材料,属于表面离子式N型半导体。当传感器接触一氧化碳气体时,晶粒间界势垒因气体吸附作用改变,进而引起表面导电率变化,借此可感知一氧化碳存在。具体表现为,一氧化碳浓度越高,传感器导电率越大、输出电阻越低,相应输出的模拟信号强度越强。。其电路原理图如图2.13所示。图2.13MQ-7一氧化碳传感器电路原理图2.6DS1302时钟模块DS1302是达拉斯半导体公司推出的实时时钟芯片,可通过简单串行接口与微控制器通信。该芯片具备低功耗、备用电池接口及RAM存储等特性,在需要时间记录的电子设备中应用广泛,其电路原理图如图2.14所示。图2.14DS1302时钟模块电路原理图2.7火焰传感器火焰传感器是一种用于检测火焰或760nm-1100nm波长红外光的器件,具备约60°探测角度,对火焰光谱灵敏度高且可调节,探测距离通常在1m以内(与火焰强度相关)。当环境火焰光谱或光源强度低于设定阈值时,模块数字输出(DO)端口输出高电平;超过阈值时则输出低电平,如图2.15所示。该传感器适用性强,广泛应用于工业自动化、安全监控、消防预警等领域。图2.15火焰传感器电路原理图2.8门磁模块MC-38常闭式门磁开关,作为一种安防监测元件,主要功能为以IO开关形式输入数字信号。在实际应用场景中,MC-38无法独立运作,需与有线主机协同工作,借助有线连接方式,将采集到的信号传输至主机,以便进一步处理与分析。该门磁开关对安装环境有所要求,特别适用于非铁质材质,诸如木制、铝合金制的门或窗,安装方式为表面安装,在安装过程中,需确保门磁的两部分精准对齐,维持合适间距,以保障其性能稳定。在家庭、办公等场所的安防体系里,MC-38发挥着防盗报警的关键作用。当门窗处于关闭状态,门磁开关保持信号导通,系统处于正常监测状态;一旦门窗被非法打开,门磁两部分分离,信号中断,主机即刻接收该异常信号,触发报警机制,诸如发出警报声、推送警示信息等,及时提醒用户或安保人员,防范非法入侵行为,为室内安全保驾护航。2.9有源蜂鸣器蜂鸣器作为一种将音频信号转换为声音信号的发音器件,根据驱动方式可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器内置固定频率的振荡电路,接通电源后即可发出特定音调的声响,其内部集成的多谐振荡器能够产生1.5kHz-2.5kHz的电压信号,以此驱动发声单元工作,如图2.16所示。图2.16蜂鸣器控制原理图2.10OLED显示屏OLED即有机发光二极管,其具备自发光、无需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制作流程较简单等优异特性。该模块有单色或双色可选,单色为蓝色或白色,双色为黄色和蓝色,显示尺寸为0.96英寸,具有高分辨率,总共提供包括两种并行接口方法,且不需要高压,只需直接连接到3.3V即可正常工作。2.11ESP8266模块ESP8266是一款集成WIFI功能与微控制器能力的嵌入式系统级芯片,适用于物联网项目。该芯片支持TCP/IP协议栈,可连接网络,并通过AT命令或高级API与主控设备通信,其低功耗特性使其能够在电池供电下长时间运行,广泛应用于智能家居、智能门锁、无线传感器网络等领域,其原理图如图2.17所示。图2.17ESP8266模块原理图3系统软件部分设计本文采用ARM公司推出的KEIL5(MDK软件)进行开发。在底层库驱动方面,尽管ST公司的STM32CubMx工具可实现便捷开发配置,但其生成的HAL库程序较为复杂,在内存占用上对轻量级应用及低端单片机开发设计不够友好。因此,本文选用标准库开发,借助KEIL5完成程序的开发与调试,并通过ST-LINK实现程序的下载和验证。3.1程序设计在系统程序启动后,首先执行初始化操作,配置GPIO引脚并设置I2C、SPI、UART等通信接口,完成温湿度传感器、天然气传感器、门磁传感器、火焰传感器、WIFI模块及RTC模块的初始化。随后进入密码验证流程,通过矩阵键盘输入,与预设的加密密码进行比对。若密码错误,系统返回至输入密码程序;若验证通过,则进入主控制循环。本系统主程序核心为外设传感器的数据采集与处理:温湿度传感器通过单总线方式向单片机传输数据,单片机程序解析单总线协议获取温湿度值,并经IIC传输协议驱动OLED显示相应信息;MQ-7一氧化碳传感器将室内可燃气体转换为模拟电压,输送至单片机模拟IO口,经AD转换得到数字电压值。同时,从DS1302实时时钟模块同步当前时间。当检测到异常(如一氧化碳气体浓度超标)时,立即启动声光报警器,并通过ESP8266WIFI模块向手机App推送报警信息。传感器数据、系统状态及时间信息通过串口或并行接口传输至显示屏进行实时显示。程序采用模块化设计与状态机调度机制,兼顾实时响应与系统稳定性,图3.1为主程序流程图。图3.1主程序流程图DHT11温湿度传感器采集流程如图3.2所示,当系统启动DHT11温湿度采集流程时,先进行传感器初始化:单片机将连接DHT11的GPIO引脚设为输出模式,发送至少18ms的低电平启动脉冲,之后释放总线并切换为输入模式等待传感器响应。DHT11收到启动信号后,会拉低总线80μs作为应答脉冲,随后再次将总线拉高80μs表示已准备就绪。若单片机未检测到有效的应答脉冲,需重新初始化;若检测成功,则继续执行后续操作。单片机发出扫描命令(触发测量指令),随后发送转换命令,通知DHT11开始温湿度数据采集。传感器内部启动模数转换,此过程需延时约20ms等待转换完成。转换结束后,DHT11再次拉低总线50μs作为数据就绪信号,单片机需检测此应答脉冲。若应答异常,流程终止或重试;若应答正常,则进入数据读取阶段。单片机切换为输入模式,逐位读取DHT11发送的40位数据,其中包括16位湿度整数和小数、16位温度整数和小数以及8位校验和。数据以高低电平的持续时间区分“0”和“1”:26-28μs低电平后接70μs高电平表示“0”,26-28μs低电平后接116μs高电平表示“1”。读取完成后,将40位二进制数据按格式合并,分别提取湿度(前16位)和温度(中间16位)的整数及小数部分,并通过校验和验证数据完整性。若校验失败,需重新采集;若校验成功,最终输出校准后的温湿度数值(如湿度:50%,温度:25C),完成单次采集流程。图3.2DHT11温湿度传感器采集流程图DS1302时钟模块流程如图3.3所示,当系统启动DS1302时钟模块操作时,首先初始化变量,包括定义寄存器地址、分配数据缓冲区以及设置控制标志位。随后通过通信接口向写保护寄存器地址0x8E写入0x00,解除时间寄存器的写入限制。接着拉高RST引脚启动通信,并保持高电平以维持连接状态。写入时间参数时,依次向目标寄存器地址发送写操作指令(地址末位为0),例如秒寄存器0x80,插入微秒级延时后按BCD编码写入时间数据(如0x30表示30秒),随后递增地址至分寄存器0x82重复操作,直至完成月、日、时、分、秒等全部参数的配置。写入结束后拉低RST引脚终止通信。读取数据时重新拉高RST引脚,发送读操作地址(地址末位为1),依次读取各寄存器的BCD编码数据并存入缓冲区,完成所有寄存器读取后转换数据为十进制格式,最终通过自适应屏幕驱动模块动态调整显示布局,确保时间信息(如“12-2020-00-00”)在不同分辨率屏幕上清晰呈现。图3.3DS1302时钟模块流程图MQ-7一氧化碳传感器流程如图3.4所示,当系统启动MQ-7一氧化碳传感器数据采集流程时,首先由单片机配置与传感器连接的GPIO引脚,设定模拟输入通道及通信协议。随后生成时钟信号,用于同步传感器与单片机之间的数据传输。通过控制信号选择需读取的数据通道,并启动模数转换(ADC)过程。单片机持续检测ADC转换完成标志位,若未完成,则循环等待;若转换完成,则开始读取数据。数据读取分为两步:首先从ADC模块读取完整的字节数据,随后逐位解析数据位(例如通过移位操作提取每一位的数值)。完成数据读取后,根据ADC的分辨率(如10位或12位)和参考电压,将数字量转换为实际电压值(例如数字量512对应电压2.5V)。此电压值与MQ-7传感器的特性曲线匹配,通过预存的校准参数(如灵敏度系数、线性拟合公式)转换为当前一氧化碳气体浓度。最终浓度值通过串口发送至显示屏或上位机软件实时显示,同时可触发阈值比较逻辑:若浓度超过预设安全范围,系统启动声光报警或通过WIFI模块推送告警信息。采集流程结束后,程序返回初始状态,等待下一次定时或事件触发的采集任务。图3.4MQ-7一氧化碳传感器流程图当系统启动火焰传感器检测流程时,单片机首先配置与传感器连接的GPIO引脚:将对应引脚设置为输入模式以直接读取电平信号。随后,单片机直接监测引脚电平状态(低电平表示火焰存在)。若检测到有效信号(如低电平),系统判定存在火焰,立即触发报警并通过显示屏显示“火灾警告”;若无有效信号,则维持正常监测状态。完成判断后,程序返回主循环,继续周期性执行检测任务,如图3.5所示。图3.5火焰传感器程序流程图当系统启动门磁检测流程时,单片机持续监测门磁传感器状态。当门闭合时,传感器输出低电平;若门被打开,传感器电平状态切换。单片机通过GPIO输入模式实时读取该电平信号。检测到电平变化后,系统首先进行消抖处理并再次读取状态,确认电平变化稳定。若两次检测均判定为门已打开,则触发报警函数,执行报警(如蜂鸣器鸣响)、通过Wi-Fi模块向手机App推送“防盗警告”告警信息。若未检测到有效开门信号,系统维持正常监测状态,不触发任何动作。完成报警或状态确认后,程序返回主循环,继续周期性检测门磁状态,形成持续监控机制,如图3.6所示。图3.6门磁模块流程图蜂鸣器报警程序流程如图3.7所示,当系统启动蜂鸣器报警流程时,单片机持续监测来自其他传感器(如火焰传感器、一氧化碳传感器、门磁模块或温湿度传感器)的报警触发信号。当检测到满足预设报警条件(如火焰触发、门磁异常开启、温湿度超过阈值或烟雾浓度超标)时,系统立即进入报警处理逻辑。首先进行信号确认:通过短时延时重新检测触发信号,排除误触发。若确认报警有效,单片机控制与蜂图3.7蜂鸣器报警程序流程图鸣器连接的GPIO引脚输出高电平,驱动蜂鸣器鸣响。报警持续时长可通过定时器设定(如连续鸣响10秒后间歇5秒循环),同时联动其他模块(如发送报警信息至手机App及显示屏)。完成报警动作后,程序返回主循环,继续监测报警条件状态。若报警条件解除(如火焰熄灭、门关闭、温湿度低于阈值或气体浓度恢复正常),蜂鸣器停止鸣响,系统复位报警状态。OLED程序流程如图3.8所示,当系统启动OLED显示流程时,单片机首先配置与OLED模块连接的GPIO引脚为开漏输出模式,并启用I2C通信接口。接着初始图3.8OLED程序流程图化I2C总线,发送起始信号并检测从机(OLED)是否响应。若通信正常,单片机向OLED发送控制命令,设置寄存器地址(如显存起始地址0x00),随后通过I2C协议逐字节写入显示数据(如字符编码、图形点阵或自定义图标)。数据写入过程中,单片机会根据OLED的驱动芯片(如SSD1306)要求,将数据分为命令模式和数据模式:先发送控制字节(0x00)配置显示参数(如对比度、扫描方向),再发送数据字节(0x40)填充显存内容。每次数据传输后,等待I2C总线应答信号,确保数据正确接收。完成所有数据发送后,单片机发送停止信号,OLED根据显存内容刷新屏幕,实时显示当前信息(如温湿度数值、烟雾浓度、时间或报警状态)。系统启动ESP8266模块通信流程时,STM32先配置与模块相连的串口引脚,并初始化串口通信参数,接着通过AT指令配置ESP8266工作模式:若设置为STA模式(连接现有网络),则发送“AT+CWMODE=1”指令,再发送“AT+CWJAP=”指令连接指定路由器。完成模式配置后,系统持续监测串口数据接收状态(如传感器数据或报警信息),通过AT指令发送“AT+CIPSTART=”建立TCP连接,再发送“AT+CIPSEND=”指令指定数据长度及内容,待模块返回“SENDOK”确认后终止发送流程,完成数据发送,如图3.9所示。图3.9ESP8266模块流程图3.2APP操作界面本文设计了与系统配套的APP,可以实现与手机连接,APP界面如图3.10所示,在APP中可以实时查看家庭内安防信息,包括温度、湿度和烟雾值及异常信息,同时也可通过APP操作关闭或打开任意模块报警开关。图3.10APP界面4实物调试4.1系统开机功能调试系统整体硬件电路如图4.1所示,从图中可以看出系统整体硬件的布局的框架,系统通过电源线与硬件电路连接,通电后,按压PCB板上蓝色按钮实现系统开机,开机后,如系统无异常,OLED显示屏上显示“智能安防系统”四个字,随后进入输入密码阶段,输入设置的密码后,进入系统,系统通过液晶屏直观显示温度数值、湿度数值及气体浓度百分比,本系统开机功能调试成功。图4.1系统整体硬件电路图4.2温湿度传感器测试对于温湿度功能测试,本文首先通过湿巾轻蘸DHT11温湿度传感器模拟湿度变化,如图4.2所示,可以看见OLED显示屏上湿度逐渐升高到68超过设置的阈值65,此时蜂鸣器进行报警。图4.2湿度测试图随后,通过手指轻捏DHT11温湿度传感器模拟温度变化,如图4.3所示,可以看见OLED显示屏上温度慢慢升至21摄氏度,此时温度报警阈值为20摄氏度,蜂鸣器报警,DHT11温湿度传感器测试成功。图4.3温度测试图4.3烟雾传感器测试对于烟雾传感器测试,本文通过打火机漏气模拟煤气泄漏,将正在漏气的打火机靠近烟雾传感器,如图4.4所示,可以看见OLED显示屏上烟雾浓度很快升高,直至超过阈值,此时启动蜂鸣器进行烟雾报警,同时OLED显示屏上显示“煤气警告”,烟雾传感器测试成功。图4.4烟雾传感器报警图4.4火焰传感器测试对于火焰传感器测试,本文通过打火机点火模拟失火,让火焰靠近火焰传感器,如图4.5所示,可以发现火焰传感器能够立即检测到有火焰,蜂鸣器报警,同时OLED显示屏上显示“火灾警告”,火焰传感器测试成功。图4.5火焰传感器报警图4.5门磁模块测试测试门磁模块是否能正常工作,可以通过开合门磁模块模拟非法开门,如图4.6所示,当门磁模块被手动打开,蜂鸣器报警,同时OLED显示屏上显示“防盗警告”,当门磁模块被手动合上,系统恢复正常,门磁模块测试成功。图4.6门磁模块报警图4.6调节阈值及报警开关若用户需要调节阈值或各个模块警报开关,可以点击按键1,进入温度、湿度、烟雾阈值调节模式,按键2对应增加数值,按键3对应减少数值,如图4.7所示。图4.7基础功能设置图4.7APP测试此系统配备APP,在打开APP前,手机WIFI需与ESP8266模块连接,在连接WIFI界面找到名称为“ESP826601”的WIFI。若密码错误或未连接成功,此时不能在APP内执行操作和获取实时家庭信息;若输入正确密码后,显示WIFI已连接,打开APP,点击APP内“连接”按钮,等待一会,APP内红色字样变为“连接成功”“显示可用”,此时与系统连接成功,在APP上可进行以下操作:(1)断开连接(点击“断开”按钮,显示提示页面“用户使连接断开”)(2)打开或关闭各个模块报警(若想关闭湿度报警开关,点击“湿度报警打开”按钮,变为“湿度报警关闭”,此时若湿度超过阈值,蜂鸣器不报警,也不显示异常信息)在APP中,可以实时查看家庭安防信息,包括温度、湿度、烟雾值,若任一模块执行报警,如门非法打开,APP中绿色“防盗正常”会变为红色“防盗报警”,如图4.8所示。图4.8APP报警图5总结本设计以STM32单片机为核心控制器,结合多传感器模块与通信单元,构建了一套功能完整的家庭安防系统。系统通过温湿度传感器(DHT11)实时监测环境温湿度,利用ADC采集MQ-7一氧化碳传感器的模拟信号并转换为气体浓度值。火焰传感器采用数字电平检测机制,通过消抖算法排除瞬时干扰,确保火焰识别的准确性;门磁模块通过GPIO电平变化监测门窗状态,触发异常时联动蜂鸣器报警并通过Wi-Fi模块推送告警信息。数据显示方面,基于I2C协议的OLED屏幕动态刷新传感器数据、时间及系统状态,界面布局适配屏幕分辨率以提升可读性。通信模块采用ESP8266WIFI,支持AP与STA双模式,通过AT指令配置TCP连接,实现与手机App的数据交互及远程报警功能。在硬件设计上,各传感器与单片机接口遵循标准化协议(如I2C、SPI、UART),电源电路加入滤波电容以降低噪声干扰,信号线布局避免交叉干扰。软件层面采用模块化编程,通过状态机调度多任务,确保实时响应能力;数据采集任务嵌入低功耗模式,在无异常状态下通过定时器中断唤醒,降低整体能耗。针对传感器特性,系统设计了动态校准机制:例如MQ-7通过基准电压修正温漂误差,火焰传感器通过阈值自适应调整适应不同环境光照条件。实际测试中,发现防风打火机火焰因光谱特性与传感器灵敏度不匹配可能导致漏报,通过更换普通火源并结合软件滤波优化检测逻辑,最终实现稳定触发。系统优势在于功能集成度高、响应速度快,且具备良好的扩展性。然而,本系统仍有部分可以改进的地方。比如现在的报警声音比较单一,如果能根据不同的危险类型(火灾、入侵、气体泄漏)设置不同的音效,用户体验会更好。另外,手机App的功能还比较基础,未来可以增加历史数据查询等功能。综上,本系统在家庭安防场景中具备实用价值,通过后续迭代优化,可在可靠性、能效比及用户体验方面达到更高水平。

参考文献[1]张向阳.家庭智能安防系统设计与实现[D].西安科技大学,2017.[2]杜鑫,陈洁,郭彦文,等.单片机和NB-IOT的智能家居火灾检测报警系统[J].福建电脑,2024,40(08):95-98.[3]张心怡,杨帆.海尔集团财务共享服务中心建设研究[J].商场现代化,2025,(08):180-182.[4]孙锟,李宜莎.基于单片机的电子技术应用[J].电子技术,2025,54(02):204-205.[5]臧殿红.基于ESP32的智能家居安防系统[J].物联网技术,2025,15(02):144-146+150.[6]JiongnanL,EngaoP.FacegesturerecognitionmoduleoptimizationofintelligentsecuritysystembasedonRaspberryPi[C]//BeijingInstituteofTechnologyZhuhai(China),2023:[7]HaoH,DaiF.Designofsmarthomesecuritysystembasedon52MCU[J].JournalofAdvancesinArtificialLifeRobotics,2021,1(4):199-203.[8]MarieBFT,HanD,AnB.Microcontrollerdesignforsecuritysystem:implementationofamicrocontrollerbasedonSTM32F103microchip.[J].IJES,2019,11(5):541-550.[9]王可,邹佳鸥,刘佳.基于STM32的家庭安防报警设计[J].电子制作,2024,32(09):94-97.DOI:10.16589/11-3571/tn.2024.09.026.[10]YalingH,HaonanL.ResearchandDevelopmentofSmartHomeSecuritySystemBasedonWechatControl[J].JournalofPhysics:ConferenceSeries,2021,1915(2):[11]CaiX,HuA,LiuR.DesignofIntelligentInductiveSecuritySystemBasedonWirelessSensorNetwork[J].EnergyProcedia,2011,12718-725.[12]项楠,张燕.智能安全发展策略下新质生产力驱动的创新模式[J].中国科技信息,2024,(18):136-138.[13]余浪,秦丽,陆龙福.基于STM32单片机智能安全管理系统的探究[J].上海轻工业,2025,(01):126-128.[14]江治国.物联网与多传感器融合的智能家居安防系统[J].太原学院学报(自然科学版),2024,42(03):20-26.[15]李双平.人工智能产业发展及应用场景研究[J].数字通信世界,2024,(04):149-151.[16]阮晓东.智慧家居关注客户体验[J].新经济导刊,2014,(10):70-73.[17]孙威.基于物联网技术的智能家居控制系统研究[D].吉林建筑大学,2021.[18]赵晖.基于无线传输的家居安防系统设计[D].武汉轻工大学,2022.[19]施永康,刘涛,刘晨.基于GSM短信的家庭防盗报警系统设计[J].无线互联科技,2024,21(18):73-75.[20]覃海蓬,职燕.智能家居安防系统设计[J].电子制作,2025,33(01):62-65.

附录附录1基于STM32的智能家庭安防系统原理图附录2基于STM32的智能家庭安防系统PCB文件附录3智能家庭安防系统主要程序#include"stm32f10x.h"//需要包含的头文件#include"main.h"//需要包含的头文件#include"delay.h"//需要包含的头文件#include"usart1.h"//需要包含的头文件#include"timer2.h"//需要包含的头文件#include"dhtll.h"#include"oled.h"#include"rtc.h"#include"adc.h"#include"key.h"//需要包含的头文件intmain(void){ SystemInit();//将主频调整到72M NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); Delay_Init();//延时功能初始化Delay_Ms(500); OLED_Init();//oled初始化 OLED_Clear();while(DHT11_Init()) {Delay_Ms(500);}//检测DS18B20是否纯在ds1302_init(); buzz_init(); ir_init(); mq2_init(); butt_init();Adc_Init();KEY_Init(); Usart2_Init(115200);//串口1功能初始化,波特率9600 TIM2_Init();Isr_Init(); wifiinit(); showbegin();ds1302_write_time(); ds1302_read_time(); while(1)//主循环 { setzhi();//设置报警值if(keyflag==0){ DHT11_Read_Data(&temp,&humi); YWADC=(Get_Adc_Average(9,10));//获取计算后的带小数的实际电压值 YWADC=(YWADC-600); if(YWADC<6)YWADC=0; YWADC=YWADC/25; if(tempKG==11){if(temp>settemp){WD=11;GPIO_SetBits(GPIOA,GPIO_Pin_7);}} if(humiKG==11){if(humi>sethumi){SD=11;GPIO_SetBits(GPIOA,GPIO_Pin_7);}}if(temp<=settemp||(tempKG==22)){WD=22;} if(humi<=sethumi||(humiKG==22)){SD=22;} if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)!=0&&GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0&& YWADC<=setyw&& temp<=settemp&&humi<=sethumi ){GPIO_ResetBits(GPIOA,GPIO_Pin_7);} if(((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)==0)&&(hyKG==11))||((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)!=0)&&(mcKG==11))|| ((YWADC>setyw)&&(ywKG==11)) ) { jingbao=1; GPIO_SetBits(GPIOA,GPIO_Pin_7); if((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)==0)&&(hyKG==11))//火灾警报 { HY=11; OLED_Clear(); OLED_ShowCHinese(80,4,14);//报警 OLED_ShowCHinese(96,4,15);//报警 OLED_ShowCHinese(80,2,22);//火灾 OLED_ShowCHinese(96,2,23);//火灾 showhuo();//显示火灾图片 } if((YWADC>setyw)&&(ywKG==11))//烟雾报警 { YW=11; OLED_Clear(); OLED_ShowCHinese(80,4,14); OLED_ShowCHinese(96,4,15); OLED_ShowCHinese(80,2,17); OLED_ShowCHinese(96,2,18);// showmei();}if((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)!=0)&&(mcKG==11))//防盗警报 { MC=11; OLED_Clear(); OLED_ShowCHinese(80,4,14); OLED_ShowCHinese(96,4,15); OLED_ShowCHinese(80,2,3); OLED_ShowCHinese(96,2,21);// showman(); } } else { MC=22;YW=22;HY=22; if(jingbao==1) { OLED_Clear(); jingbao=0; } OLED_ShowCHinese(0,2,9);//温度 OLED_ShowCHinese(16,2,10); OLED_ShowChar(32,2,':'); OLED_ShowNum(40,2,temp,2,16); OLED_ShowChar(56,2,'C'); OLED_ShowCHinese(0,4,11);//湿度 OLED_ShowCHinese(16,4,10); OLED_ShowChar(32,4,':'); OLED_ShowNum(40,4,humi,2,16); OLED_ShowChar(56,4,'%'); OLED_ShowCHinese(0,6,12);//烟雾 OLED_ShowCHinese(16,6,13); OLED_ShowChar(32,6,':'); OLED_ShowChar(56,6,'%');OLED_ShowNum(40,6,YWADC,2,16); showtime(); } wifiset(); } elseif(keyflag==1) { OLED_ShowCHinese(16,0,9);//温度 OLED_ShowCHinese(32,0,10); OLED_ShowCHinese(48,0,24);//阈值 OLED_ShowCHinese(64,0,25); OLED_ShowCHinese(80,0,26);//设置 OLED_ShowCHinese(96,0,27); OLED_ShowNum(48,4,settemp,3,16); } elseif(keyflag==2) { OLED_ShowCHinese(16,0,11);//湿度 OLED_ShowCHinese(32,0,10); OLED_ShowCHinese(48,0,24);//阈值 OLED_ShowCHinese(64,0,25); OLED_ShowCHinese(80,0,26);//设置 OLED_ShowCHinese(96,0,27); OLED_ShowNum(48,4,sethumi,3,16); } elseif(keyflag==3) { OLED_ShowCHinese(16,0,19);//烟雾 OLED_ShowCHinese(32,0,20); OLED_ShowCHinese(48,0,24);//阈值 OLED_ShowCHinese(64,0,25); OLED_ShowCHinese(80,0,26);//设置 OLED_ShowCHinese(96,0,27); OLED_ShowNum(48,4,setyw,3,16); } elseif(keyflag==4) { OLED_ShowCHinese(16,0,9);//温度 OLED_ShowCHinese(32,0,10); OLED_ShowCHinese(48,0,28);//报警 OLED_ShowCHinese(64,0,14); OLED_ShowCHinese(80,0,29);//开关 OLED_ShowCHinese(96,0,30); if(tempKG==11){OLED_ShowCHinese(48,4,31);OLED_ShowCHinese(6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论