基于STM32的智慧矿山之矿井安全监控终端的设计与实现

项目源码下载:
https://github.com/wentaoStyle/STM32Project1.git

一、技术参数:
硬件平台为基于Cortex-M3内核的奋斗STM32F103开发板,各传感器模块采用数字化模块,LCD模块采用FSMC接口方式,利用GPIO控制通风装置的开启或关闭,STM32F103与窄带物联网(NB-IoT)模块的接口为USART。

二、设计要求:
具有对矿井温度、湿度、瓦斯浓度及有无人员活动等参数的监测功能,具有瓦斯浓度的超限报警功能;具有自动强制通风功能;能通过LCD屏显示所采集的数据,也支持手动开启通风装置;能通过NB-IoT模块将监测数据和报警信息传送至远程主机。
设计内容与步骤 设计内容:

  1. 调试各传感器模块,编写各模拟量采集处理程序。
  2. 编写鼓风机控制程序。
  3. 调试LCD模块,编写人机接口程序。
  4. 编写通信接口程序。

三、设计步骤:
1. 编写STM32F103和LCD的初始化程序。
2. 调试各传感器模块,编写程序读取各模拟量数值并进行必要的处理。
3. LCD模块的初始化及驱动程序编写,编程实现背景图片及必要的文字信息显示功能。
4. 自行设计人机交互界面,编程实现参数显示功能,根据一定的规则自动控制鼓风机的开启或关闭。
5. 自行设计通信协议,完成NB-IoT模块的通信接口程序。

3.1 需求分析
现在生活的智能化体现在生活的方方面面,其中基于窄带物联网的智慧矿山之矿井安全监控终端通过采集矿山内的环境、设备及人员信息,利用内部网络实现上述各种信息的共享,再由网关负责将这些信息集中转发至互联网中的服务器,用户通过手机或计算机上的浏览器或客户端软件登录服务器便可以实时查看智能矿山内各个子系统的信息,控制家居设备的运行。家居内部网络应能方便地将各种原先不具有通信接口的设备连接至物联网网关,不需要复杂的布线或者购买昂贵的带通信接口的家电。此外,矿山内的设备随时可能增加或减少,应采用具有自组织特性内部网络以适应这种动态变化,方便用户使用及系统的维护。
鉴于智能物联网的大趋势,我们的矿山内设计有一定的意义,自行设计人机交互界面,编程实现参数显示功能,根据一定的规则自动控制鼓风机的开启或关闭。
所以我们要设计的基于窄带物联网的智慧矿山之矿井安全监控终端应具备以下功能:
具有对矿井温度、湿度、瓦斯浓度及有无人员活动等参数的监测功能,具有瓦斯浓度的超限报警功能;具有自动强制通风功能;能通过LCD屏显示所采集的数据,也支持手动开启通风装置;能通过NB-IoT模块将监测数据和报警信息传送至远程主机。

3.2 硬件设计
3.2.1总体结构设计
本系统可以实现电器的无线控制功能,上位机可以实时监测室内的温湿度,并进行相应的操作,接通或断开下位机连接的某一电器的电源,从而实现对插在插排上电暖气、加湿器的控制。上位机通过给下位机发送相应的数据指令,下位机执行相应的动作,并把控制控制后状态数据包发回给上位机。整个系统的设计要求稳定性强,要求下位机能迅速响应收到的指令,并把信息发回,系统正常使用后基本不能出现上位机无法接收数据、无法控制、数据无法正常返回等现象。
该系统硬件部分设计是要求在正常的家庭或室内工作环境下运行,标准温度25摄氏度时采集到的温湿度和室内较准确,偏离标准温湿度后采集到的温湿度会有稍微偏差,对要求精度不高的家庭、公司工作环境不会有太大影响。2个无线收发器模块只要连接在同一局域网内,即可以在任何地方控制电器开关。
系统的温度和湿度由aout HR31湿敏传感器模块采集,由于HR31的特性,需要接在直流5V下,并且至少每隔3秒钟采集一次温湿度,采集到的值才是准确的,所以本系统我们每隔4秒钟采集一次温湿度数字量,将数字量转换为实际温湿度并实时的显示在STM32开发板的液晶屏上,每隔5秒向上位机传送测得的室内当前的温湿度。同时等待上位机发来的命令,开启或者关闭相应的加湿器、电暖气等。

3.2.2 接口设计
在上位机上输入相应的命令,通过点击“发送”来实现控制命令的发送,并有相应的返回信息(失败或成功)显示在上位机界面上。同时下位机STM32上的液晶屏可以实时给人们显示温湿度值。
程序的内部实现,下位机再接收到上位机发送来的信息后进入中断程序,进行数据包的接收,接收完成后通过对比自身定义好的协议内容判断属于什么类型的控制指令,执行相应的控制,控制结束后把控制之后的信息返回给上位机。

3.2.3 各硬件模块设计
此次课程设计是以基于Cortex-M3内核的奋斗STM32F103VE开发板为平台,系统涉及的硬件资源主要有以下几个模块:
3.2.3.1 STM32F103系列最小系统
在这里插入图片描述
图3.2.1 STM32F103系列最小系统图

STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。
在这里插入图片描述

图3.2.2 STM32F103系列内部结构图

STM32F103系列单片机具有两个采用UART工作方式的全双工串行通讯接口(串口1和串口2),每个串行口有两个数据缓冲器、一个移位寄存器、一个串行控制器和一个波特率发生器等组成。每个串行口的数据缓冲器由两个互相独立的接收、发送缓冲器组成。可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出但不能写入,因而两个缓冲器可以共用一个地址码。串行口1的两个缓冲器共用的地址码是99H;串行口2的两个缓冲器共用的地址码是9BH。串行口1的两个缓冲器统称串行通信特殊功能寄存器SBUF;串行口2的两个缓冲器统称串行通信特殊功能寄存器S2BUF。
STM32F103系列单片机的两个串行口都有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不用场合使用。用户可以软件设置不同的波特率和选择不同的工作方式。主机可以通过查询或中断方式接收/发送进行程序处理,使用十分灵活。
STM32F103系列单片机串口1对应的硬件部分是TXD/P3.1和RXD/P3.2引脚,串行口2对应的硬件部分是TXD2和RXD2。通过设置特殊功能寄存器AUXR1中的S2_P4/AUXR1.4位,串行口2功能可以在P1和P4口之间任意切换。当串口2功能在P1口实现时,对应的管脚是P1.2和P1.3.当串行口2功能在P4口实现时对应的管脚是P4.2和P4.3.
STM32F103系列单片机的串行通信口,除用于数据通信外,还可以方便的构成一个或多个并行I/O口,或作串—并转换,或用于扩展串行外设等。
本实验所用到的无线收发器nRF24L01P模块就是通过SPI2与开发板进行连接,进行数据传输的。

3.2.3.2 HR31湿敏传感器

在这里插入图片描述

图3.2.3 HR31湿敏传感器

HR31 温湿度计用新型湿敏电阻是采用有机高分子材料的一种新型湿度敏感元件。其共有4个接口,”+”接入5V的直流电伏,”-”为GND输入,”Aout”和”Dout”分别对应模拟信号输出和TTL信号输出。最左侧白色部件为湿度感应探头,其湿度检测精度为±5%HR
电路板输出 DOUT 开关量可直接接单片机 IO 口,输出 AOUT模拟信号可以直接接 AD 芯片采集转接后输入单片机。该系统要求输出AOUT模拟信号。经过ADC采集最终转换为湿度,AOUT接入的GPIO引脚与对应ADC1通道的关系如下表

表3.1 ADC1通道与GPIO引脚对应关系
在这里插入图片描述

3.2.3.3 HR31湿敏传感器

图3.2-4 人体红外线感应HC-SR501模块
HC-SR501 是一款基于热释电效应的人体热释运动传感器,能检测到人体或者动物上发出的红外线。这个传感器模块可以通过两个旋钮调节检测 3 ~ 7 米的范围,5秒至5分钟的延迟时间,还可以通过跳线来选择单次触发以及重复触发模式
在这里插入图片描述

图3.2-5 人体红外线感应HC-SR501针脚控制图

3.2.3.4 MQ135空气质量传感器模块
在这里插入图片描述

图3.2-5 MQ135空气质量传感器模块
尺寸:32mm X22mm X30mm 长
主要芯片:LM393、MQ135 气体感应探头
工作电压:直流 5V
特点:
1具有信号输出指示灯指示;
2、双路信号输出(模拟量输出及 TTL 电平输出);
3、TTL 输出有效信号为低电平;(输出低电平时信号灯亮,可接单片 机 IO 口) 4、模拟量输出随浓度增加而增加,浓度越高电压越高;
5、对硫化物、苯系蒸汽、烟雾等有害气体具有很高的灵敏度;
6、具有长期的使用寿命和可靠的稳定性;
7、快速的响应恢复特性;
8、带安装孔,方便固定安装;
9、探头可以插拔设计,方便试验
测试主要程序

void delay()//延时程序 
{	 uchar m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) 
for(s=248;s>0;s--); }  
/ void main() {  
while(1)   //无限循环  
{   LED=1;    //熄灭 P1.0 口灯   
if(DOUT==0)//当浓度高于设定值时 ,执行条件函数   
{      delay();//延时抗干扰   
if(DOUT==0)//确定 浓度高于设定值时 ,执行条件函数      
{    LED=0;    //点亮 P1.0 口灯   
}   
}  
}
  

3.3软件设计
3.3.1总体结构设计

为实现“基于窄带物联网的智慧矿山之矿井安全监控终端”所要求的功能,可以将总程序分为5个模块:HR31湿敏传感器采集模块、ADC内部温度传感器采集模块、lcd液晶显示模块、人体红外线感应模块和空气质量检测模块。

3.3.2 各软件模块设计
3.3.3.1 HR31传感器湿度采集

图3.3-4 湿度采集

对DMA1通道、ADC1进行初始化,因为HR31湿度传感器的AOUT与开发板上的GPIOA-7相连,故将PA-7引脚初始化为:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟量 区间
GPIO_Init(GPIOA, &GPIO_InitStructure);

根据表3.1设置与之对应的ADC1通道和采样周期,如下:
ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_55Cycles5);

