基于单片机家庭安防报警系统设计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EABQFvit-1688636948360)(media/a2c18ee8bc962db604d1d6b46199e05c.jpeg)]

本科毕业论文

题 目**😗* 基于单片机家庭安防报警系统设计

学 院**:** 电子与通信工程学院

专 业**:** 电子信息工程

姓 名**: 禄梦**

学 号**: 190608502004**

指导教师**:** 李毅

教师职称**:** 讲师

填写日期:2023 年4月20日

BACHELOR’S DEGREE THESIS OF

GUIYANG UNIVERSITY

Design of Home Security Alarm System Based on Single Chip Microcomputer

Grade: 2019

Name: Lu Meng

Major: Electronic Information Engineering

Instructor: Li Yi

2023.4.20

郑 重 声 明

本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。

本人签名: 日期:

摘 要

随着社会的发展和人们生活水平的提高,家庭安全问题变得越来越受到关注。为了应对这一问题,基于单片机的家庭报警系统成为了人们解决家庭安全问题的主要方式。该系统通过结合多种传感器,如门磁传感器、温湿度传感器、火焰传感器、烟雾传感器等,构建一个集数据采集、报警提示和信息传输于一体的系统,提高了家庭的安全性和便利性。

本论文旨在设计一种基于单片机的家庭报警系统,并进行详细的研究和实验验证,从而对其进行完整的设计和实现。主要研究内容包括系统的硬件设计和软件设计、数据采集和传输方式的研究等。在硬件设计方面,本论文采用STM32F103C8T6单片机作为主控制器,加入多种传感器和OLED显示屏,构建出具有多种传感器检测能力和显示功能的系统。同时,加入ESP8266 WIFI模块,实现通过手机APP监测和控制家庭安全的功能。在软件设计方面,本论文采用Keil C51开发环境进行程序设计,包括密码输入、显示时间和温湿度、报警模式、传感器数据采集、串口通信和ESP8266 WIFI模块传输等方面的设计。

本论文的实验结果表明,本系统的硬件设计稳定可靠,传感器检测准确,信息传输迅速,并具有实际应用价值。此外,本论文还对系统的应用场景和未来的发展进行了分析和展望。因此,本论文的设计和实现将对家庭安防领域的技术发展和市场推广有着一定的推动作用,并具有一定的学术研究和实用价值。

关键词:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Abstract

With the development of society and the improvement of people’s living standards, the issue of family safety has become increasingly concerned. In order to address this issue, home alarm systems based on microcontrollers have become the main way for people to solve home safety issues. This system combines multiple sensors, such as door magnetic sensors, temperature and humidity sensors, flame sensors, smoke sensors, etc., to build a system that integrates data collection, alarm prompts, and information transmission, improving the safety and convenience of families.

This paper aims to design a home alarm system based on a microcontroller, and conduct detailed research and experimental verification to achieve a complete design and implementation. The main research content includes hardware and software design of the system, as well as research on data collection and transmission methods. In terms of hardware design, this paper uses the STM32F103C8T6 microcontroller as the main controller, adds various sensors and OLED display screens, and constructs a system with multiple sensor detection capabilities and display functions. At the same time, we have added the ESP8266 WIFI module to achieve the function of monitoring and controlling family safety through mobile apps. In terms of software design, this paper adopts the Keil C51 development environment for program design, including password input, display time and temperature and humidity, alarm mode, sensor data collection, serial communication, and ESP8266 WIFI module transmission.

The experimental results of this paper indicate that the hardware design of this system is stable and reliable, with accurate sensor detection, rapid information transmission, and practical application value. In addition, this paper also analyzes and prospects the application scenarios and future development of the system. Therefore, the design and implementation of this paper will have a certain driving effect on the technological development and market promotion in the field of home security, and have certain academic research and practical value.

Keywords:Home alarm system; STM32 microcontroller; Sensors; WIFI module;

目 录

第1章 绪论 1

1.1 引言 1

1.2 研究背景 1

1.3 研究意义 2

第2章 相关技术介绍 3

2.1 单片机开发技术 3

2.2 传感器技术 3

2.3 无线通信技术 3

2.4 显示技术 3

第3章 硬件设计 5

3.1 单片机主控系统 6

3.1.1系统电源电路 6

3.1.2使能电路 7

3.1.3复位电路 8

3.1.3晶振电路 8

3.2 WT-01S模块 9

3.3 时钟电路 10

3.4 火焰传感器 10

3.5 OLED显示电路 11

3.6气体检测模块MQ Sensor 12

3.7 DHT11温湿度检测模块 13

3.8 门磁传感器电路 14

3.9 总体电路设计 15

第4章 软件系统设计 17

4.1主程序流程 17

4.2 气体检测程序设计 18

4.3 火灾检测程序设计 19

4.3 显示程序设计 20

4.3 APP开发设计 22

5章 系统硬件实现调试 25

5.1程序调试 25

5.2 硬件调试 26

5.2.1 PCB设计打板 26

5.2.1 模块购买 27

总 结 29

参考文献 30

致 谢 31

附 录 32

第1章 绪论

1.1 引言

随着社会的发展和人们生活水平的提高,人们对家庭安全的关注度越来越高。在家庭中,安全问题是人们最为关心的问题之一。随着科技的不断发展,越来越多的技术被应用到家庭安防领域,从而提高家庭的安全性和便利性。其中,基于单片机的家庭报警系统是目前比较常见的一种家庭安防设备。

本论文旨在设计一种基于单片机的家庭报警系统,通过结合门磁传感器、温湿度传感器、蜂鸣器、火焰传感器、烟雾传感器、时钟模块、OLED显示和ESP8266 WIFI模块等,构建一个集数据采集、报警提示和信息传输于一体的系统,从而提高家庭的安全性和便利性。本论文的主要研究内容包括系统的硬件设计和软件设计,数据采集和传输方式的研究等。

基于单片机的家庭报警系统设计在实际应用中有着广阔的应用前景和市场需求,其实用性和实用价值备受认可。本论文的设计和实现将对家庭安防领域的技术发展和市场推广有着一定的推动作用。

1.2 研究背景

随着社会经济的发展和人们生活水平的提高,人们对家庭安全问题越来越关注。在家庭中,安全问题是人们最为关心的问题之一。然而,目前市面上大多数的家庭安防产品通常都需要用户安装复杂的设备和软件,或需要额外付费订阅才能获得更全面的服务。这些问题限制了普通家庭用户使用和推广家庭安防产品的能力,也限制了家庭安防产品市场的发展和壮大。

