基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现
功能介绍
- 以STM32单片机作为主控系统;
- LCD1602液晶显示屏来显示显示测得的值;
- SR501人体红外感应是否有人进行防盗;
- 通过烟雾传感器MQ-2获取前的烟雾值;
- 通过DHT11温湿度传感器来获取当前的温湿度;
- 所有的信息通过通过esp8266 wifi把数据传输到手机端进行显示;
- 整个电路以5v供电;
电路图

PCB

源代码
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>//printf串口输出头文件#define uchar unsigned char
#define ushort unsigned int
#define uint unsigned long#include "lcd1602.h"
#include "uart_trx.h"
#include "eeprom52.h"#define RATIO 800 //系数,建议选择800-1000sbit key1 = P1^0;//加键
sbit key2 = P1^1;//减键sbit beep = P2^0;//蜂鸣器
sbit Fan = P1^3;//风扇unsigned char pmBuf[7] = 0;//数据接收数组
uint PM25_Value = 0; //PM = ((pmBuf[1]<<8)+pmBuf[2])/1024*8*ratio
uint PM25_ValueMax = 200; //上限初始值void EEPROM_WRITE()//EEPROM写入
{SectorErase(0x2000);//擦除扇区byte_write(0x2001, (PM25_ValueMax>>8)&0xFF);//存储高8位byte_write(0x2002, (PM25_ValueMax>>0)&0xFF);//存储低8位byte_write(0x2009, 111);//存储校验值
}void EEPROM_READ()//EEPROM读出
{if(byte_read(0x2009)!=111)//开机检测单片机是不是第一次使用,如果不是第一次使用,则先把数据存储一遍,再读取,数据就不会乱码{EEPROM_WRITE();//存储delay_ms(100);}PM25_ValueMax = byte_read(0x2001)<<8 | byte_read(0x2002);//读取上限值
}void Get_PM(void)//读取PM2.5值,具体的数据帧意思,请自行查阅芯片手册
{char i = 0;char j = 0;char k = 0;COM.RX_Cnt = 0;if(COM.B_RX_OK == 1)//串口数据接收完成{for(i = 0; i<8; i++){if((RX_Buffer[i] == 0xAA)&&(RX_Buffer[i+6]==0xFF))//判断接收的数据是否正确{goto find2;}}goto end2;
find2:for(j = 0; j<7; j++){pmBuf[j] = RX_Buffer[i+j];//数据获取}PM25_Value = (unsigned int)((pmBuf[1]*256)+pmBuf[2])*5/2048.0*RATIO;//计算PM2.5值COM.B_RX_OK = 0;}
end2:return;
}void main(void)
{unsigned int test;EEPROM_READ();//开机读取存储值LCD_init();//1602初始化Uart_Init(2400);//串口初始化波特率2400LCD_write_string(0,0,"Pm2.5: ug/m3 ");LCD_write_string(0,1,"PmMax: ug/m3 ");//显示上限值LCD_write_char(7, 1, PM25_ValueMax % 1000 / 100 + 0x30);LCD_write_char(8, 1, PM25_ValueMax % 100 / 10 + 0x30);LCD_write_char(9, 1, PM25_ValueMax % 10 + 0x30);while(1){if (test ++ > 250)//大约250ms读取一次{test = 0 ;Get_PM();//获取PM2.5if(PM25_Value > 999)//限值,最大999PM25_Value = 999;//显示PM2.5LCD_write_char(7, 0, PM25_Value % 1000 / 100 + 0x30);LCD_write_char(8, 0, PM25_Value % 100 / 10 + 0x30);LCD_write_char(9, 0, PM25_Value % 10 + 0x30);if(PM25_Value >= PM25_ValueMax)//超过上限,蜂鸣器报警{beep = ~beep;Fan = 0;delay_ms(100);}else{beep = 1;Fan = 1;}}if(key1 == 0)//加键按下{delay_ms(10);//消抖if(key1 == 0){beep = 0;delay_ms(100);beep = 1;while(key1 == 0);if(PM25_ValueMax<999)PM25_ValueMax+=10;//上限最大到999,每次加10//显示LCD_write_char(7, 1, PM25_ValueMax % 1000 / 100 + 0x30);LCD_write_char(8, 1, PM25_ValueMax % 100 / 10 + 0x30);LCD_write_char(9, 1, PM25_ValueMax % 10 + 0x30);EEPROM_WRITE();//保存}}if(key2 == 0)//减键按下{delay_ms(10);if(key2 == 0){beep = 0;delay_ms(100);beep = 1;while(key2 == 0);if(PM25_ValueMax>=10)PM25_ValueMax-=10;//上限最小到0,每减10//显示LCD_write_char(7, 1, PM25_ValueMax % 1000 / 100 + 0x30);LCD_write_char(8, 1, PM25_ValueMax % 100 / 10 + 0x30);LCD_write_char(9, 1, PM25_ValueMax % 10 + 0x30);EEPROM_WRITE();//保存}}delay_ms(1);}
}
元器件清单
| 基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现 | ||
| 名称 | 型号 | 数量 |
| 单片机 | STC89C52 | 1 |
| IC座 | DIP40 | 1 |
| 万能板 | 9*15cm | 1 |
| 晶振 | 11.0592M | 1 |
| 电解电容 | 10uF | 1 |
| 电解电容 | 1000uf | 1 |
| 瓷片电容 | 22pF | 2 |
| 电阻 | 10K | 3 |
| 电阻 | 1K | 4 |
| 电阻 | 2K | 1 |
| LED红 | 5MM | 1 |
| LED绿 | 5MM | 1 |
| 蜂鸣器 | 有源 | 1 |
| 三极管 | S9012 | 1 |
| 按键 | 5 | |
| 显示屏 | LCD1602 | 1 |
| 排针 | 16P | 1 |
| 排母 | 16P | 1 |
| 人体红外模块 | HC-SR501 | 1 |
| 排母 | 3P | 1 |
| 温度传感器 | DS18B20 | 1 |
| 烟雾传感器 | MQ-2 | 1 |
| 模数转换器 | ADC0832 | 1 |
| IC座 | 8P | 1 |
| GSM模块 | SIM800c | 1 |
| 电源座 | 5MM | 1 |
| 电源线 | 5V2A | 1 |
| 自锁开关 | 1 | |
| 继电器 | 1 | |
| 小水泵 | 1 | |
| 导线 | 若干 | |
| 焊锡丝 | 若干 |
参考文献
参考文献
[1]王德保.GPS在城市控制网中的应用研究[D].山东:山东科技大学,2005.
[2]何立民.从现代计算机视角看嵌入式系统(4)嵌入式系统40年发展史[J].单片机与嵌入式系统应用,2016,16(04):77-79.
[3]康桂霞,刘达.FPGA应用技术教程[M].北京:人民邮电出版社:201306.229.
[4]朴德慧,衣英刚.液晶显示器驱动板MCU电路介绍(上)[J].家电检修技术,2012(11):53.
[5]段廷魁.全球卫星定位系统(GNSS)在工程测量中的实践运用探索0[J].科技创新与应用,2021(05):182-184.
[6]宋戈,黄鹤松.51单片机应用开发范例大全[M].北京:人民邮电出版社:国家信息技术紧缺人才培养工程系列丛书,201206.558.
[7]罗小青.单片机原理及应用教程[M].北京:人民邮电出版社,201409.180.
[8]沈庆阳.单片机实践与应用[M].北京:清华大学出版社,2002.
[9]杜深慧.温湿度检测装置的设计与实现[M].北京:机械工业出版社,2004.
[10]林嘉.基于89S52的LCD1602程序设计[J].电脑知识与技术,2012(26):6376-6378.
[11]刘光伟.基于单片机的温室温湿度监测系统设计与实现[D].秦皇岛市:燕山大学,2012.
[12]褚福强,董学仁.单片机的网络接入技术研究[J].仪器仪表用户,2006(05):4-5.
[13]陈英俊.基于单片机的温湿度监测和报警系统设计[J].广东石油化工学院学报,2013(04):42-46.
[14]廖丽媛.基于应变式扭矩传感器的测量系统的设计[D].上海市:东华大学,2013.
[15]刘九庆.温室环境工程技术[M].吉林:东北林业大学出版社,2002.
[16]王明喜,崔世茂.大棚型日光温室光照、温度及湿度等性能的初步研究[J].农业工程技术(温室园艺),2008(05):19-21.
[17]张迎辉.单片微型计算机键盘接口设计[J].信息技术,2004(07):68-69+91.
[18]张友德,赵志英.单片微型机原理应用与实验[M].上海市:复旦大学出版社,2003.
[19]赵芝芸.温室智能监控系统[D].江苏:江苏科技大学,2010.
[20]张宏伟.基于STM32的智能环境监测系统设计与实现[J].大庆师范学院学报,2020(05):32-35.
[21]王世伟,杨越.基于STM32的多型号舵机调试器设计[J].九江学院学报(自然科学版),2020,35(02):33-36.
[22]Pengcheng Zhao,Meijun Ni,Chao Chen,Chenxi Wang,PingpingYang,Xiahui Wang,Chunyan Li,Yixi Xie,Junjie Fei. A Novel Self-protection Hydroquinone Electrochemical Sensor Based on Thermo -sensitive Triblock Polymer PS-PNIPAm-PS[J].
[23]Jian Wang,Jing Chen,Xiaofu Xiong,Xiaofeng Lu,ZhengLiao,Xiaobo Chen.Temperature safety analysis and backup protectionscheme improvement for overhead transmission line in poweroscillation condition[T].Electric Power Systems Research,2019,166.
[24]Fuji Electric Co.Ltd.;Patent Issued for SeiconductorDevice And Method Of Outputting Temperature Alarm (USPTO10,164,626)[J].Electronics Newsweekly,2019.
[25]VERSID,INC;Patent Issued for Refrigeration UnitTemperature Alarm Using Thermal Properties of Food to Eliminate FalseAlarms (USPTO 9752810)[J].Computers,Networks &Communications,2017.
[26]Fuji Electric Co.Ltd;Patent Application Titled"Semiconductor Device and Method of Outputting Teperature Alarm"Published Online (USPTO 20170077919)[J]. Technology & BusinessJournal,2017.
[27]su Yuanping,Xu Lihong,Goodman Erik D.Multi-layerhierarchical optimisation of greenhouse climate setpoints for energyconservation and improvement of crop yield[J].Biosystems
[28]黄松茂.基于STM32的家庭环境监测系统的设计与实现[D].甘肃兰州.西北师范大学,2018.:23-30.
[29]李大琳.智能车内温度监测系统设计[J].山东工业技术,2014(12):80-81.
[30]郭雯,王海涛. 智能输液系统的发展与应用.医疗卫生装备,2012

相关文章:
基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现
功能介绍 以STM32单片机作为主控系统;LCD1602液晶显示屏来显示显示测得的值;SR501人体红外感应是否有人进行防盗;通过烟雾传感器MQ-2获取前的烟雾值;通过DHT11温湿度传感器来获取当前的温湿度;所有的信息通过通过esp82…...
jenkins 采用ssh方式连接gitlab连接不上
一、gitlab 添加jenkins服务器的公钥 jenkins 生成秘钥命令 ssh-keygen -t rsa2.jenkins 秘钥地址: cd /root/.ssh3.复制公钥 到gitlab 添加 cat id_rsa_pub4.添加私钥到jenkins cat id_rsa5.绑定(顺利的话到这里就结束了) ࿰…...
前缀和模板算法
一)模板前缀和 【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 前缀和:快速的得出数组中某一段连续区间的和 暴力破解的话需要从头到尾的进行遍历,时间复杂度就可以达到O(N),而前缀和时间复杂度是可以达到O(1)的 第一步:预处理创建出一个前缀和数组dp&a…...
SpringBoot 启动输出 Git 版本信息(2023/07/11)
SpringBoot 启动输出 Git 版本信息 文章目录 SpringBoot 启动输出 Git 版本信息1. 环境依赖2. pom.xml 配置3. 启动类配置 为了方便记录项目打包时的 Git 版本,本文将介绍如何将 Git 版本信息打包进 JAR 文件,并在项目启动时输出。 1. 环境依赖 SpringB…...
SSH客户端连接远程服务器
目录 一、什么是客户端连接远程服务器 二、什么是服务端连接远程服务器 三、查看网络信息 1、图形程序查看网络信息 2、命令查看网络信息 四、SSH客户端(Linux) 五、SSH客户端(windows) 六、SSH远程服务器 一、什么是客户…...
“深入理解Redis:高性能缓存与数据存储的秘密“
标题:深入理解Redis:高性能缓存与数据存储的秘密 在现代应用程序的开发中,缓存和数据存储是非常重要的组成部分。它们不仅可以提高应用程序的性能,还可以减轻数据库和网络的负载。其中,Redis作为一种高性能的内存数据存…...
【论文阅读笔记】Attack-Resistant Federated Learning with Residual-based Reweighting
个人阅读笔记,如有错误欢迎指出 Arxiv 2019 [1912.11464] Attack-Resistant Federated Learning with Residual-based Reweighting (arxiv.org) 问题: 联邦学习容易受到后门攻击 创新: 提出一种基于残差的重新加权聚合算法 聚合算法…...
DevOps B站学习版(二)
学习地址: 01.DevOps的诞生_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Pt4y1H7Zq/?p1&vd_source1f09c23f556b3d6a9b7706f8db12fa54%E3%80%81 正文开始 找到这个地方,修改 可以写成基于标签拉取和构建工程,下面也选择Tag即可…...
MySQL(一)基本架构、SQL语句操作、试图
MySQL系列文章 MySQL(一)基本架构、SQL语句操作、试图 MySQL(二)索引原理以及优化 MySQL(三)SQL优化、Buffer pool、Change buffer MySQL(四)事务原理及分析 MySQL(五&a…...
MySQL事务基础知识
文章目录 一、事务简介二、事务操作1.查看事务提交方式2.设置事务提交方式3.开启事务4.提交事务5.回滚事务 三、事务四大特性ACID四、并发事务的问题五、并发事务隔离级别六、代码实例1.脏读实例2.不可重复读实例3.幻读的实例4.串行化的实现 一、事务简介 事务是一组操作的集合…...
form表单禁止浏览器自动填充密码
因为用户修改密码的时候,谷歌浏览器、edge等浏览器,总是自动将保存的密码填充到重置密码输入框中,给用户使用带来困扰。原因是因为你在登录的时候选择记住了账号和密码了,所以就会把信息存在浏览器里面,当你在修改密码的时候,由于form表单的 type="password" 所…...
ios oc button 设置
Button调整内部的子控件的位置...
山西电力市场日前价格预测【2023-07-17】
日前价格预测 预测明日(2023-07-17)山西电力市场全天平均日前电价为335.50元/MWh。其中,最高日前电价为377.51元/MWh,预计出现在06: 00。最低日前电价为271.94元/MWh,预计出现在13: 30。 价差方向预测 1:实…...
vue3功能实现
在vue2中,要实现一些方法(增删改查)一般都是写在一起的。如下图所示: 但是在vue3中,实现一个方法需要用到很多文件。 方法定义方法如下: export function classSign(phone: string) {return sign_reques…...
微服务系列文章 之 SpringCloud中遇到的一些bug
1、There was a problem with the instance info replicator 错误原因: 该服务尝试将自己作为客服端注册解决办法: 在application.yml配置文件中,设置 # 注册Eureka服务 eureka:client:# Eureka服务注册中心会将自己作为客户端来尝试注册它自…...
Linux——权限
目录 1.Shell运行原理——外壳程序 2.权限 2.1对人操作 2.2对角色和文件操作 3.常见权限问题 1.Shell运行原理——外壳程序 首先我们要明确一个概念,我们不是直接访问操作系统。为什么? 对于Windows我们是使用GUI进行操作,Shell对于Li…...
[英语单词] components;
*[kәm’pәunәnt] n. 元件, 组件, 成分 a. 组成的, 构成的 【计】 组件 【化】 组分 【医】 成分; 组元(神经元组) 有很多地方使用这个单词,在组成整体时,作为单位一内的占有比率。那为什么不用portion? 这样每一个组成部分都是一个compon…...
【观察者模式】 ——每天一点小知识
💧 观察者模式 \color{#FF1493}{观察者模式} 观察者模式💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂🦕…...
el-ment ui 表格组件table实现列的动态插入功能
在实际需求中我们经常遇到各种奇葩的需求,不足为奇。每个项目的需求各不相同,实现功能的思路大致是一样的。 本文来具体介绍怎么实现table表格动态插入几列。 首先实现思路有2种, 1. 插入的位置如果是已知的,我知道在哪个标题的…...
gitLab修改密码后,sourceTree如何修改密码
修改gitLab密码后,在sourceTree提交或者更新代码会报:fatal: Authentication failed for~ 简单粗暴的方法: 到C:\Users\用户\AppData\Local\Atlassian\SourceTree,找到passwd文件,并删除; 重启sourceTre…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
