当前位置: 首页 > ai >正文

基于STM32的居家环境监测报警Proteus仿真+程序设计+设计报告+讲解视频

基于STM32的居家环境监测仿真设计

(Proteus仿真+程序设计+设计报告+讲解视频)

仿真图Proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0110

基于STM32的居家环境监测仿真设计

  • *1.*主要功能
  • **2.仿真设计**
  • **3.程序设计**
  • **4.设计报告**
  • **5.下载链接**

*1.*主要功能

基于STM32的居家环境监测仿真设计

基于STM32单片机的温湿度烟雾浓度和可燃气体浓度采集报警Proteus仿真设计系统。完成LCD1602液晶显示、DHT11温湿度测量、MQ-2烟雾传感器、MQ-5可燃气体传感器、指示灯、蜂鸣器控制等多项任务。

1、以STM32为最小系统电路进行连接,用LCD1602液晶显示屏显示温度、湿度、温度阈值,湿度阈值和烟雾浓度和煤气浓度。

2、用DHT11温湿度传感器进行温湿度的测量,MQ-2测量烟雾浓度,MQ-5测量可燃气体浓度

3、可以通过按键可以设置温湿度阈值、烟雾和可燃气体报警值。设置按键进入设置模式/退出设置模式,按键加减调整阈值。

4、当温湿度,烟雾,或者可燃气体超过设置的阈值时有声光报警,对应报警指示灯点亮,蜂鸣器报警。

5、默认温度低阈值20℃,高阈值30℃,湿度低阈值50%,湿度高阈值80%,烟雾报警值1000ppm,可燃气体报警值1000ppm。

可燃气体包括煤气天然气

proteus仿真没有没有MQ-2和MQ-5传感器,使用滑动变阻器替代输出AD值

STM32单片机 DHT11 LCD1602 按键 MQ-2烟雾传感器 MQ-5可燃气体传感器

资料下载链接:

通过网盘分享的文件:KEY_C0110

链接: https://pan.baidu.com/s/1D2kup5oTWOXgO7yHGa9rJQ

提取码: 3m6n

2.仿真设计

开始仿真后LCD1602液晶循环显示温湿度和烟雾可燃气体浓度。

img

第一行显示温度T,湿度H,第二行显示温度正常范围,湿度正常范围。

img

第一行显示烟雾浓度单位PPM,可燃气体浓度,第二行显示对应的报警值

调整DHT11温湿度模块温度为39摄氏度,高于阈值,蜂鸣器报警,温度过高指示灯点亮。

img

3.程序设计

程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序是HAL版本编写的,有stm32cubemx配置文件。有注释可以结合讲解视频理解。

img

img

  while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_Delay(20);HAL_ADCEx_Calibration_Start(&hadc1);   //开启adc前校准一下ADCHAL_Delay(100);HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&ADC_Value,3);//开启ADC的DMA,采集的数据直接放入 AD_Buf这个数组里,操作简单。		gas_temp=ADC_Value[0];	//读取ADC1的值gas_temp=(float)gas_temp*(1.0/4095)*10000; 
//		sprintf(adc_str,"lvalue=%d\r\n",temp);sprintf(adc_str,"GAS=%4.0fppm\r\n",gas_temp);HAL_UART_Transmit(&huart1, (uint8_t *)adc_str, strlen(adc_str), 20);//串口1发送字符串,数组长度为strlen(str),超时20msmemset(adc_str,0,strlen(adc_str));//		temp=(float)adcv*(3.3/4095);smoke_temp=ADC_Value[1];smoke_temp=(float)smoke_temp*(1.0/4095)*10000;    sprintf(adc_str,"SMOKE=%4.0fppm\r\n",smoke_temp);HAL_UART_Transmit(&huart1, (uint8_t *)adc_str, strlen(adc_str), 20);//串口1发送字符串,数组长度为strlen(str),超时20ms		memset(adc_str,0,strlen(adc_str));
//MQ-2其检测可燃气体与烟雾的范围是100~10000ppmif(DHT11_Get_TempHumi(&hum_dat, &temp_dat)){//读取失败HAL_UART_Transmit(&huart1, (uint8_t *)&"DHT11 read failed\r\n", 20, 10);						//串口1发送字符串,数组长度为3,超时10ms	} else{//读取正常sprintf(str,"TEMP=%dC\r\n",temp_dat);HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1发送字符串,数组长度为6,超时10ms	sprintf(str,"HUM=%d%%\r\n",hum_dat);HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10);//串口1发送字符串,数组长度为6,超时10ms }	//液晶显示:T温度  H湿度,sprintf(data_str1,"T:%d    H:%d	       ",temp_dat,hum_dat);//转换温度,湿度sprintf(data_str3,"S:%5.0f G:%5.0f	   ",smoke_temp,gas_temp);//转换烟雾 煤气sprintf(data_str4,"WS:%d  WG:%d   ",warm_smoke_temp,warm_gas_temp);//转换烟雾 煤气	if(setnum==0){sprintf(data_str2,"%d--%d %d--%d    ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h);///转换设置温度,设置湿度}if(setnum== 1){sprintf(data_str2,"%d^-%d %d--%d    ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h);///转换设置温度,设置湿度}if(setnum== 2){sprintf(data_str2,"%d--%d^ %d--%d    ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h);///转换设置温度,设置湿度			}if(setnum== 3){sprintf(data_str2,"%d--%d %d^-%d    ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h);///转换设置温度,设置湿度			}if(setnum== 4){sprintf(data_str2,"%d--%d %d--%d^    ",set_temp_dat_l,set_temp_dat,set_hum_dat,set_hum_dat_h);///转换设置温度,设置湿度	}if(setnum== 5){sprintf(data_str4,"WS:%d^  WG:%d   ",warm_smoke_temp,warm_gas_temp);//转换设置烟雾 煤气	}	if(setnum== 6){sprintf(data_str4,"WS:%d WG:%d^   ",warm_smoke_temp,warm_gas_temp);//转换设置烟雾 煤气	}if(setnum==0){//不设置的显示if((disp_turn%2)==0){LCD_ShowString(0,0,data_str1);	//LCD1602显示第一行LCD_ShowString(1,0,data_str2);	//LCD1602显示第二行}else{LCD_ShowString(0,0,data_str3);	//LCD1602显示第三行LCD_ShowString(1,0,data_str4);	//LCD1602显示第四行}}else if(setnum<5){//设置温湿度的显示LCD_ShowString(0,0,data_str1);	//LCD1602显示第一行LCD_ShowString(1,0,data_str2);	//LCD1602显示第二行}else{//设置烟雾的显示LCD_ShowString(0,0,data_str3);	//LCD1602显示第三行LCD_ShowString(1,0,data_str4);	//LCD1602显示第四行}//		sprintf(data_str4,"T:%d  H:%d L:%4.0f  ",temp_dat,hum_dat,gas_temp);//HAL_ADC_Stop(&hadc1);											//停止ADC1	HAL_Delay(500);time_cnt++;if(time_cnt==255)time_cnt=0;if((time_cnt%5)==0){disp_turn++;}//		LCD_ShowString(0,0,data_str1);	//LCD1602显示第一行
//		LCD_ShowString(1,0,data_str2);	//LCD1602显示第二行
//		memset(str,0,strlen(data_str1)); }