为了解决这些问题,基于单片机的家庭报警系统应运而生。该系统通过采用简单的硬件设备和通用的开发软件,实现了以较低的成本提供较全面的家庭安全服务。因此,基于单片机的家庭报警系统具有较高的市场前景和应用价值。

然而,目前市场上基于单片机的家庭报警系统多数功能单一、报警灵敏度低、数据传输不及时等问题,限制了其在实际应用中的效果和可靠性。因此,有必要对基于单片机的家庭报警系统进行进一步研究和优化,以提高其在实际应用中的效果和可靠性。

本论文旨在设计一种基于单片机的家庭报警系统,并通过详细的研究和实验验证,对其进行完整的设计和实现。主要研究内容包括系统的硬件设计和软件设计,数据采集和传输方式的研究等。希望本论文的研究成果能够为基于单片机的家庭报警系统的进一步发展和推广提供有益的参考和借鉴。

1.3 研究意义

基于单片机的家庭报警系统是一种具有较高市场前景和应用价值的家庭安全产品。通过对该系统进行研究和优化,可以使其具备更高的报警灵敏度、更全面的数据采集和传输方式,以及更可靠的安全保障能力,提高用户的使用体验和满意度,促进该类产品在市场上的推广和应用。

本论文设计的基于单片机的家庭报警系统具有以下意义:

1. 针对目前市场上基于单片机的家庭报警系统存在的功能单一、报警灵敏度低、数据传输不及时等问题进行优化,提高其在实际应用中的效果和可靠性。

2. 通过对基于单片机的家庭报警系统的研究和实现,提供一种较为简单、低成本的家庭安全产品方案,方便用户进行自主安装和使用。

3. 通过本论文研究的基于单片机的家庭报警系统,可以为普通家庭用户提供更全面的家庭安全服务,增强家庭安全意识和保障。

4. 本论文的研究成果可以为基于单片机的家庭报警系统的进一步研究和开发提供有益的参考和借鉴,促进该类产品的不断完善和推广。

第2章 相关技术介绍

本论文所设计的基于单片机的家庭安防报警系统,涉及多个相关技术的应用和集成。本章将就系统中使用的主要技术进行介绍,包括单片机开发技术、传感器技术、无线通信技术和显示技术。

2.1 单片机开发技术

本论文所使用的单片机为STM32F103C8T6,该单片机具有高性能、低功耗、易于开发等优点。在本系统中,单片机主要负责传感器数据的采集、处理和报警控制。单片机开发技术包括单片机硬件设计和软件编程两个方面。硬件设计方面,需要根据系统需求设计电路图和PCB布局,并根据传感器数据的特性进行模拟信号处理和AD转换。软件编程方面,需要掌握单片机编程语言和编程工具,如C语言和Keil uVision等。

2.2 传感器技术

本系统中涉及多种传感器,包括门磁传感器、温湿度传感器、火焰传感器和烟雾传感器等。传感器技术主要涉及传感器的种类、工作原理和接口规范等方面。传感器的种类繁多,每种传感器都有其特有的工作原理和接口规范,因此需要根据系统需求选取合适的传感器,并掌握传感器的工作原理和数据接口规范,以便在系统中实现传感器数据的采集和处理。

2.3 无线通信技术

本系统中使用的无线通信技术为ESP8266 WIFI模块,该模块具有低功耗、高速传输和稳定性等优点。无线通信技术主要涉及通信协议、网络拓扑结构和数据传输方式等方面。在本系统中,需要掌握ESP8266 WIFI模块的AT指令和TCP/IP协议,以及数据传输方式,实现传感器数据和报警信息的实时传输。

2.4 显示技术

本系统中使用的显示器为OLED显示器,该显示屏具有高清晰度、低功耗和便于集成等优点。显示技术主要涉及显示器种类、接口规范和图形库等方面。在本系统中,需要根据系统需求选取合适的显示器,并掌握显示器的接口规范和图形库,实现温湿度和系统状态的实时显示。

本系统中涉及多个技术的应用和集成,需要掌握单片机开发技术、传感器技术、无线通信技术和显示技术等多个方面的知识。在实现系统功能的基础上,还需要考虑系统的性能、可靠性、稳定性和安全性等方面,从而提高系统的实用性和可用性。

在单片机开发技术方面,需要对单片机的体系结构和寄存器进行深入了解,熟悉单片机编程语言和编程工具的使用,以及掌握单片机外设的接口原理和数据传输方式等方面的知识。在传感器技术方面,需要对传感器的种类和工作原理进行详细了解,掌握传感器的数据接口规范和模拟信号处理等技术,以确保传感器数据的精确性和稳定性。在无线通信技术方面,需要了解无线通信协议、网络拓扑结构和数据传输方式等知识,熟悉ESP8266 WIFI模块的AT指令和TCP/IP协议,以及数据传输方式,确保传输数据的安全性和可靠性。在显示技术方面,需要了解显示器的种类和接口规范,掌握显示器的图形库和屏幕驱动技术,以实现温湿度和系统状态的实时显示。

综上所述,本系统设计不仅具有实用性和可用性,还具有很高的研究价值和应用前景,可以为家庭安全提供更加全面和可靠的保障。同时,本论文还可以为单片机家庭安全领域的研究和应用提供参考和借鉴,为相关领域的研究和应用做出贡献。

第3章 硬件设计

本系统的硬件设计主要包括单片机选型、外设连接、电源设计和原理图设计等方面。系统结构如下图3.1所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Teex4hmf-1688636948361)(media/03995bc1c983e62437458cd9c4b5e6fa.png)]

图 3.1系统硬件总体设计框图

本系统采用了门磁传感器、温湿度传感器、火焰传感器、烟雾传感器、蜂鸣器、OLED显示屏和时钟模块等多个外设,并通过单片机的外设接口进行连接。

门磁传感器通过GPIO口连接到单片机,当门磁开关状态发生改变时,产生相应的信号,单片机通过检测该信号实现门磁状态的监测和报警。

温湿度传感器采用数字接口,通过I2C总线连接到单片机,单片机通过I2C协议读取温湿度传感器的数据,并将数据显示在OLED屏幕上。

火焰传感器和烟雾传感器均采用模拟接口,通过ADC模块连接到单片机,单片机通过ADC模块读取火焰传感器和烟雾传感器的模拟信号,并根据信号强度判断火焰和烟雾的存在和程度。

蜂鸣器通过GPIO口连接到单片机,当系统检测到危险情况时,单片机控制蜂鸣器发出报警声。