使用全局变量analog1获取HR31的数字量,然后根据数据手册提供的如下的原理图和湿度曲线求得实际的湿度值。
在这里插入图片描述
图3.3-5 AOUT湿敏传感器原理图

在这里插入图片描述
图3.3-6 阻抗与湿度关系图
3.3.3.2 ADC1内部温度传感器采集温度
温度采集流程与湿度的采集一致,通过DMA通道方式获得stm32内部温度传感器16号通道的数字量,并根据下列公式分别求出对应的电压和当前的温度(其中Vdd、Vdd_convert_value、V25和Avg_Slope等数值可以在电气特性表中查找到)
在这里插入图片描述
随后将求得的实际温度和湿度,作为函数参数传入到液晶屏的显示函数lcd_test中去。

3.3.3.3 lcd数据显示

图3.3-7 湿度采集

Lcd_wr_zf函数的第四个参数表示显示的颜色,范围在0~65535之间,对应16位二进制的RGB(5:6:5)
LCD显示程序主要代码:
void LCD_test(unsigned int temperature,unsigned int humidity)
{

unsigned char *p,*q;
unsigned int finalTem,finalHum;
finalTem = temperature;
finalHum = 	humidity;
//1,2位为起始位置,第三位0表示竖屏,1表示横屏,第四位表示数组模
lcd_DrawPicture(0,0,1,a2);	    	//在某一指定位置显示图片, 图片的尺寸要在240X400范围内。  
 
Delay(0xafffff);

lcd_wr_zf(20,60,80,32,color1,1,zf4);  		//显示温度文字
lcd_wr_zf(20,120,80,32,color1,1,zf5);  		//显示湿度文字
lcd_wr_zf(100,0,280,32,color1,1,zf3);  		//显示班级姓名学号
//往显存送280x32个bit位     	




p=num_pub(finalTem/10);
lcd_wr_zf(90,60,24,32,63489,1,p);  

p=num_pub((finalTem%10));
lcd_wr_zf(114,60,24,32,63489,1,p);  

q=num_pub(finalHum/10);
lcd_wr_zf(90,120,24,32,63489,1,q);  

q=num_pub((finalHum%10));
lcd_wr_zf(114,120,24,32,63489,1,q);


  
lcd_wr_zf(138,60,40,32,color1,1,zf7);  		//显示°C
lcd_wr_zf(138,120,40,32,color1,1,zf8);  		//显示%RH

Delay(0xafffff);			

}

3.4系统集成与功能测试
系统的硬件的连接如下图
在这里插入图片描述
图3.4-1 开发板硬件连接

根据表3.3所示的连接关系将无线收发器nRF24L01P插到开发板的SPI2处,将HR31的“+”连接到5V,“-”接GND,“AOUT”连接至任一GPIO引脚,同时程序中引脚的定义要与之一致,GPIO引脚和ADC通道的对应关系可参考表3.1。

系统设计完成后通过串口调试助手和开发板上的液晶屏对系统进行测试,测试情况截图如所示
在这里插入图片描述

图3.4-4下位机液晶屏

将2片无线收发器nRF24L01P分别插在上位机和下位机,并将下位机与HR31湿敏传感器连接后,下载程序并上电,可发现下位机液晶屏显示如上图的内容。
在这里插入图片描述

图3.4-5 上位机串口显示

在上位机中拷入程序,板子通过USB加电后,先向串口1输出一串测试数据,然后USB被PC设别出来,虚拟出一个串口号给这个USB设备,此时可以通过在PC端的串口助手开启该串口号,可以发现每隔5秒,串口助手上就会显示一条当前的温度、湿度信息,如上图所示。

3.5 系统评价(结果分析)
将HR31温湿度传感器按照程序所规定的与STM32开发板对应GPIO引脚连接, 给开发板上电初始化,开发板能正常工作,在STM32开发板的液晶屏上可以看到实时监测到的室内温湿度。
打开上位机,可以在上位机观察到下位机(即STM32开发板)发来的温湿度数值,上位机能够对指令进行处理, 并在串口调试助手中显示出来。
当有人口经过时,人体红外线模块感应,并在板子上显示出来是否有人进过,同时板子上的指示灯在有人的时候会发生中断,控制相应的开关和熄灭,模拟发出报警。当外界浓度变化时,空气质量传感器检测到浓度变化,并在板子上显示出来。人体红外线传感器和空气质量传感器的检测都是通过高低电平的变化进行检测的,都不太灵敏,有部分误差。
采集得到的温湿度会有一定的误差,误差主要是由于HR31温湿度传感器模块自身测量的精确度引起的,我们的家居环境对温湿度要求没有那么高,误差在人们能够接受的范围之内。

  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值