0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32项目分享:矿井环境监测系统

机智云 ? 2025-08-16 10:03 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

项目成品图片:


2f7aeeec-7a45-11f0-9080-92fbcf53809c.jpg


01

项目简介


1.功能详解


STM32矿井环境监测系统

功能如下:


STM32F103C8T6单片机作为主控制器

DS18B20测量环境温度,当温度不在设置的上下限,则声光报警

PM2.5传感器测量粉尘浓度,当浓度大于设定最大值,则声光报警,并自动喷雾

可通过按键设置各阈值

通过OLED显示屏显示测量值

通过蓝牙手机端接收数据,保存数据,手机端可远程开关喷雾



2.材料清单

STM32F103C8T6单片机

OLED 屏幕

DS18B20温度传感器

粉尘传感器

BT04A蓝牙模块

继电器

有源蜂鸣器

加湿器


02


原理图设计


2f8f9e50-7a45-11f0-9080-92fbcf53809c.png


03


PCB硬件设计


PCB图

2fa8966c-7a45-11f0-9080-92fbcf53809c.png2fc07d86-7a45-11f0-9080-92fbcf53809c.png


04

程序设计

#include"sys.h"#include"stdio.h"#include"string.h"#include"stdlib.h"#include"math.h"#include"delay.h"#include"gpio.h"#include"key.h"#include"oled.h"#include"usart.h"#include"adc.h"#include"pm25.h"#include"ds18b20.h"

/**********************************变量定义**********************************/uint8_tkey_num =0;//按键扫描标志位uint8_tflag_display =0;//显示界面标志位uint32_ttime_num =0;//10ms计时short temp_value =0;//温度值u16 temp_max =40; //温度最大值u16 temp_min =10;//温度最小值u16 pm25_value =0; //粉尘值u16 pm25_max =200; //粉尘最大值_Bool flag_mode =0;//模式标志位externuint8_tusart1_buf[256];//串口1接收数组chardisplay_buf[32];//显示缓存区/**********************************函数声明**********************************/voidKey_function(void);//按键函数voidMonitor_function(void);//监测函数voidDisplay_function(void);//显示函数voidManage_function(void);//处理函数

/***********主函数*****/intmain(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置中断优先分组Delay_Init(); //延时初始化 Gpio_Init(); //IO初始化Key_Init(); //按键初始化Oled_Init(); //OLED初始化Oled_Clear_All();//清屏Usart1_Init(9600); //串口1初始化
PM25_Init();//PM2.5初始化Adc_Init();//ADC初始化DS18B20_Init();//w温度初始化while(1){Key_function();//按键函数Monitor_function();//监测函数Display_function();//显示函数Manage_function();//处理函数
time_num++;//计时变量+1Delay_ms(10);if(time_num %10==0)LED_SYS = ~LED_SYS;if(time_num >=5000){time_num =0;}}}
/***********按键函数*****/voidKey_function(void){key_num =Chiclet_Keyboard_Scan(0);//按键扫描if(key_num !=0)//有按键按下{switch(key_num){case1: //按键1,切换设置界面flag_display++;if(flag_display >=4)flag_display =0;
Oled_Clear_All(); //清屏break;
case2: //按键2switch(flag_display){case0: //界面0:
break;
case1://界面1:温度最大值+1if(temp_max case2://界面2:温度最小值+1if(temp_min < temp_max-1)temp_min++;break;
case3://界面3:if(pm25_max default:break;}break;
case3://按键3switch(flag_display){case0: //界面0:
break;
case1://界面1:温度最大值-1if(temp_max > temp_min+1)temp_max--;break;
case2://界面2:温度最小值-1if(temp_min >0)temp_min--;break;
case3://界面3:if(pm25_max >0)pm25_max--;break;
default:break;}break;
default:
break;}}}
/***********监测函数*****/voidMonitor_function(void){if(flag_display ==0)//测量界面{
pm25_value =Pm25_Get_Value(3);//获取PM2.5temp_value =DS18B20_Get_Temp();

if(time_num %30==0)//发送数据{UsartPrintf(USART1,"温度:%d.%dC\r\n",temp_value/10,temp_value%10);UsartPrintf(USART1,"粉尘:%dppm\r\n",pm25_value);}
if(USART1_WaitRecive() ==0)//如果接收到蓝牙数据{switch(usart1_buf[0]){case('A')://A:切换自动模式flag_mode =0;break;
case('B')://B:RELAY_JS = ~RELAY_JS;flag_mode =1;break;

default:
break;}USART1_Clear();}}}
/***********显示函数*****/voidDisplay_function(void){switch(flag_display)//根据不同的显示模式标志位,显示不同的界面{case0: //界面0:Oled_ShowCHinese(1,0,"温度:");sprintf(display_buf,"%d.%dC ",temp_value/10,temp_value%10);Oled_ShowString(1,6, display_buf);Oled_ShowCHinese(2,0,"粉尘:");sprintf(display_buf,"%dppm ",pm25_value);Oled_ShowString(2,6, display_buf);if(flag_mode ==0)//显示模式Oled_ShowCHinese(3,0,"模式:自动");elseOled_ShowCHinese(3,0,"模式:手动");break;
case1://界面1:显示设置温度最大值Oled_ShowCHinese(1,0,"设置温度最大值");if(time_num %5==0){sprintf(display_buf,"%d ",temp_max);Oled_ShowString(2,6, display_buf);}if(time_num %10==0){Oled_ShowString(2,6," ");}break;
case2://界面2:显示设置温度最小值Oled_ShowCHinese(1,0,"设置温度最小值");if(time_num %5==0){sprintf(display_buf,"%d ",temp_min);Oled_ShowString(2,6, display_buf);}if(time_num %10==0){Oled_ShowString(2,6," ");}break;
case3://界面3:Oled_ShowCHinese(1,0,"设置粉尘最大值");if(time_num %5==0){sprintf(display_buf,"%d ",pm25_max);Oled_ShowString(2,7, display_buf);}if(time_num %10==0){Oled_ShowString(2,7," ");}break;
default:
break;}}
/***********处理函数*****/voidManage_function(void){if(flag_display ==0) //测量界面{if(flag_mode ==0){if(pm25_value > pm25_max || temp_value > temp_max*10|| temp_value < temp_min*10)?//声光报警{if(time_num %?3?==?0){BEEP =~BEEP;LED =~ LED;}}else{BEEP =?0;LED =?1;}
if(pm25_value > pm25_max){RELAY_JS =1;}else{RELAY_JS =0;}}}else //设置界面{RELAY_JS =0;BEEP =0;LED =1;}}