OLED显示屏采用SPI接口,通过SPI模块连接到单片机,单片机通过SPI协议将温湿度数据和系统状态等信息显示在屏幕上。

时钟模块采用数字接口,通过I2C总线连接到单片机,单片机通过I2C协议读取时钟模块的时间信息,并将时间信息显示在OLED屏幕上。

3.1 单片机主控系统

本系统采用了STM32F103C8T6单片机作为主控芯片,该芯片具有较高的性能和稳定性,可满足本系统各种功能的需求。该单片机具有64KB Flash存储器和20KB SRAM存储器,可以存储大量的程序代码和数据信息。此外,该单片机还具有多种外设接口,可以连接多个传感器和显示器等外设,提供丰富的硬件支持。

STM32F103C8T6单片机作为本系统的主控板,具有以下特点:首先,它采用了最新的ARM Cortex-M3核,具有优异的实时性和低功耗特性。其次,其创新的外围设备和强大的集成化能力,为开发人员提供了更加便捷、高效的研发体验,并能够快速将产品推向市场。此外,STM32系列单片机可以适应不同的应用场景,从内存、插针、性能要求的不同,到以电池为能源的应用场景,均能提供高度兼容性和灵活性。

为了实现本系统的设计,我们选择了STM32F103C8T6单片机核心板作为主控板。我们进行了电路设计和原理图绘制,并考虑了电源管理电路、复位电路、时钟电路、下载电路等方面的设计要求。通过这样的设计,我们可以充分发挥STM32F103C8T6单片机的性能优势,确保系统的稳定运行。单片机最小系统原理图如图3.2所示,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqO9bORW-1688636948362)(media/9016ef274b5a19139a793ad6b7278b89.png)]

图3.2 STM32单片机最小系统原理图

3.1.1系统电源电路

电源部分是整个系统的核心,保证系统的稳定运行。本系统采用RT9193X_5P电源IC作为主控板的电源管理模块。该电源IC具有高精度、低压差和低静态电流等特点,能够为主控板提供可靠的电源。

在电源部分电路中,主要包括电源滤波电容、稳压电路、电源指示灯等组成。首先,电源滤波电容C9、C10能够消除主控板电源线路上的噪声和干扰,确保电源稳定;稳压电路使用RT9193X_5P电源IC,它能够将输入电压5V稳定降压为3.3V为主控板提供电源;电源指示灯LED1能够指示主控板的工作状态,当主控板工作时,LED1亮起,当主控板停止工作时,LED1熄灭。电源部分电路的接口电路图如下图3.3所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3NsvPyO5-1688636948362)(media/137ec606b4962cdea2c9561313f00d1e.png)]

图3.3 电源电路原理图

3.1.2使能电路

在STM32单片机最小系统中,boot0和boot1是用来选择启动模式的引脚,通过控制它们的电平状态可以选择单片机是从用户程序还是从系统内置的bootloader程序启动。

一般来说,当boot0引脚为高电平时,单片机会从用户程序启动;当boot0引脚为低电平时,单片机会从内置的bootloader程序启动。而boot1引脚则是用来选择启动时时钟源的,它通常被连接到一个上拉电阻,保持为高电平即可。

因此,在最小系统中,通常会使用一个简单的电路来实现对boot0引脚的控制,例如将一个开关连接到boot0引脚和地之间,以便在需要时将其切换到低电平。而对于boot1引脚,则直接通过上拉电阻连接到VCC即可,原理图如下图3.4所示;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqY1MdhP-1688636948362)(media/251c8d77432838715f76f73e1c4bd87a.png)]

图 3.4 使能电路

3.1.3复位电路

在单片机电路中,复位电路是非常重要的一个部分,因为它可以保证系统的可靠性和稳定性。复位电路由一个复位按键、一个电阻和一个电容组成。复位按键一般是一个短接开关,通过按下按键使单片机执行复位操作,从而清除所有寄存器,初始化所有I/O口,重新启动系统。

电阻为10KΩ的电阻,它与复位按键串联,起到限流作用,防止在按下按键时因瞬间过大的电流而损坏单片机。100nF的电容,它与电阻并联,用来过滤复位信号的噪声,确保复位信号的稳定性和可靠性。

当按下复位按键时,电容被充电,电阻限制电流,从而使单片机执行复位操作。在复位完成后,电容通过放电使复位信号消失,从而保证系统正常运行。电路原理图如下图3.5所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSmllYTU-1688636948363)(media/178a3010b7affc7346c25f5db738f2e8.png)]

图 3.5 复位电路

3.1.3晶振电路

32.768晶振是一种用于实时时钟(RTC)的低频晶振,通常被用于时钟模块、电子表格、电子血压计等设备中。它的频率为32.768kHz,与UTC时间标准相吻合,具有精确度高、稳定性好的特点。

8MHz晶振是一种用于提供时钟信号的高频晶振,常用于单片机系统中。它的频率通常为8MHz,可以提供高精度的时钟信号,用于控制器的时序控制,使单片机能够准确地执行指令和计时。

在STM32最小系统中,32.768KHz晶振被用于提供实时时钟信号,而8MHz晶振则被用于提供系统时钟信号,以保证单片机的稳定性和精确性。同时,32.768KHz晶振和8MHz晶振也需要配合相应的电路来进行使用。晶振电路如下图3.6所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZjDPJC5Y-1688636948363)(media/f2e5092ef885e688dff5526d13a0cd64.png)]

图 3.6 晶振电路原理图

3.2 WT-01S模块

WT-01S是一款超小型的Wi-Fi模块,具有低功耗和高可靠性的特点,主要用于物联网、智能家居、智能穿戴等领域的无线数据传输。

该模块采用ESP8266芯片作为核心处理器,支持802.11 b/g/n无线协议,最大传输速率为150Mbps。它提供了UART、SPI、I2C等多种接口,支持AP/STA/AP+STA等多种工作模式,可灵活满足各种应用需求。

此外,WT-01S还内置了TCP/IP协议栈,可以通过AT指令进行配置和控制。它支持WEP/WPA-PSK/WPA2-PSK等多种加密方式,保证了通信的安全性。除此之外,该模块还具有自动休眠、远程升级等功能,可大大提升系统的可靠性和扩展性。