程序流程图

img

4.设计报告

13417字设计报告,内容包括设计目标、硬件设计、软件设计、结论等。

img

随着物联网技术的飞速发展与智能终端的广泛普及,环境安全监测已成为构建智慧城市、实现工业4.0转型和保障公共安全的关键技术领域。在智能家居场景中,实时监测厨房燃气泄漏、浴室温湿度异常可有效预防火灾和人员意外;在工业生产环境里,对化工车间可燃气体浓度的精准把控直接关系到生产安全与环保合规;而在公共场所如商场、学校,烟雾浓度的早期预警更是消防安全体系的核心环节。传统环境监测方案普遍存在三大技术瓶颈:其一,单参数独立监测模式导致信息孤岛,无法实现多源数据融合分析;其二,模拟式传感器精度受环境干扰严重,数据校准周期短;其三,报警机制单一,缺乏人机交互界面,导致应急响应滞后。

针对上述行业痛点,本设计提出一种基于STM32F103C6T6微控制器的多模态环境感知与智能决策系统。该方案创新性地将数字温湿度传感器DHT11、电化学型烟雾传感器MQ-2及半导体式可燃气体传感器MQ-5进行有机整合。

5.下载链接

0、常见使用问题及解决方法–必读!!!!

1、程序代码

2、Proteus仿真

3、功能要求

4、开题报告

5、设计报告

6、框图

7、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接:

通过网盘分享的文件:KEY_C0110

链接: https://pan.baidu.com/s/1D2kup5oTWOXgO7yHGa9rJQ

提取码: 3m6n

http://www.xdnf.cn/news/5154.html

相关文章:

  • 利用多AI协作实现AI编辑器高效开发:创新架构与实践基本构想
  • DeepSeek 实现趣味心理测试应用开发教程
  • JAVA自动装箱拆箱
  • 车载电子电器架构 --- 汽车网关概述
  • 【计算机视觉】OpenCV实战项目:Athlete-Pose-Detection 运动员姿态检测系统:基于OpenCV的实时运动分析技术
  • [面试]SoC验证工程师面试常见问题(五)TLM通信篇
  • 引言:Client Hello 为何是 HTTPS 安全的核心?
  • 前端HTMX技术详细解释
  • 第十七次博客打卡
  • AZScreenRecorder最新版:功能强大、操作简便的手机录屏软件
  • 网络编程套接字
  • [白话文] 从百草园RLHF到三味书屋DPO
  • 全栈开发实战:FastAPI + React + MongoDB 构建现代Web应用
  • MCP协议:大模型与外部工具交互的标准化创新方案
  • 从零开始跑通3DGS教程:(四)修改(缩放、空间变换)colmap生成的sfm结果
  • SpringBoot框架开发网络安全科普系统开发实现
  • 分布式事务快速入门
  • 小程序多线程实战
  • 功能齐全的菜谱管理器Tamari
  • [论文阅读]BadPrompt: Backdoor Attacks on Continuous Prompts
  • 23、Next.js:时空传送门——React 19 全栈框架
  • window 显示驱动开发-线性伸缩空间段
  • 简单网络交换、路由二
  • JavaWeb:JDBC
  • 关于ffmpeg的简介和使用总结
  • Kotlin Android LeakCanary内存泄漏检测实战
  • RT-Thread 深入系列 Part 5:物联网与网络应用实战
  • 视觉-语言基础模型作为高效的机器人模仿学习范式
  • 【STM32 学习笔记】I2C通信协议
  • STM32单片机的快速成长路径规划