文章目录

  • 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 单片机物联网相关推荐

  1. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  2. 跳过51单片机,直接学习STM32单片机怎么样?

    经常有学员问:" 跳过51单片机,直接学STM32单片机怎么样?" 武汉华嵌科技的工程师给大家定心丸:"不管C51有没有落后,学习51都是值得的,不会浪费你的时间和精力, ...

  3. 51开发实例 基于51单片机的火灾报警系统

    一.系统设计 通过MQ-2烟雾检测系统完成烟雾浓度检测,通过LCD1602显示屏显示烟雾浓度值,通过按键设定烟雾浓度阈值,当检测到烟雾浓度超过阈值时就会控制蜂鸣器进行报警.通过MQ-2烟雾检测模块采集 ...

  4. STM32单片机(三).STM32单片机的开发方法

    经过前两章节对STM32的简单介绍,在接下来的几个章节中开始进行STM32单片机的软件开发实践,所使用到的工具有Keil5.STM32CubeMX以及串口软件.对于STM32F1系列的单片机,其存储器 ...

  5. 基于51单片机的火灾报警系统温度烟雾浓度阈值报警proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 .LCD1602液晶实时显示当前温度和烟雾浓度 2.超过温度阈值和烟雾浓度阈值,蜂鸣器报警 3.按键可更改温度阈值和烟雾浓度阈值 4.采用DC002作 ...

  6. 毕业设计 单片机森林火灾监控防护预警系统 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 SIM800L模块的工作原理 基于物联网的森林火灾探测系统框图 Arduino火灾检测系统的电路图 5 软件说明 用于基于物联网 ...

  7. 【毕业设计】病房无线呼叫系统 - stm32 单片机 物联网 嵌入式

    文章目录 1 简介 2 绪论 2.1 课题背景 3 系统设计 3.1 系统架构 3.2 主程序设计 3.3 语音模块程序设计 3.4 显示模块程序设计 3.5 键盘模块程序设计 3.6 无线传输模块程 ...

  8. 单片机驱动android屏幕,STM32单片机对智能手机触摸屏的驱动

    描述 由于智能手机的发展和大屏幕的兴起,触摸屏已经得到了广泛的应用.触摸屏分为两种:电阻触屏 俗称"软屏":电容触屏俗称"硬屏". 电阻触摸屏的屏体部分是一块多 ...

  9. 毕业设计-基于深度学习火灾烟雾检测识别系统-yolo

    前言

  10. 毕业设计基于OpenMV的火灾检测及人员搜寻智能车

    0 前言

最新文章

  1. 如何提高在家办公的效率?
  2. 打印机如何信任计算机,小技巧,骗取打印机的信任
  3. 温州大学《机器学习》课程课件(十一、降维)
  4. Spring自动扫描组件
  5. 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录
  6. 【关键词提取】第二篇:数据集、实现代码介绍
  7. Subversion服务器搭建 (安装步骤)
  8. ceph cluster monitor
  9. JavaScript·函数
  10. maven 手动安装ojdbc7
  11. openpyxl 添加分页符
  12. 人的命,三分天注定,七分靠打拼,有梦就会红,爱拼才会赢
  13. Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
  14. [codevs1746][NOI2002]贪吃的九头龙
  15. python饿了么商家开放平台模拟网页http请求实战
  16. 华晨宏盛让理财更有实用性的小窍门有哪些?最好的理财方法有哪些
  17. 英译汉文章在线翻译器:批量翻译、素材收集、图片处理
  18. 分类计数原理与分步计数原理_分类or分步?计数原理别再傻傻分不清~
  19. python3入门笔记
  20. 猿创征文|《Java》关键字大全-小结

热门文章

  1. 黑苹果E430c, 安装过程
  2. 解决IE上登陆oracle OEM时报:“证书错误,导航已阻止”的错误
  3. BZOJ4199: [Noi2015]品酒大会
  4. vs2012 +WP8sdk 开发WP8应用
  5. wp8.1 java_巨硬的内部比较——WP8.1版本与WP10系统对比(以lumia640为例)
  6. Java实现 LeetCode 134 加油站
  7. canvas文字粒子动画js特效
  8. 苏州大学 软件工程基础
  9. 线程的发展史,调度策略、适用范围、特点,进程与线程的区别、线程的属性、posix线程库
  10. oracle条件索引查询,Oracle复合索引用于范围查询条件