总之,WT-01S是一款性能稳定、功能丰富、易于集成的Wi-Fi模块,广泛应用于智能家居、智能穿戴、智能健康、物联网等领域,是物联网领域不可或缺的组件之一,本设计中使用TCP/IP将报警信息实时传送到手机APP显示,其接口电路如下图3.7所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NSZyk6Gj-1688636948363)(media/092e71ea2056162de4ef373b66cd88f0.png)]

图 3.7 WIFI模块接口连接图

3.3 时钟电路

DS1302是一种低功耗时钟芯片,广泛用于各种电子设备的时间和日期显示。它具有3线串行接口,可以直接与单片机进行通信。

DS1302芯片内部有一个时钟计数器,可以精确计算时间和日期,支持24小时或12小时制式,日期格式为年、月、日和星期几。此外,DS1302还具有多种控制和校准功能,可以通过软件进行配置。

DS1302的工作电压范围为2V至5.5V,内部有一个晶体振荡器,因此不需要外接晶振。它的封装形式为DIP-8或SOIC-8,体积小巧,易于安装。在各种嵌入式系统和电子设备中都有广泛的应用,设计中主要使用其来实现报警系统的首页时间日期显示作用,接口电路如下图3.8所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQM9qRjo-1688636948363)(media/a26617edc509f14322f10eaaa8678c55.png)]

图 3.8 时钟模块接口电路

3.4 火焰传感器

火焰传感器是一种能够检测周围火焰或明火的传感器。它通常使用红外线或紫外线来检测火焰,并将检测到的信号转换成电信号输出。红外火焰传感器是一种能够检测火焰光源并输出信号的传感器。通过将LM393和红外火焰传感器结合使用,可以检测火焰是否存在并输出信号。LM393芯片中的两个比较器将接收红外火焰传感器产生的模拟电信号并将其转换为数字信号输出给单片机进行处理,从而实现对火焰的检测和控制。火焰传感器连接原理图如下图3.9所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-85MWRp18-1688636948364)(media/a919552357b8a21f29c75bf74b1ebb96.png)]

图3.7流量传感器原理图

3.5 OLED显示电路

OLED 0.94寸显示器是一种基于OLED(Organic Light-Emitting Diode,有机发光二极管)技术的小尺寸显示器,常用于嵌入式系统和手持设备中作为显示模块。

OLED 0.94寸显示器的特点是高对比度、宽视角、快速响应、低功耗、薄、轻和灵活等。它的显示屏采用了有机材料,能够自发光,所以不需要背光源,同时具有非常高的亮度和对比度。此外,OLED显示器的像素点较小,可以实现更高的分辨率和更细致的图像显示。

OLED 0.94寸显示器通常采用SPI或I2C接口进行通讯,并可通过控制器进行灵活的显示内容控制。本设计采用SPI显示电路,SPI是一种使用SPI(Serial Peripheral Interface)协议进行通信的显示电路,可以连接到单片机或其他主控设备来显示相关信息。SPI是一种同步串行通信协议,使用四条信号线:时钟线(SCK)、主设备输出从设备输入的数据线(MOSI)、主设备输入从设备输出的数据线(MISO)和片选线(SS)。

在SPI显示电路中,通常使用一个SPI接口的控制器芯片来控制显示,这个控制器芯片会接收主控设备通过SPI总线传输的指令和数据,并根据指令和数据来控制OLED或LCD等显示屏幕的显示内容。SPI显示电路通常包括一个SPI控制器芯片和一个OLED或LCD等显示屏幕。

相比于其他显示电路,SPI显示电路具有高速、简单、可靠等特点,因此在很多嵌入式系统中得到了广泛应用。其具体电路原理图如下图3.9所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQQsxkto-1688636948364)(media/8fcb4f6ee4863218b1e5a3a13b520e16.png)]

图3.9 OLED显示屏接口电路

3.6气体检测模块MQ Sensor

MQ系列气体传感器是一种常用的气体检测模块,可以检测多种气体,如甲醛、乙醇、丙烷、苯、二氧化碳等。MQ传感器的工作原理是利用气敏电阻,当传感器感受到气体时,气体分子会吸附在敏感材料表面,导致电阻值的变化,进而通过检测电路输出检测结果。MQ传感器具有灵敏度高、响应速度快、结构简单、使用方便等优点。

MQ传感器通常需要与一个微处理器或其他电路板相连,以便读取气体检测结果。读取MQ传感器的电信号可以使用模拟输入接口或数字输入接口,如ADC或GPIO。通常,需要根据不同的MQ传感器选择不同的电路配置和检测算法,以提高检测精度和稳定性。

由于MQ传感器可以检测多种气体,因此在工业、环保、家庭、汽车等领域都有广泛的应用。例如,在工业领域,可以使用MQ传感器检测危险气体,以保障工作人员的安全;在家庭领域,可以使用MQ传感器检测甲醛等有害气体,以保护人们的健康。气体检测电路的接口连接图如下图3.10所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ayHJCKGd-1688636948364)(media/058201dd05f4303979c38178566dd6b1.png)]

图3.10 气体检测模块连接图

3.7 DHT11温湿度检测模块

DHT11是一种数字式温湿度传感器,能够测量当前环境的温度和相对湿度,并将数据以数字信号的形式传输给STM32微控制器,非常适合用于各种温湿度检测应用。DHT11模块包含一个DHT11传感器和一个已经集成好的信号处理芯片,使用非常方便。

DHT11模块具有以下特点:

1. 低成本:DHT11模块的成本非常低,是一种非常经济实惠的温湿度检测方案。

2. 高准确性:DHT11模块能够测量0°C~50°C范围内的温度和20%~90%RH的相对湿度,测量误差小于±2°C和±5%RH。

3. 数字信号输出:DHT11模块使用数字信号输出,可以直接与微控制器连接,并使用单一的IO口进行数据传输,非常方便。

4. 稳定可靠:DHT11模块采用高质量的传感器和信号处理芯片,具有稳定可靠的性能。

5. 长寿命:DHT11模块使用寿命长,一般可以使用数年以上。

使用DHT11模块进行温湿度检测非常简单,只需要将其与微控制器连接,并使用相应的程序进行数据读取和处理即可。DHT11温湿度模块连接图如下图3.11所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZSK5T8t-1688636948365)(media/9f13c89770232a6f99a5fac8a6892104.png)]

图3.11 温湿度检测模块接口连接图

3.8 门磁传感器电路

门磁开关电路通常用于门的开关状态检测,可以实现门的开关状态的实时监测和报警功能。其原理是利用门磁开关作为触发器,当门磁开关接通时,电路中的电流流动,控制器可以检测到电路中的电流变化,从而判断门的开关状态。

