聚豐項目 > 基于AB32VG1的有害氣體監測儀設計
基于AB32VG1開發板讀取MQ135傳感器數據,通過串口輸出,實時監測有害氣體濃度并提示安全或危險報警。
turbo_Jona
分享turbo_Jona
團隊成員
turbo_Jona 學生
中科藍訊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點亮提示報警。
gitee代碼倉庫:https://gitee.com/turboj/test1.git
(4.65 MB)下載