首页 > 其他分享 >有毒环境气体监测系统(嘉立创支持)

有毒环境气体监测系统(嘉立创支持)

时间:2024-07-18 09:54:28浏览次数:7  
标签:InitStruct 有毒 嘉立 ADC ADC1 GPIO 监测 RCC

有毒环境气体监测系统

随着物联网技术的飞速发展,智能监测系统在环境安全领域扮演着越来越重要的角色。本文将详细介绍我们最近完成的一个项目:有毒环境气体监测系统。该系统不仅能够实时监测和记录气体浓度、温度和湿度等环境参数,还能通过物联网技术实现数据的远程传输和共享。

项目背景与意义

目的: 本研究旨在深入探讨有毒环境气体监测系统的核心技术、工作原理及应用情况,分析其存在的问题与不足,并提出相应的优化和改进措施。通过本研究,我们期望能够提升有毒环境气体监测系统的性能,为环境安全监测提供更加准确、高效的技术支持。

意义:

  1. 提升环境安全监测水平: 有毒环境气体监测系统作为环境安全监测的重要工具,其性能的提升将直接提高环境安全监测的准确性和时效性,有助于及时发现和处理潜在的环境安全风险。
  2. 保障人员健康与生命安全: 通过对有毒气体的实时监测和预警,本研究旨在减少中毒事故、火灾爆炸等事件的发生,从而保障人员的健康与生命安全。
  3. 促进工业生产安全: 在工业生产过程中,有毒气体的泄漏和排放是常见的安全隐患。本研究将为工业生产提供更为可靠的气体监测手段,促进生产安全水平的提高。
  4. 推动技术进步与创新: 本研究不仅关注现有系统的优化和改进,还积极探索新技术、新方法在有毒环境气体监测中的应用。这将有助于推动相关技术的进步与创新,为环境安全监测领域的发展注入新的活力。
项目功能

本项目应用模拟电路和数字电路设计气体浓度、温度和湿度探测器,将非电量信号转换成线性输出的电压信号;运用模数转换芯片完成转换;以单片机为微控制器,完成数据采集的硬件电路设计;利用无线数据通信模块实现数据的远程传输。相较于市面上成熟的产品,该成品具有更低的成本,更小的体积。平常在家时放置在桌面上,可实时对家中环境参数进行检测上至MQTT服务器,通过对服务器的访问最终显示到屏幕上。外出时,更小的体积方便携带,可离线检测周围环境参数。该成品具有低功耗特点,在休眠状态下输入电流只有10uA,搭配3000mA/h大容量电池可实现超长时间待机。在正常工作下,也可使用长达数月。

项目成果

数据上传与发布: ESP32-WROOM的WiFi功能在本研究中发挥了关键作用。我们利用ESP32-WROOM的内置WiFi模块,实现了与MQTT服务器的连接和数据上传。通过配置MQTT服务器的相关参数,我们成功将采集到的气体浓度数据发布到指定的主题中。这样,每个订阅了该主题的用户都能够实时接收到最新的数据,实现了数据的实时共享和监控。

系统稳定性与可靠性: 为了确保系统的稳定性和可靠性,我们采用了多种措施进行优化。首先,在硬件设计方面,我们选用了高质量的元器件和合理的电路布局,减少了干扰和噪声的影响。其次,在软件设计方面,我们采用了高效的数据处理算法和通信协议,提高了数据传输的速度和稳定性。此外,我们还对系统进行了长时间的稳定性和可靠性测试,确保系统能够在各种环境条件下稳定运行。

用户友好性与可扩展性: 本研究注重用户体验和系统的可扩展性。我们设计了简洁明了的用户界面,方便用户查看数据和进行操作。同时,系统还具备可扩展性,可以根据用户需求添加更多的传感器和功能模块,实现更广泛的应用场景。

设计原理
  1. 数据采集单元: 以STM32F103C8T6单片机为微控制器,设计数据采集单元,实现对有毒气浓度的采集。
    烟雾传感器:
    在这里插入图片描述

  2. 数据传输: 采用ESP32-12F模块连接MQTT服务器,可实时上传数据进行监测和记录,便于追溯。