门磁开关电路由门磁开关、电源、电阻和控制器组成。门磁开关一般是由两个磁铁和一个开关组成,当门关闭时,两个磁铁靠近,开关接通,电路中有电流流动;当门打开时,两个磁铁远离,开关断开,电路中无电流流动。

在门磁开关电路中,一般会通过一个电阻将门磁开关连接到电源,从而形成一个简单的电路。当门关闭时,电路中有电流流动,电压将会分压在门磁开关和电阻之间,通过检测这个电压变化,可以判断门的状态。控制器可以通过检测电路中的电压变化,实现门的开关状态的实时监测和报警功能;其接口电路如下图3.12所示;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7nqIlJL-1688636948365)(media/c7148b6c7cad94939da35bb8771641a8.png)]

图 3.12 门磁开关

3.9 总体电路设计

这个系统的总体硬件设计包括以下几个模块:原理图和PCB图见图3.13和3.14所示

1. STM32F103C8T6主控制器模块:负责整个系统的控制和数据处理。

2. ESP8266 WIFI模块:用于与手机APP通信,实现远程控制和数据传输。

3. OLED 0.94英寸显示屏:用于显示温湿度数据、门磁状态、火焰传感器状态等信息。

4. MQ-2烟雾气体传感器:用于检测室内空气中的烟雾浓度。

5. DHT11温湿度传感器:用于检测室内温度和湿度。

6. 红外火焰传感器:用于检测室内是否有火源。

7. 门磁开关传感器:用于检测门的开关状态。

在硬件设计中,主控制器模块作为系统的核心,与其他模块进行串口通信和控制信号的传输。ESP8266 WIFI模块通过串口与主控制器模块通信,实现远程控制和数据传输。MQ-2烟雾气体传感器、DHT11温湿度传感器、红外火焰传感器和门磁开关传感器通过模拟输入口连接到主控制器模块,采集相应的环境数据并进行处理和分析。OLED显示屏通过SPI接口与主控制器模块通信,实现数据的显示和交互。

通过这些模块的协同工作,系统能够实现烟雾、火焰、温湿度、门磁等多方面的监测和控制,并通过WIFI模块实现数据的远程传输和控制。总体原理图如图3.13所示;PCB3D图如图3.14所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uOp40obF-1688636948365)(media/1ed2871ac0bf6cb6923deb11bda9ba60.png)]

图 3.13 系统总电路原理图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1Lexmmw-1688636948366)(media/c98c5d847f239d2077f4da92791940da.png)]

图 3.14 PCB设计图

第4章 软件系统设计

4.1主程序流程

从DHT11传感器读取温度和湿度数据,在OLED屏幕上显示值,并使用GPIO引脚监控火灾,气体泄漏和入侵者。如果检测到任何这些事件,则会触发警报,并在OLED屏幕上显示相应的消息。该程序还通过UART连接将数据发送到Wi-Fi模块,将此信息发送到手机APP进行监视。

家庭安防系统的运行流程。首先,用户需要输入密码来启动系统。然后系统进行初始化并显示主页面。接下来,系统开始检测环境中是否存在有害气体,如果存在,系统会开启声光报警并在OLED显示屏上显示煤气警告,并将信息传输到手机APP上,让用户知道煤气泄漏的情况。同时系统会检测是否发生火灾,如果有火灾,系统也会开启声光报警并在OLED显示屏上显示火灾警告,同时将信息传输到手机APP上,让用户知道火灾情况。以及系统会检测门的开关状态,如果门被破坏或者被打开,系统也会开启声光报警并在OLED显示屏上显示防盗警告,同时将信息传输到手机APP上,让用户知道门口被打开的情况。如果一切正常,系统将持续进行监测。这些模块同时都在检测,顺序按检测到的数据顺序,后检测到的报警会覆盖前面的报警。流程图如下图4.1所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMKY8IeD-1688636948366)(media/0be474c11095c78081e71eb5fc69215f.png)]

图 4.1软件总流程图

4.2 气体检测程序设计

通过使用气体检测传感器实时监测环境中的可燃气体和有毒气体,以便及时发现潜在的危险,并防止事故发生。该模块使用串行PB组的PB15作为数据传输通道IO端口,并使用模块的AO数据输出进行连接。在检测过程中,空气质量传感器会检测各种可燃气体,包括天然气,并对烟雾异常敏感,以检测火灾烟雾中的有毒气体。传感器的电导率会随着环境中可燃气体的存在而增加,导致电流输出变得更高。根据初始安全气体水平,可以通过检测AOUT引脚的值来判断环境中气体的浓度。如果返回的值超过了安全级别,则会激活警报,以便及时采取措施,确保人员和财产的安全。该软件模块可以广泛应用于家用系统,以实现可靠的气体泄漏检测和有毒气体检测。气体检测流程图如下图4.2所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WtyuTC1K-1688636948366)(media/8270fb7d472a260883bf7d012f903c16.png)]

图 4.2 气体检测流程图

4.3 火灾检测程序设计

红外火灾检测模块可以通过监测周围环境中的红外辐射来实现火灾检测。当周围环境中的温度升高时,热辐射也会增加,这将被红外火灾检测模块检测到。在火灾发生时,红外火灾检测模块会输出一个信号,通知系统进行响应。火灾检测流程图如下图4.3所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6M4BYC7u-1688636948366)(media/93f8c2efa5cd9ec64a7f583c9376ce2b.png)]

图 4.3 火灾检测流程图

在系统中红外火灾检测模块代码的程序实现如下所示。

while(true)

{

// 读取红外火灾检测模块的输出信号

bool fire_detected = read_fire_detection_module();

// 如果检测到火灾,则向系统发送火灾信号

if(fire_detected)

{

send_fire_alert();

}

// 等待下一个检测周期

wait_for_next_detection();

}

4.3 显示程序设计

显示模块是家用系统的核心组件之一,它可以在主屏幕上实时显示日期、星期、温度和湿度等信息。当火灾或气体泄漏事件发生时,显示模块可以自动跳转到相应的警告页面,以提醒用户及时采取措施。

显示模块可以实时显示日期、星期、温度和湿度等信息。通过读取温湿度传感器的数据,可以获取当前环境的温度和湿度信息,通过时钟模块获取当前日期和星期信息。将这些信息显示在显示屏上。当火灾、气体泄漏或门磁开关状态改变时,需要跳转到相应的警告页面以提醒用户及时采取措施。可以通过监听火灾检测模块、气体检测模块和门磁传感器的状态来实现。当检测到火灾或气体泄漏时,系统将自动跳转到相应的警告页面,并在显示屏上显示警告信息。当门磁传感器状态改变时,系统也将自动跳转到相应的警告页面,并在显示屏上显示防盗警告信息。主要源码如下所示;

