基于单片机的厨房安全监测

news2024/11/25 16:35:58

    功能介绍

  •  以STM32单片机作为主控系统;
  •  OLED液晶显示当前检测的气体浓度,温度,是否有火等信息;
  •  按键可以设置温度上限、可燃气体浓度上限;
  •  当温度超过我们设置自动开启风扇进行降温;
  •  当检测到天然气泄露后蜂鸣器进行声光报警,并且舵机进行控制模拟关闭阀门,开启风扇降  低气体浓度;
  •  火焰传感器检测到明火时,继电器控制水泵进行灭火,并且也会控制舵机关闭天然气阀门;
  •  通过ESP8266 WIFI模块把当前数据发送到手机端进行显示;
  •  整个电路通过5V供电;

 电路图

 


源代码

#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-1000

sbit 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);//串口初始化波特率2400
  
    LCD_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.5
					if(PM25_Value > 999)//限值,最大999
					 PM25_Value = 999;
					//显示PM2.5
					LCD_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);
    }
}


系统框图

参考文献

参考文献
[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]姜根堂,赵风财.基于ARM的车内空气检测系统设计[J].智能计算机与应用,2020,10(07):199-202

       本文只是简单介绍了实物功能的一种和在设计的过程的关键点,供大家参考学习,如需定制实物或者有错误和不明白的可以直接私信作者,或者添加微信biyezhan007。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS学习篇之基础知识(一)-环境的安装

文章目录 一.ros的安装1.ros的一键安装&#xff1a;2.ros的验证是否安装成功3.安装导航必备的库&#xff1a; 二.VScode的配置1.安装ros插件2.安装cmake插件 三.VScode的简单使用1.快速注释&#xff1a; 四.pycharm的安装 一.ros的安装 1.ros的一键安装&#xff1a; wget htt…

shiro框架 shiro补充知识MD5加密

01.在用户登录时候&#xff0c;需要输入用户名和密码。 用户名用数据库的select来查询是否存在。 密码比较私密&#xff0c;就是后台的程序员也不可以查看&#xff0c;这需要加密。 一般的加密算法是MD5 02.例如&#xff1a; SecurityUtils 类是shiro框架的一个类。SecurityUt…

LabVIEW开发牵引控制动态仿真器

LabVIEW开发牵引控制动态仿真器 车辆牵引力控制包括轮胎在横向和纵向上的牵引力控制&#xff0c;以获得所需的车辆运动。决定轮胎牵引力的力来自路面和轮胎之间的相互作用&#xff0c;它们分解为两个组成部分&#xff1a;一个在横向&#xff0c;另一个在纵向。第一个组件取决于…

MSP432学习笔记11:定时器A的结构\基地址\函数汇总理解

今日得以继续我的电赛MSP432学习之路&#xff1a;所用开发板MSP432P401R 定时器是任何单片机开发板十分重要的模块&#xff0c;在几日的学习使用过程中&#xff0c;本人也对其使用原理等产生过许多疑问&#xff0c;他究竟是怎么存储计数值、捕获值的&#xff1f;一个定时器四个…

基于Java校园车辆管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Arduino Proteus仿真DHT11自动浇水浇花浇土装置-0048

Arduino Proteus仿真DHT11自动浇水浇花浇土装置-0048 Proteus仿真小实验&#xff1a; Arduino Proteus仿真DHT11自动浇水浇花浇土装置-0048 功能&#xff1a; 硬件组成&#xff1a;ARDUINO -UNO-R3开发板、 LCD1602 、DHT11温湿度传感器、LED灯、电机模拟水泵、2个按键 1.单…

【详解代码】vue element el-select选择器多选下拉框实现全选功能和取消全选

目录 解决方法 下拉项增加一个【全部】⭐️效果图如下&#xff1a;默认全选情况一&#xff1a;下拉选项全都勾选时&#xff0c;【全部】自动勾选&#xff1b;情况二&#xff1a;下拉选项全都未勾选时&#xff0c;点击【全部】后&#xff0c;所有下拉选项全部勾选&#xff1b;情…

V90伺服驱动器实现一键优化的具体方法

V90伺服驱动器实现一键优化的具体方法 目的:解决运行中震动、异响等问题。 前提条件: 使用一键自动优化的前提:  对于带绝对值编码器的电机:位置限制由p29027决定,至少为180  对于带增量式编码器的电机:在开始优化时必须允许电机有2圈的自由旋转,p29027至少为720 使…

Linux挂载新磁盘到服务器新目录-干货分享