在这里插入图片描述4. 多功能集成: 加入温湿度检测、下行天气预报的接收、串口屏显示以及报警的功能,使其具有完备的环境数据监测能力。用户可通过显示屏或云端数据判断气象状况以及空气质量,是否适宜外出活动或环境安全状态,适用于室内室外,工业等多种环境使用。
在这里插入图片描述
1.开时钟,分频,配IO
该模块使用的引脚为PC1/ADC123_IN11,所以接下来我们要配置PC1。
烟雾检测模块是获得一个模拟量,所以接引脚模式配置为模拟输入。
代码如下:

	//开时钟ADC1和PC
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);
	RCC_ADCCLKConfig(RCC_PCLK2_Div6); 
	//配置GPIO口
	GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//MQ2
    GPIO_Init(GPIOC, &GPIO_InitStructure);

2.配置ADC的工作模式
和光照检测一样,直接改成库函数就行。
代码如下(示例):

	ADC_InitTypeDef ADC_InitStruct={0};  //
	ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//ADC独立模式
	ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐
	ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//选择软件SWSTART位触发
	ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//连续还是单次模式
	ADC_InitStruct.ADC_ScanConvMode = DISABLE;//关闭扫描
	ADC_InitStruct.ADC_NbrOfChannel = 1;
	ADC_Init(ADC1,&ADC_InitStruct);
	ADC_Cmd(ADC1, ENABLE);

3.配置通道
这里使用库函数编写就很简单了,直接一个函数就解决了。
输入参数 1 ADCx:x 可以是 1 或者 2 来选择 ADC 外设 ADC1 或 ADC2
输入参数 2 ADC_Channel:被设置的 ADC 通道
输入参数 3 Rank:规则组采样顺序。取值范围 1 到 16。
输入参数 4 ADC_SampleTime:指定 ADC 通道的采样时间值

ADC_RegularChannelConfig(ADC1, ADC_Channel_11,1, ADC_SampleTime_239Cycles5);

4.复位,AD校准
没什么好说的,该部分可有可无,想严谨点的话就加上。

	ADC_ResetCalibration(ADC1);//复位
	  while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);//AD校准
	  while(ADC_GetCalibrationStatus(ADC1));	

5.数值的获取
依旧是先转换一次,再while等待转换完成,最后读取打印。

void Get_Smoke_Value()
{
	uint16_t Smoke=0;
	//让规则通道转换一次
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);
	//ADC1->CR2 |= 0x01<<22;
	while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == 0)//判断寄存器的位2是不是等于1,是0就等待转换完成
	{}
	Smoke = ADC_GetConversionValue(ADC1); //读规则组通道数据寄存器
	printf("烟雾浓度参数 = %d \r\n",Smoke);		
	return; 
}

需求实现
关键代码如下:
main.c

#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"
#include "delay.h"
#include "string.h"
#include "pwm.h"
#include "adc.h"

int main()
{
	  NVIC_SetPriorityGrouping(5);//两位抢占两位次级
      Usart1_Config(); 
	  SysTick_Config(72000);
	  RGBpwm_Config();
	  uint8_t cai_count=0;
	  uint16_t cont=0;
	  Adc_Config();
    while(1)
    {	
			if(ledcnt[0]>=ledcnt[1]){//过去500ms
			ledcnt[0]=0;
					Get_Smoke_Value();
			}
    }
		
		return 0;
}


adc.c

#include "ADC.h"
//库函数
void Adc_Config(void)
{
	//开时钟ADC1和PC,PA
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);
	RCC_ADCCLKConfig(RCC_PCLK2_Div6); 
	//配置GPIO口
	GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//MQ2
    GPIO_Init(GPIOC, &GPIO_InitStructure);
	//配置ADC1
	ADC_InitTypeDef ADC_InitStruct={0};  //
	ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//ADC独立模式
	ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐
	ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//选择软件SWSTART位触发
	ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//连续还是单次模式
	ADC_InitStruct.ADC_ScanConvMode = DISABLE;//关闭扫描
	ADC_InitStruct.ADC_NbrOfChannel = 1;
	ADC_Init(ADC1,&ADC_InitStruct);
	ADC_Cmd(ADC1, ENABLE);
	//配置通道
	ADC_RegularChannelConfig(ADC1, ADC_Channel_11,1,  ADC_SampleTime_239Cycles5);
	//校准
	ADC_ResetCalibration(ADC1);
	  while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
		while(ADC_GetCalibrationStatus(ADC1));	

}

void Get_Smoke_Value()
{
	uint16_t Smoke=0;
	//让规则通道转换一次
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);
	//ADC1->CR2 |= 0x01<<22;
	while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == 0)//判断寄存器的位2是不是等于1,是0就等待转换完成
	{}
	Smoke = ADC_GetConversionValue(ADC1); //读规则组通道数据寄存器
	printf("烟雾浓度参数 = %d \r\n",Smoke);
		
	return; 
}