void OLED_Clear(void)

{

u8 i,n;

for(i=0;i<8;i++)

{

OLED_WR_Byte (0xb0+i,OLED_CMD); //设置页地址(0~7)

OLED_WR_Byte (0x02,OLED_CMD); //设置显示位置—列低地址

OLED_WR_Byte (0x10,OLED_CMD); //设置显示位置—列高地址

for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA);

} //更新显示

}

//在指定位置显示一个字符,包括部分字符

//x:0~127

//y:0~63

//mode:0,反白显示;1,正常显示

//size:选择字体 16/12

void OLED_ShowChar(u8 x,u8 y,u8 chr)

{

unsigned char c=0,i=0;

c=chr-’ ';//得到偏移后的值

if(x>Max_Column-1){x=0;y=y+2;}

if(SIZE ==16)

{

OLED_Set_Pos(x,y);

for(i=0;i<8;i++)

OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);

OLED_Set_Pos(x,y+1);

for(i=0;i<8;i++)

OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);

}

else {

OLED_Set_Pos(x,y+1);

for(i=0;i<6;i++)

OLED_WR_Byte(F6x8[c][i],OLED_DATA);

}

}

//m^n函数

u32 oled_pow(u8 m,u8 n)

{

u32 result=1;

while(n–)result*=m;

return result;

}

4.3 APP开发设计

由于安卓app开发的复杂性和涉及到的技术非常多,完整的app源码和开发步骤是比较庞大和复杂的。首先需要下载并安装Android Studio创建项目打开Android Studio后,点击"Start a new Android Studio project",按照向导创建一个新的安卓项目。在向导中,需要指定app的名称、包名、目标安卓版本等信息。在创建项目时,可以选择基于模板创建一个空的活动(Activity)或者其他类型的app。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ySp2SL9Z-1688636948367)(media/dc706140140efc3276f3337135a07801.png)]创建UI界面使用Android Studio的可视化界面编辑器,可以创建app的UI界面。在布局文件中,可以添加各种UI组件,例如TextView、EditText、Button等。可以使用约束布局(ConstraintLayout)、线性布局(LinearLayout)等方式排列UI组件。UI设计图如下图4.4所示。

添加网络权限在app的manifest文件中,需要添加网络权限,以便连接esp8266模块。

设计主要源码如下:

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

private TextView mDataTextView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mDataTextView = findViewById(R.id.dataTextView);

// 创建OkHttpClient对象

OkHttpClient client = new OkHttpClient();

// 创建Request对象

Request request = new Request.Builder()

.url(“http://192.168.0.100:8080/data”)

.build();

// 发起网络请求,并获取Response对象

try {

Response response = client.newCall(request).execute();

String jsonData = response.body().string();

// 解析JSON数据

JSONObject jsonObject = new JSONObject(jsonData);

String data = jsonObject.getString(“data”);

// 更新UI控件

mDataTextView.setText(data);

} catch (IOException | JSONException e) {

e.printStackTrace();

}

}

}

第5章 系统硬件实现调试

5.1程序调试

本节将介绍基于单片机的家庭安防报警系统的软件调试过程,包括调试方法。调试工具:本系统使用Keil 5进行编程,可使用Keil 5进行调试。首先,确保所选的芯片和调试器与Keil 5兼容。调试步骤:

步骤1:编译程序。在Keil 5中打开项目文件,选择编译器和目标芯片,然后单击“编译”按钮。如果编译错误,将会在"输出"窗口中显示错误信息。

步骤2:下载程序。使用调试器将程序下载到目标芯片中。如果下载错误,将会在"输出"窗口中显示错误信息。

步骤3:调试程序。在Keil 5中打开“Debug”视图,单击”

步骤4:验证功能。在调试过程中,可以验证程序的功能是否正确。如果程序存在问题,可以根据错误信息进行排查和修复。

注意事项:

调试过程中需要注意电路连接和芯片配置是否正确,确保程序可以正确运行。如果程序存在问题,需要逐步排查错误,例如检查代码逻辑、变量值、函数调用等。调试过程中需要注意程序的内存使用情况,避免出现内存溢出等问题。程序中存在中断处理程序,需要注意中断优先级和中断嵌套等问题。程序编译结果如图5.1所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dK4s0mhY-1688636948367)(media/9bab062bdae0079c458d5beb28f16193.png)]

图 5.1 KEIL5程序编译结果图

在本次调试过程中,没有发现程序运行出错的情况,所有功能都能够正常实现。调试结果表明,程序设计和编码符合系统要求,代码运行稳定,可靠性高。

5.2 硬件调试

5.2.1 PCB设计打板

PCB设计过程中,通常需要进行原理图设计、PCB布局和PCB绘制等步骤。其中,PCB布局是非常重要的一步,其效果将直接影响电路的性能和可靠性。在本次设计中,采用了Altium Designer 16.1进行PCB布局,具体过程如下:

1. 准备工作

在开始布局之前,需要进行一些准备工作,包括确定PCB板的大小、确认元件的尺寸和间距、确定元件的位置和方向等。

2. 创建PCB布局

在Altium Designer中,可以通过从原理图导入元件来创建PCB布局。首先打开PCB文件,在工具栏中选择“File”->“Import”->“PCB From Schematic”,然后选择原理图文件,系统会自动创建PCB布局,并将元件自动布置在PCB板上,PCB设计图如图5.2所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yX97ib63-1688636948367)(media/85faac47b0bfb0ce664da0178fcb9fc4.png)]

图 5.2 PCB设计图

3. 进行布局优化

布局完成后,需要进行优化,以满足电路的性能和可靠性要求。优化包括调整元件的位置和方向、优化线路的走向和长度、避免元件之间的干扰等。

4. 添加布线

在进行布线之前,需要对元件进行分组,将信号源和信号收集器分开,并确定每个分组的位置。然后根据电路原理图进行布线,需要注意保持良好的信号完整性、降低信号噪声等。

5. 设计电源和地线

电源和地线是PCB布局中非常重要的部分,需要仔细设计。在进行电源和地线的布局时,需要注意防止干扰和交叉耦合。

6. 添加焊盘和丝印

