【毕业设计】基于单片机的火灾报警系统 -stm32 单片机物联网
文章目录
- 1 简介
- 2 设计方案
- 3 实现效果
- 4 外围器件
- 4.1 DS18B20
- 4.2 MQ-2传感器
- 5 部分实现代码
- 6 最后
1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
2 设计方案
1、MCU采用stm32;
2、使用MQ2传感器采集烟雾等有害气体,当检测到有害气体时发声报警,并可以邮件通知用户;
3、使用DS18B20传感器检测环境温度和火焰;
4、采用OLED12864显示屏进行数据显示;
5、可设置传感器阈值,修改检测灵敏度;
3 实现效果
正常状态加不触发报警
当检测烟雾和明火时触发报警
4 外围器件
4.1 DS18B20
单片机采集到的数据
4.2 MQ-2传感器
MQ-2传感器对可燃气、烟雾等气体灵敏度高,基于MQ-2的烟雾传感器模块通过电路设计,提供了两种输出方式:
数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。
模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。
单片机采集数据如下:
5 部分实现代码
#include "stm32f10x_adc.h"
#include "stdlib.h"
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
#include "usart.h"
#include "LED.h"
#include "KEY.h"
#include "ADC.h"
#include "timer.h"
#include "HUO.h"extern u16 k1,k2;
extern u8 an;
int main(void)
{u8 i = 0,t = 0,key_value = 0,fasong = 0,zhuangtai = 0;u16 adcx = 0;u16 adcx_index = 300;u8 huo = 1;u8 huo_flag = 0;u8 string[10] = {0};NVIC_Configuration();delay_init();uart_init(115200); //���ڳ�ʼ��Ϊ115200LED_Init();KEY_Init();HUO_Init();Adc_Init();OLED_Init();OLED_Clear();OLED_ColorTurn(0);//0������ʾ��1 ��ɫ��ʾOLED_DisplayTurn(0);//0������ʾ 1 ��Ļ��ת��ʾfor(i = 0;i<8;i++)OLED_ShowChinese(i*16,16,i,16);//���ܻ��ֱ���ϵͳOLED_Refresh();//������ʾ��OLED delay_ms(999);delay_ms(999); OLED_Clear();
//0for(i = 0;i<6;i++)//����ɼ�ֵ��OLED_ShowChinese(i*16,0,i+18,16);
//16for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16,16,i+18,16);OLED_ShowChinese(16*2,16,26,16);//��for(i = 0;i<2;i++)//ֵ��OLED_ShowChinese(i*16+16*3,16,i+22,16);sprintf((char *)string,"%4d",adcx_index);//0300OLED_ShowString(88,16,string,16);
//32for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16,32,i+24,16);for(i = 0;i<2;i++)//ֵ��OLED_ShowChinese(i*16+16+16,32,i+22,16);for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16+16*4+8,32,i+27,16);OLED_ShowChinese(16*6+8,32,23,16);//��OLED_ShowChinese(16*7,32,30,16);//��
//48for(i = 0;i<2;i++)//��ȫOLED_ShowChinese(i*16+16*3,48,i+33,16);OLED_Refresh();//������ʾ��OLED //TIM3_Int_Init(99,7199);//10Khz�ļ���Ƶ�ʣ�������100Ϊ10ms while(1){key_value = KEY_Scan(0);switch (key_value){case KEY0_PRES:if(adcx_index>100)adcx_index-=200;else adcx_index=500;sprintf((char *)string,"%4d",adcx_index);OLED_ShowString(88,16,string,16);break;case KEY1_PRES:huo_flag =! huo_flag;OLED_ShowChinese(16*7,32,huo_flag?29:30,16);//��/��break;case KEY2_PRES:fasong = !fasong;if(fasong == 1){LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(50);}else {LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(200);LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(50);}break;default:break;}t++;if(t==10){adcx=Get_Adc_Average(ADC_Channel_1,10);sprintf((char *)string,"%4d",adcx);OLED_ShowString(88,0,string,16);huo = HUO_Scan();OLED_ShowNum(56,32,huo,1,16);if(huo_flag == 0){if(adcx <= adcx_index){LED0 = 0;for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16+16*3,48,i+31,16);zhuangtai = 1;}else{LED0 = 1;for(i = 0;i<2;i++)//��ȫOLED_ShowChinese(i*16+16*3,48,i+33,16);zhuangtai = 0;}}else{if((adcx <= adcx_index)&&huo==1){LED0 = 0;for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16+16*3,48,i+31,16);zhuangtai = 1;}else{LED0 = 1;for(i = 0;i<2;i++)//��ȫOLED_ShowChinese(i*16+16*3,48,i+33,16);zhuangtai = 0;}}if(fasong == 1)zhuangtai?printf("1"):printf("0");//printf("����\r\n"):printf("��ȫ\r\n");OLED_Refresh();t=0;}delay_ms(20); }
}
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
6 最后
【毕业设计】基于单片机的火灾报警系统 -stm32 单片机物联网相关推荐
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...
- 跳过51单片机,直接学习STM32单片机怎么样?
经常有学员问:" 跳过51单片机,直接学STM32单片机怎么样?" 武汉华嵌科技的工程师给大家定心丸:"不管C51有没有落后,学习51都是值得的,不会浪费你的时间和精力, ...
- 51开发实例 基于51单片机的火灾报警系统
一.系统设计 通过MQ-2烟雾检测系统完成烟雾浓度检测,通过LCD1602显示屏显示烟雾浓度值,通过按键设定烟雾浓度阈值,当检测到烟雾浓度超过阈值时就会控制蜂鸣器进行报警.通过MQ-2烟雾检测模块采集 ...
- STM32单片机(三).STM32单片机的开发方法
经过前两章节对STM32的简单介绍,在接下来的几个章节中开始进行STM32单片机的软件开发实践,所使用到的工具有Keil5.STM32CubeMX以及串口软件.对于STM32F1系列的单片机,其存储器 ...
- 基于51单片机的火灾报警系统温度烟雾浓度阈值报警proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 .LCD1602液晶实时显示当前温度和烟雾浓度 2.超过温度阈值和烟雾浓度阈值,蜂鸣器报警 3.按键可更改温度阈值和烟雾浓度阈值 4.采用DC002作 ...
- 毕业设计 单片机森林火灾监控防护预警系统 - 物联网 嵌入式
文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 SIM800L模块的工作原理 基于物联网的森林火灾探测系统框图 Arduino火灾检测系统的电路图 5 软件说明 用于基于物联网 ...
- 【毕业设计】病房无线呼叫系统 - stm32 单片机 物联网 嵌入式
文章目录 1 简介 2 绪论 2.1 课题背景 3 系统设计 3.1 系统架构 3.2 主程序设计 3.3 语音模块程序设计 3.4 显示模块程序设计 3.5 键盘模块程序设计 3.6 无线传输模块程 ...
- 单片机驱动android屏幕,STM32单片机对智能手机触摸屏的驱动
描述 由于智能手机的发展和大屏幕的兴起,触摸屏已经得到了广泛的应用.触摸屏分为两种:电阻触屏 俗称"软屏":电容触屏俗称"硬屏". 电阻触摸屏的屏体部分是一块多 ...
- 毕业设计-基于深度学习火灾烟雾检测识别系统-yolo
前言
- 毕业设计基于OpenMV的火灾检测及人员搜寻智能车
0 前言
最新文章
- 如何提高在家办公的效率?
- 打印机如何信任计算机,小技巧,骗取打印机的信任
- 温州大学《机器学习》课程课件(十一、降维)
- Spring自动扫描组件
- 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录
- 【关键词提取】第二篇:数据集、实现代码介绍
- Subversion服务器搭建 (安装步骤)
- ceph cluster monitor
- JavaScript·函数
- maven 手动安装ojdbc7
- openpyxl 添加分页符
- 人的命,三分天注定,七分靠打拼,有梦就会红,爱拼才会赢
- Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
- [codevs1746][NOI2002]贪吃的九头龙
- python饿了么商家开放平台模拟网页http请求实战
- 华晨宏盛让理财更有实用性的小窍门有哪些?最好的理财方法有哪些
- 英译汉文章在线翻译器:批量翻译、素材收集、图片处理
- 分类计数原理与分步计数原理_分类or分步?计数原理别再傻傻分不清~
- python3入门笔记
- 猿创征文|《Java》关键字大全-小结
热门文章
- 黑苹果E430c, 安装过程
- 解决IE上登陆oracle OEM时报:“证书错误,导航已阻止”的错误
- BZOJ4199: [Noi2015]品酒大会
- vs2012 +WP8sdk 开发WP8应用
- wp8.1 java_巨硬的内部比较——WP8.1版本与WP10系统对比(以lumia640为例)
- Java实现 LeetCode 134 加油站
- canvas文字粒子动画js特效
- 苏州大学 软件工程基础
- 线程的发展史,调度策略、适用范围、特点,进程与线程的区别、线程的属性、posix线程库
- oracle条件索引查询,Oracle复合索引用于范围查询条件