聚豐項(xiàng)目 > 基于AB32VG1的有害氣體監(jiān)測(cè)儀設(shè)計(jì)
基于AB32VG1開(kāi)發(fā)板讀取MQ135傳感器數(shù)據(jù),通過(guò)串口輸出,實(shí)時(shí)監(jiān)測(cè)有害氣體濃度并提示安全或危險(xiǎn)報(bào)警。
turbo_Jona
turbo_Jona
團(tuán)隊(duì)成員
turbo_Jona 學(xué)生
中科藍(lán)訊AB32VG1開(kāi)發(fā)套件
AB32VG1主頻 120M ,片上集成 RAM 192K, Flash 4Mbit,ADC,PWM,USB,UART,IIC 等資源。提供SDK,驅(qū)動(dòng)齊全,支持RT-Thread Studio 開(kāi)發(fā)應(yīng)用,圖形化配置系統(tǒng),一鍵開(kāi)啟外設(shè),一鍵使用軟件包,強(qiáng)大的自動(dòng)代碼編輯輔助。
MQ135氣體傳感器對(duì)氨氣、硫化物、苯系蒸汽的靈敏度高,對(duì)煙霧和其它有害氣體的監(jiān)測(cè)也很理想。這種傳感器可檢測(cè)多種有害氣體,是一款適合多種應(yīng)用的低成本傳感器。
#include <rtthread.h>
#include "board.h"
#include <rtdevice.h>
#include <math.h>
#define ADC_DEV_NAME "adc0" /* ADC 設(shè)備名稱 */
#define ADC_DEV_CHANNEL 7 /* ADC 通道 */
#define REFER_VOLTAGE 330 /* 參考電壓 3.3V,數(shù)據(jù)精度乘以100保留2位小數(shù)*/
#define CONVERT_BITS (1 << 10) /* 轉(zhuǎn)換位數(shù)為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);
/* 查找設(shè)備 */
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;
}
/* 使能設(shè)備 */
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);
/* 轉(zhuǎn)換為對(duì)應(yīng)電壓值 */
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);
}
/* 關(guān)閉通道 */
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);
}
/* 導(dǎo)出到 msh 命令列表中 */
MSH_CMD_EXPORT(mq135, air quality monitoring);
監(jiān)測(cè)有害氣體濃度,串口輸出,用手觸碰mq135模擬濃度超額,led點(diǎn)亮提示報(bào)警。
gitee代碼倉(cāng)庫(kù):https://gitee.com/turboj/test1.git
(4.65 MB)下載