在布线完成后,需要添加焊盘和丝印,以便嘉立创可以正确地打印PCB板。在Altium Designer中,可以通过添加焊盘、添加丝印等功能来完成这些操作PCB设计3D图如图5.3所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXtwJCzE-1688636948368)(media/396d8bf44b9c12a7ac56084f22af970f.png)]

图 5.3 PCB设计3D 图

7. 导出Gerber文件

完成PCB布局后,需要将布局导出为Gerber文件,以便嘉立创可以打印PCB板。在Altium Designer中,可以通过“File”->“Fabrication Outputs”->“Gerber Files”等功能来导出Gerber文件。

8. 打印PCB板

最后,将导出的Gerber文件交给嘉立创PCB生产厂商进行打印PCB板。

5.2.1 模块购买

元器件清单的购买是系统制作的重要环节,采购到合适的元器件可以确保系统的稳定性和可靠性。确定元器件清单:在进行元器件购买之前,需要确定所需元器件清单。该清单应包含所需的传感器、芯片、连接器、电容、电阻等元器件,并确保其规格与系统设计一致。在购买前,可以进行在线调查,查看其他客户的评价和反馈,以确保供应商的可靠性和产品质量。确认产品的规格和型号是否符合系统要求。可以查看产品规格书,以确保所购买的元器件与系统设计相符。

在收到元器件后,需要进行验货。检查每个元器件是否符合规格书的要求。如果元器件有问题,需要及时与供应商联系。在验货后,可以开始系统的组装和调试。

表5.1 元器件清单

元器件型号元器件名称数量
STM32f103c6t6单片机1个
OLED液晶显示器1个
DHT11温湿度传感器1个
MQ-2烟雾传感器1个
ds1302RTC时钟模块1个
fire火焰传感器1个
MQ-38门磁传感器1个
1*44按键1个
ESP8266WIFI模块1个
蜂鸣器模块5V1个

准备元件以及PCB后焊接后调试经过验证系统功能达到预期效果

下面展示调试结果图件附件所示;

总 结

本次毕业设计是一个基于单片机的智能家居安防报警系统,通过硬件设计和软件开发相结合,实现了对室内温湿度、烟雾浓度、火源等信息的实时监测,并通过WIFI模块与手机APP通信,并通过WiFi模块与手机APP通信,实现对安防系统传感器的实时查看。

在APP的开发过程中,我们需要首先进行需求分析和功能规划,明确APP的功能和交互方式。然后进行UI设计,设计一个简洁、易用、美观的界面,方便用户操作。在UI设计完成后,我们需要进行编程工作,编写逻辑代码,通过与硬件的通信,实现设备的控制和监测功能。实现远程控制和数据传输。整个项目涉及多个技术领域,需要进行硬件设计、软件开发和系统集成等多个方面的工作。

在本项目中,我们首先进行了系统需求分析和功能规划,根据要求进行硬件选型和电路设计,并使用Altium Designer进行PCB设计和布局。在PCB设计完成后,我们将Gerber文件上传至嘉立创进行PCB打印和组装。

在软件开发阶段,我们采用Keil5进行单片机程序编写和调试,并通过对硬件接口的调试和测试,逐步完成了系统功能的实现。在整个开发过程中,我们遵循了工程化开发的原则,将代码进行模块化、注释和调试,以保证系统的稳定性和可靠性。

最终,我们通过对系统进行全面的测试和验证,验证了系统的各项功能正常,性能稳定。整个项目的开发不仅仅是对我们技术水平的提高,更是对嵌入式系统开发流程的深入了解和掌握,也为今后的工作提供了宝贵的经验和参考。

参考文献

  1. 蒋洁, 谢东峰, 李杨. 基于物联网技术的智能家居系统研究[J]. 科技资讯, 2019(13):178-179.
  2. 杨睿, 杨凯, 刘敏. 基于物联网的智能家居安全系统设计[J]. 科技资讯, 2019(5):173-174.
  3. 王倩. 基于WiFi的智能家居远程监控系统设计[J]. 计算机与数字工程, 2020, 48(6):131-132.
  4. 周林, 蒲永祥, 谷海峰. 基于无线传感器网络的智能家居系统设计[J]. 电子工程师, 2019(11):121-124.
  5. 张博. 基于智能家居系统的低碳生活理念研究[J]. 现代城市研究, 2019(12):69-71.
  6. 陈杨, 吴腾, 陈韶涛. 基于ARM的智能家居控制系统设计[J]. 计算机时代, 2020(1):155-156.
  7. 魏亮, 马文忠, 郑晓勇. 基于ZigBee的智能家居系统设计[J]. 通信技术, 2019, 52(2):70-72.
  8. 孙建勋. 基于智能家居系统的节能措施研究[J]. 现代建筑, 2018(17):154-155.
  9. 黄庆. 基于WiFi的智能家居系统的设计与实现[J]. 科技风, 2020(9):67-68.
  10. 杨忠明, 张伟平. 基于智能家居系统的智慧社区研究[J]. 智慧城市, 2018(11):52-54.
  11. 邹梦琪. 基于物联网技术的智能家居系统研究与设计[J]. 现代科技, 2019(5):124-126.
  12. 王斐. 基于ZigBee的智能家居安全监控系统的设计与实现[J]. 计算机技术与发展, 2020, 30(8):81-84.
  13. 张凯, 王颖, 张锦华. 基于物联网技术的智能家居安防系统设计[J]. 物联网技术, 2017, 10(12):36-39.
  14. 贺云峰. 基于物联网的智能家居安防系统设计与实现[J]. 电脑知识与技术, 2019, 15(15):155-156.
  15. 苗海平, 王彩霞, 陈俊凤. 基于 ZigBee 的智能家居安防系统的设计与实现[J]. 智能计算机与应用, 2018, 8(4):47-49.
  16. 钟超. 基于 Android 的智能家居安防系统设计[D]. 成都:成都信息工程大学, 2019.
  17. Abdellatif E, Hossam E, El-Sayed A. An IoT-Based Smart Home Security System Using Raspberry Pi and Arduino Uno[C]//2018 IEEE 2nd International Conference on Computational Intelligence and Applications (ICCIA). IEEE, 2018: 16-20.
  18. Li Y, Liang L, Li W. Design and implementation of smart home security system based on Internet of Things[C]//2017 3rd International Conference on Control Science and Systems Engineering (ICCSSE). IEEE, 2017: 691-694.

致 谢