确认磁盘 新建分区 输入m查看帮助&#xff1a; 输入n新建分区&#xff0c;输入p建立分区&#xff08;其他默认将全部空间进行分配&#xff09;&#xff1a; 输入w进行保存 lsblk再次确认分配完成后的新分区&#xff1a; 格式化分区 明确文件系统格式&#xff0c;一般有xf…

十四、Jenkins打包完成后,执行python脚本,将发行包打包压缩上传禅道提交版本

十四、Jenkins打包完成后&#xff0c;执行脚本&#xff0c;将版本发行包压缩上传禅道提交禅道版本 十三、禅道登录/提交版本/编辑版本接口 &#xff0c;书接上回&#xff0c;在禅道中注册一个Jenkins账号&#xff0c;利用禅道的接口&#xff0c;提交到禅道中&#xff0c;具体代…

数据仓库系列:StarRocks 入门培训教程

文章目录 1. 什么是StarRocks?1.1. 适用场景1.2. [产品特性](https://docs.starrocks.io/zh-cn/latest/introduction/Features) 2. 系统架构2.1. 系统架构2.1.1. 整体架构2.1.2. 高可用实现方式 2.2. 数据如何管理&#xff1f; 3. 表模型3.1. 明细模型3.2. 聚合模型3.3. 更新模…

冷链NO.1技能,物流人第一天就应该学会!

储藏室的温湿度是许多行业中的关键因素&#xff0c;如医疗、食品、冷链物流等。确保储藏室内的温湿度在规定的范围内是保护物品品质和价值的关键。 储藏室温湿度远程监控是一项重要的任务&#xff0c;特别适用于需要实时掌握储藏室环境条件的场景。通过远程监控&#xff0c;可以…

凸优化理论基础

目录 一&#xff0c;仿射集 1&#xff0c;仿射集(affine set) 2&#xff0c;仿射组合(affine combination) ​编辑 3&#xff0c;仿射包(affine hull) 二&#xff0c;凸集 1&#xff0c;凸集 2&#xff0c;凸组合 3&#xff0c;凸包(convex hull) 本文部分内容来自网友…

JavaEE(系列22) -- IP协议和以太网

目录 1. IP协议 1.1 协议头格式 1.2 解决IPV4地址不够用的问题 1.3 IP地址管理 1.4 路由选择 2. 以太网 (数据链路层) 1. IP协议 P协议是位于OSI模型中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但IP协议是网络层传输所使用的最主流的一种协议, 有IPv4和IPv6两…

实现旋转切换效果的轮播图。

下面视频是实现后的效果图。具体实现方法可以通过下面链接进行观看 实现旋转切换效果的轮播图。_ღ张明宇࿐的博客-CSDN博客https://blog.csdn.net/zmx781284440/article/details/131466113 旋转切换轮播图

httprunner2.0 概述及使用说明

目录 一、概述 二、系统流程 三、文件组织 1、项目文件目录结构 四、用例编写 1、用例编写 2、编写用例注意事项 五、变量或函数引用 六 环境变量引用 1、编辑.env文件 2、引用环境变量 七、参数化数据驱动 一、概述 HttpRunner是一款面向 HTTP(S) 协议的通用测试…

2023亚马逊云科技中国峰会:如何让AI前景更广阔

今天&#xff0c;2023亚马逊云科技中国峰会的第二天&#xff0c;峰会现场精彩不断绽放&#xff01; 值得关注的是&#xff0c;峰会上&#xff0c;亚马逊云科技大中华区产品总经理陈晓建在《专注创新&#xff0c;摆脱基础架构束缚》主题演讲中提出&#xff0c;云服务是支持数字创…

「UG/NX」BlockUI 树列表(回调函数)

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

如何创建WooCommerce会员网站

Web网站内容货币化的一种非常标准的方法是通过会员社区提供对内容的有限访问。您可以使用 WordPress 的众多付费专区插件之一轻松创建它。有些使用MemberPress或其他顶级 WordPress 会员插件&#xff0c;还有一些使用 WooCommerce。当您想到会员网站时&#xff0c;WooCommerce可…

Tomcat服务器的使用

一。Tomcat的概念 1.服务器 服务器&#xff1a;分为服务器硬件和服务器软件。在硬件服务器&#xff08;其实就是一台计算机&#xff09;上安装了服务器软件&#xff0c;才可以对外提供服务。 1.硬件&#xff1a;通常是指在互联网上具有独立IP的计算机&#xff0c;通常配置比…