聚丰项目 > 基于AB32VG1的有害气体监测仪设计

基于AB32VG1的有害气体监测仪设计

基于AB32VG1开发板读取MQ135传感器数据,通过串口输出,实时监测有害气体浓度并提示安全或危险报警。

turbo_Jona turbo_Jona

分享
1 喜欢这个项目
团队介绍

turbo_Jona turbo_Jona

团队成员

turbo_Jona 学生

分享
项目简介
基于AB32VG1开发板读取MQ135传感器数据,通过串口输出,实时监测有害气体浓度并提示安全或危险报警。
硬件说明

中科蓝讯AB32VG1开发套件

AB32VG1主频 120M ,片上集成 RAM 192K, Flash 4Mbit,ADC,PWM,USB,UART,IIC 等资源。提供SDK,驱动齐全,支持RT-Thread Studio 开发应用,图形化配置系统,一键开启外设,一键使用软件包,强大的自动代码编辑辅助。


MQ135气体传感器对氨气、硫化物、苯系蒸汽的灵敏度高,对烟雾和其它有害气体的监测也很理想。这种传感器可检测多种有害气体,是一款适合多种应用的低成本传感器。

软件说明

#include <rtthread.h>


#include "board.h"


#include <rtdevice.h>


#include <math.h>




#define ADC_DEV_NAME        "adc0"      /* ADC 设备名称 */


#define ADC_DEV_CHANNEL     7           /* ADC 通道 */


#define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/


#define CONVERT_BITS        (1 << 10)   /* 转换位数为12位 */





static int mq135(int argc, char *argv[])


{


    rt_adc_device_t adc_dev;


    rt_uint32_t value, vol, ppm;


    rt_err_t ret = RT_EOK;




    uint8_t pin = rt_pin_get("PE.1");


    rt_pin_mode(pin, PIN_MODE_OUTPUT);






    /* 查找设备 */


    adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);


    if (adc_dev == RT_NULL)


    {


        rt_kprintf("mq135 run failed! can't find %s device!\n", ADC_DEV_NAME);


        return RT_ERROR;


    }




    /* 使能设备 */


    ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);


    for(rt_uint8_t i = 0 ; i < 10 ; i++ )


    {


        /* 读取采样值 */


        value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);


        rt_kprintf("adc value = %d \n", value);




        /* 转换为对应电压值 */


        vol = value * REFER_VOLTAGE / CONVERT_BITS;


        rt_kprintf("voltage = %d.%02d \n", vol / 100, vol % 100);




        ppm = pow((3.4880*0.1*vol)/(5-vol/100),(1.0/0.3203))*100;


        rt_kprintf("ppm = %d.%02d \n", ppm / 100, ppm % 100);


        if(ppm >= 200)


        {


            rt_kprintf("status : danger!\n\n\n");


            rt_pin_write(pin, PIN_LOW);




        }


        else {


            rt_kprintf("status : safe!\n\n\n");


            rt_pin_write(pin, PIN_HIGH);


        }


        rt_thread_mdelay(3000);


    }


    /* 关闭通道 */


    ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);


    rt_pin_write(pin, PIN_HIGH);


    rt_kprintf("exit!\n");


    return ret;


}








int main(void)


{


    rt_kprintf("all initial success!\n");


    uint8_t pin = rt_pin_get("PE.1");


    rt_pin_mode(pin, PIN_MODE_OUTPUT);


    rt_pin_write(pin, PIN_HIGH);


}




/* 导出到 msh 命令列表中 */


MSH_CMD_EXPORT(mq135, air quality monitoring);



演示效果

监测有害气体浓度,串口输出,用手触碰mq135模拟浓度超额,led点亮提示报警。

IMG_20211212_214727.jpg


gitee代码仓库:https://gitee.com/turboj/test1.git

附件

(4.65 MB)下载

评论区(0 )