在我的大学生涯接近尾声的时候,我想感谢那些关心我,支持我,帮助我的朋友们。我想向我的指导老师李毅老师表示衷心的谢意。我要向他表示感谢,在我进行毕业论文研究的过程中,他对我的帮助和帮助,他的严格治学精神,悉心教导,以及他的扎实的学术功底,都让我获益良多。当我在研究中遇到困难和挫折时,他总会给予我耐心的引导和鼓励,让我重拾自信和动力。

另外,我也想对我的父母以及我的家庭表示感激。谢谢他们对我的关心和帮助,因为他们的关心和帮助,使我能够成功地读完大学。

在此,我想要对在我求学过程中一直伴随着我的老师,同学,朋友表示衷心的感谢。同时,也要向我的母亲表示衷心的谢意,为我的成长与发展,我将永远铭记于心。

在这里,我再一次对上述各位致以诚挚的谢意。

附 录

附录A:原理图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-58poTDNb-1688636948368)(media/e8e46750919664b79e5e350a1e474597.png)]

图 A1原理图

附录B:实物图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C7CaPL4h-1688636948368)(media/9cfb0115e3e8e0f6977b5f5b7612c733.jpeg)]

图B1 实物图1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8vyf0K4-1688636948368)(media/b54e4e7604436d9bb21b716ba2dca011.jpeg)]

图 B2 实物图2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdeVXmwi-1688636948369)(media/8939ba8186ab51494a315990c2397a92.jpeg)]

图 B3 实物图3

附录C:PCB图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w7PMylYJ-1688636948369)(media/9c97af763b8b8829a6270164bdba7e19.png)]

图 C1 PCB3D图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3NyAM8hx-1688636948369)(media/6d7730784aea8fa71dc9b8639609137b.png)]

图 C2 PCB图

附录D:源代码

#include “main.h”

#include “usart.h”

#include “gpio.h”

#include “oled.h”

//#include “bmp.h”

#include “dhtll.h”

#include “rtc.h”

#include <string.h>

#include <stdio.h>

volatile uint8_t data[10]=“lalalalala”;

extern volatile u8 wifi_100ms_flag;

int32_t rt;

uint8_t buf[5];

u8 senddata[20];

u8 huo = 11;

u8 mei = 11;

u8 ren = 11;

uint8_t jingbao = 0;

void SystemClock_Config(void);

int main(void)

{

HAL_Init();

SystemClock_Config();

HAL_Delay(90);

MX_GPIO_Init();

MX_USART1_UART_Init();

OLED_Init();//oled初始化

OLED_Clear();

dht11_init();

ds1302_init();

buzz_init();

ir_init();

mq2_init();

butt_init();

/* USER CODE BEGIN 2 */

//HAL_UART_Receive_IT(&huart1,data,10);//串一中断

ds1302_write_time();

ds1302_read_time();

showbegin();

while (1)

{

if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) != 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 0)

{

jingbao =1;

if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0)//火灾警报

{

huo = 22;

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);

OLED_Clear();

OLED_ShowCHinese(80,4,10);//报警

OLED_ShowCHinese(96,4,11);//报警

OLED_ShowCHinese(80,2,22);//火灾

OLED_ShowCHinese(96,2,0);//火灾

showhuo(); //显示火灾图片

}

else

{

huo = 11;

}

if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 0)//煤气报警

{

mei = 22;

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);

OLED_Clear();

OLED_ShowCHinese(80,4,10);

OLED_ShowCHinese(96,4,11);

OLED_ShowCHinese(80,2,49);

OLED_ShowCHinese(96,2,50);//

showmei();

}

else

{

mei = 11;

}

if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) != 0)//防盗警报

{

ren =22;

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);

OLED_Clear();

OLED_ShowCHinese(80,4,10);

OLED_ShowCHinese(96,4,11);

OLED_ShowCHinese(80,2,1);

OLED_ShowCHinese(96,2,2);//

showman();

}

else

{

ren =11;

}

}

else

{

huo = 11;

mei = 11;

ren = 11;

if(jingbao == 1)

{

OLED_Clear();

jingbao = 0;

}

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);

rt = dht11_read(buf);

OLED_ShowCHinese(0,6,7);//温度

OLED_ShowCHinese(15,6,8);

OLED_ShowChar(28,6,‘:’);

OLED_ShowCHinese(68,6,9);//湿度

OLED_ShowCHinese(83,6,8);

OLED_ShowChar(96,6,‘:’);

OLED_ShowNum(35,6,buf[2],2,16);

OLED_ShowCHinese(50,6,48);

OLED_ShowChar(57,6,‘C’);

OLED_ShowNum(104,6,buf[0],2,16);

OLED_ShowChar(121,6,‘%’);

showtime();

}

sprintf(senddata,“%d-%d-%d-%d-%d”,buf[2],buf[0],huo,mei,ren);

HAL_UART_Transmit_IT(&huart1,“AT+CIPSEND=0,14\r\n”,sizeof(“AT+CIPSEND=0,14\r\n”));

HAL_Delay(300);

HAL_UART_Transmit_IT(&huart1,senddata,14);

}

/* USER CODE END 3 */

}

//HAL_UART_Receive_IT(&huart1,data,10);

/**

* @brief System Clock Configuration

* @retval None

*/

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/** Initializes the RCC Oscillators according to the specified parameters

* in the RCC_OscInitTypeDef structure.

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

Error_Handler();

}

/** Initializes the CPU, AHB and APB buses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)

{

Error_Handler();

}

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**

* @brief This function is executed in case of error occurrence.

* @retval None

*/

void Error_Handler(void)

{

/* USER CODE BEGIN Error_Handler_Debug */

/* User can add his own implementation to report the HAL error return state */

/* USER CODE END Error_Handler_Debug */

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name and line number,

tex: printf(“Wrong parameters value: file %s on line %d\r\n”, file, line) */

/* USER CODE END 6 */

}

#endif /* USE_FULL_ASSERT */

/************************ © COPYRIGHT STMicroelectronics *****END OF FILE****/
FLASH_LATENCY_0) != HAL_OK)

{

Error_Handler();

}

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**

* @brief This function is executed in case of error occurrence.

* @retval None

*/

void Error_Handler(void)

{

/* USER CODE BEGIN Error_Handler_Debug */

/* User can add his own implementation to report the HAL error return state */

/* USER CODE END Error_Handler_Debug */

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name and line number,

tex: printf(“Wrong parameters value: file %s on line %d\r\n”, file, line) */

/* USER CODE END 6 */

}

#endif /* USE_FULL_ASSERT */

/************************ © COPYRIGHT STMicroelectronics *****END OF FILE****/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值