05

实验效果

2fcf7c3c-7a45-11f0-9080-92fbcf53809c.jpg2fe11fdc-7a45-11f0-9080-92fbcf53809c.jpg


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17255

    浏览量

    185486
  • 矿井
    +关注

    关注

    0

    文章

    15

    浏览量

    11462
  • STM32
    +关注

    关注

    2296

    文章

    11039

    浏览量

    366714
  • 监测系统
    +关注

    关注

    8

    文章

    2916

    浏览量

    82703
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在米尔-STM32MP257开发板上实现环境监测系统

    论坛参与的一个项目:Thingy:91X蜂窝物联网原型开发平台的试用。把两个项目结合起来,实现一个简单的环境监测系统。二、硬件平台1、米尔-STM3
    的头像 发表于 04-17 08:06 ?1888次阅读
    如何在米尔-<b class='flag-5'>STM32</b>MP257开发板上实现<b class='flag-5'>环境监测</b><b class='flag-5'>系统</b>

    基于 ARM 的环境监测系统的设计与实现

    #基于 ARM 的环境监测系统的设计与实现#这是我的课程设计题目,在下是学生,跪求大神指教,我到底该怎么入手
    发表于 12-08 22:25

    诚接stm32项目

    诚接stm32项目价格私聊
    发表于 05-17 10:20

    无线传感器网络怎么助力矿井环境监测

    矿井环境监测中通常需要对矿井风速、矿尘、一氧化碳、温度、湿度、氧气、硫化氢和二氧化碳等参数进行检测。现有的监控检测系统需要在矿井内设通信线
    发表于 09-02 07:19

    无线环境监测系统怎么实现?

    目前,我国环境监测设备已经有了长足的发展,例如应用卫星遥感技术进行环境监测,采用GPRS系统对地下水监测等,各种环境采样器也更加精确。但是大
    发表于 03-10 06:32

    14个环境监测系统设计案例

    工作的前提。随着现代科学技术的发展,环境监测越来越趋于智能化,无线传感网络、微波辐射技术、ZigBee等技术都被运用到环境检测中来。本文就将为大家介绍一些基于现代技术的环境监测系统的设
    发表于 04-26 09:16

    智能环境监测系统设计

    智能环境监测系统设计,本系统设计是从低成本、低功耗、高效率等概念出发,采用32位单片机STM32F103C8T6为处理核心,在数据采集节点端控制一系列的传感器(如DS18B20、DHT
    发表于 08-09 06:48

    如何去实现一种基于WiFi和STM32的家居环境监测系统设计

    如何去实现一种基于WiFi和STM32的家居环境监测系统设计?怎样去设计家居环境监测系统的硬件平台与软件部分?
    发表于 09-24 07:47

    基于单片机的稻田环境监测系统具有哪些功能

    、土壤湿度以及光照度,并发送给主机显示2、继电器1:土壤湿度过低打开水泵继电器2:温度过低加热继电器3:光照度过低开灯标签:STM32单片机、土壤监测、zigbee、远程监测题目扩展:土壤浇灌
    发表于 12-08 08:28

    关于环境监测设备中AD7091R的时序问题

    近期笔者的项目团队收到了客户提出的关于环境监测设备中AD7091R的时序问题。针对此问题,笔者首先需要解释环境监测设备的功能和特点,然后再对上述问题进行解析。环境监测设备的特点:
    发表于 01-12 06:57

    CubeMX如何创建stm32项目

    CubeMX如何创建stm32项目
    发表于 02-14 06:24

    STM32项目分享:智能家居(机智云)系统

    STM32项目分享:智能家居(机智云)系统
    的头像 发表于 07-28 08:10 ?3475次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>项目</b>分享:智能家居(机智云)<b class='flag-5'>系统</b>

    基于STM32单片机矿井矿工作业安全监测设计

    项目设计一个基于STM32单片机的矿井作业安全监测系统。该系统能够实时
    的头像 发表于 01-17 16:45 ?1021次阅读

    基于STM32设计的仓库环境监测与预警系统

    项目基于STM32微控制器设计一个环境监测与预警系统,具备温湿度监测、气体检测、墙壁水汽检测、蜂鸣器报警、通风控制等功能,支持数据上传至华
    的头像 发表于 03-05 13:11 ?1025次阅读
    基于<b class='flag-5'>STM32</b>设计的仓库<b class='flag-5'>环境监测</b>与预警<b class='flag-5'>系统</b>

    STM32项目分享:室内无线控制系统

    01—项目简介1.功能详解STM32室内无线控制系统功能如下:环境监测:温湿度、光照信息实时监测并在OLED上显示防盗报警:当有人闯
    的头像 发表于 05-27 18:04 ?453次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>项目</b>分享:室内无线控制<b class='flag-5'>系统</b>