adc.h

#ifndef _ADC_H_
#define _ADC_H_
#include "stm32f10x.h"
#include "stdio.h"
void Get_Smoke_Value();
void Adc_Config(void);
#endif

标签:InitStruct,有毒,嘉立,ADC,ADC1,GPIO,监测,RCC
From: https://blog.csdn.net/qq_51182593/article/details/140514063

相关文章

  • 嘉立创暑期训练营——温湿度检测仪
    1.引言        本次暑假参加了立创EDA的训练营,在备战电赛的同时完成了训练营的基本内容,在于锻炼自己的能力。 2.原理图和PCB        闲话少续,直接上正片。原理图 PCB 原理图和PCB都可以按照立创EDA的教程。连接我就放在这了:https://www.bili......
  • GNSS位移监测站
    TH-WY1GNSS位移站,一款运用差分RTK技术打造的毫米级位移监测利器,宛如工程安全的守护神,其应用之广泛,遍及大坝安全的严密监控、桥梁健康的细致检测、滑坡预警的精准预测等工程领域。这款产品不仅具备超凡的高精度和高稳定性,更拥有实时数据传输的迅捷能力,如同猎鹰般敏锐地捕捉目标......
  • 扼流圈GNSS监测站的组成
    TH-WY1扼流圈GNSS监测站作为一种高精度定位和监测设备,在地质灾害监测、农业精准管理、大坝安全监测等领域具有广泛的应用前景。其独特的扼流圈天线设计和高度集成的系统架构,使得它在实现高精度定位的同时,有效降低了多径效应的影响,提高了数据处理的效率和精度。扼流圈天线扼流......
  • STM32智能农业监测系统教程
    目录引言环境准备智能农业监测系统基础代码实现:实现智能农业监测系统4.1数据采集模块4.2数据处理与控制模块4.3通信与网络系统实现4.4用户界面与数据可视化应用场景:农业监测与管理问题解决方案与优化收尾与总结1.引言智能农业监测系统通过STM32嵌入式系统结合各种......
  • 如何实现元素的曝光监测
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:霁明一些名词解释曝光页面上某一个元素、组件或模块被用户浏览了,则称这个元素、组件或模块被曝光了。视图元素将页面上展示的元素、......
  • Science Advances|用于肌电检测的柔性微针电极阵列(健康监测/柔性传感/柔性电子)
    2024年5月1日,美国南加州大学HangboZhao课题组在《ScienceAdvances》上发布了一篇题为“Highlystretchableandcustomizablemicroneedleelectrodearraysforintramuscularelectromyography”的论文。论文内容如下:一、摘要        可伸缩的三维穿透式微电极......
  • react 实现前端发版监测
    先说下前端发版流程1.前端打包输出产物/dist文件2.删除远程服务下打包的旧代码3.将打包参物/dist文件copy到远程服务器目录4.重启服务器问题1在步骤2,3,4中用户访问目标服务器会报JS错误,正常情况打开网页的控制面板会看下报错信息`Failedtofetchdynamicallyimp......
  • 工程安全监测中的振弦采集仪技术解析与应用
    工程安全监测中的振弦采集仪技术解析与应用河北稳控科技振弦采集仪是一种在工程安全监测中广泛使用的仪器,用于测量和监测结构的振动和应变。它通过采集结构中的振弦信号,可以提供详细的结构运行状态和变化情况,为工程安全监测提供有效的数据支持。 振弦采集仪的原理是基于振弦......
  • 振弦采集仪在大型工程安全监测中的作用与意义
    振弦采集仪在大型工程安全监测中的作用与意义大型工程的安全监测是确保工程施工过程中的安全和稳定性的重要环节。而河北稳控科技振弦采集仪作为一种先进的监测设备,在大型工程安全监测中起着关键的作用和重要的意义。 一,振弦采集仪可以实时监测工程的振动情况。在大型工程施......
  • windows使用性能监视器监测C盘空间
    windows平台使用系统自带的性能监视器监测C盘空间并发送提醒邮件一、设置任务计划设置任务计划,自动发送邮件任务计划名称“Mail-diskC”方式一:使用bat脚本调用ps1文件任务计划执行bat批处理脚本,调用另一powershell文件该计划任务为后续性能监视器所调用,因此不需要设置触发......