技术标签: stm32 毕业设计 物联网 火灾报警系统 单片机
Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
1、MCU采用stm32;
2、使用MQ2传感器采集烟雾等有害气体,当检测到有害气体时发声报警,并可以邮件通知用户;
3、使用DS18B20传感器检测环境温度和火焰;
4、采用OLED12864显示屏进行数据显示;
5、可设置传感器阈值,修改检测灵敏度;
正常状态加不触发报警
当检测烟雾和明火时触发报警
单片机采集到的数据
MQ-2传感器对可燃气、烟雾等气体灵敏度高,基于MQ-2的烟雾传感器模块通过电路设计,提供了两种输出方式:
数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。
模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。
单片机采集数据如下:
#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); //���ڳ�ʼ��Ϊ115200
LED_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();
//0
for(i = 0;i<6;i++)//����ɼ�ֵ��
OLED_ShowChinese(i*16,0,i+18,16);
//16
for(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);//0300
OLED_ShowString(88,16,string,16);
//32
for(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);//��
//48
for(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
文章浏览阅读1k次。这个问题是应用中比较常见的一个问题了。尤其是对于静态文件,一般而言在nginx中会利用error_page指令对一些错误吗指定错误页。此时,如果请求命中了改规则,就会跳转的响应的页面。比如:error_page 400 404 500 'http://xxx.error.html';上述的命令会导致302或301跳转。 一般的网站为了节省流量或者提高响..._nginx 404 转302
文章浏览阅读254次。Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:./configure –with-http_stub_status_module 这个模块如果需要也可以加入######################### 下面是 lua模块unkno..._unknown directive "access_by_lua
文章浏览阅读1.1k次,点赞8次,收藏11次。大模型下载速度较快的方式,huggingface,modelscope_modelscope下载 huggingface
文章浏览阅读4.3w次,点赞9次,收藏15次。Mavne依赖<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version></dependency>G_gson maven依赖
文章浏览阅读2.7k次,点赞2次,收藏15次。幼体的生长速度生长速度受到食物供应的影响。在食物供应较少的环境中、生长速度就会降低,雄性海灯鱼的比例可达到78%左右。在食物更容易获得的环境中,雄性的百分比据观察,雄性约占种群的56%。尽管许多物种在出生时的性别比例为1:1,但其他物种物种则偏离了均匀的性别比例。例如美洲鳄孵卵巢的温度会影响其出生时的性别比例。我们的任务是研究一个物种能够根据资源供应情况改变性别比例的利弊。灯鱼的作用十分复杂。而在世界上的一些地区,如斯堪的纳维亚半岛、波罗的海地区,以及太平洋地区的一些土著居民眼中,灯鱼也是一种食物来源。_2024年美赛a题
文章浏览阅读1.5w次。ntpd服务状态及日志查询方式1.检查服务器时间同步运行状态和ntpd服务运行情况ntpd服务监听upd 123端口netstat -anp | grep udp1-2.检查服务器NTP状态ntpstat1-3、检查端口监听正常后,继续查询ntpd的运行日志和同步状态查看 ntp_servers 状态,通常ECS服务器的时钟源是指向OPS主机。ntpq -p代表时间服务器正在同步的时钟源服务器代表可以接受作为时钟源的服务器? 代表时间服务器不可达说明除了* , + 所代表的_ntpd日志
文章浏览阅读424次。白色:表示对象未被垃圾收集器访问过,这是可达性分析开始的阶段,所有的对象都是白色,如果分析结束阶段,还是白色,即代表不可达。灰色:表示对象被垃圾收集器访问过,但是至少还有一个引用没有被扫描过。黑色:表示对象已被垃圾收集器访问过了,并且这个对象所有对象都被扫描过了,它是安全存活的,如果有其它对象引用指向了黑色对象,无须重新扫描一遍。黑色对象不可能直接指向某个白色对象。
文章浏览阅读291次。应用场景:在项目中,通常会遇到防火阀、调节阀、铝合金风口等材料,已知其规格尺寸,需要通过计算公式,得出其价格,如下表所示。在品茗胜算软件里,在“工料汇总”界面调用我材助手,找到对应材料,点击“风阀风口”,软件内置了计算公式,自动读取规格尺寸,自动算出价格,点击“应用价格”,价格就直接应用到项目中了,省去了翻找公式、敲计算器的时间。当然也可以点击“扫描件”,调出当期这些材料的计算公式。如果..._品茗计价中风口信息价换算在哪里
文章浏览阅读108次。前言:SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应 SOLID 中的 S、O、L、I、D 这 5 个英文字母。一、单一职责原则(SRP) 单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。一个类或者模块只负责完成一个职责(或者功能)。单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。单一职责原则通过..._设计模式第二章完整代码
文章浏览阅读3.3k次,点赞2次,收藏8次。好久没更新了 这个问题我遇到了两次,一次是腾讯云服务器上,一次是我的电脑上,都是安装后点mysql-workbench没有任何反应。网上别的解决方案我就不说了,要是好使你们也不会找到这里。**很简单!你们首先去mysql-workbench得安装目的地哪里,找到这个东西**双击它!看看是不是这个结果然后去下载这个.dll文件之后把这个文件放到C:\Windows\System32 ..._workbench双击无反应
文章浏览阅读379次。spoj8222 Substrings题意:f[x]表示所有长度为 x 的子串中,出现次数的最大值。求所有f[x]方法:建立SAM,根据拓扑序找到长度为 x 的子串个数,更新一下就行了#include <stdio.h>#include <string.h>#define N 250010char str[N];int root,cnt=0,n,last..._spoj 8222
文章浏览阅读1.1k次。ERP系统之比较——SAP Oracle BAAN JDE SSA_jjdssap