攀藤PMS5003

「PMS5003 arduino」的圖片搜尋結果

測試程式碼

static unsigned int pm_cf_10; //定义全局变量

static unsigned int pm_cf_25;

static unsigned int pm_cf_100;

static unsigned int pm_at_10;

static unsigned int pm_at_25;

static unsigned int pm_at_100;

static unsigned int particulate03;

static unsigned int particulate05;

static unsigned int particulate10;

static unsigned int particulate25;

static unsigned int particulate50;

static unsigned int particulate100;

static float HCHO;

static float Temperature;

static float Humidity;

void getG5(unsigned char ucData)//获取G5的值

{

static unsigned int ucRxBuffer[250];

static unsigned int ucRxCnt = 0;

ucRxBuffer[ucRxCnt++] = ucData;

if (ucRxBuffer[0] != 0x42 && ucRxBuffer[1] != 0x4D)//数据头判断

{

ucRxCnt = 0;

return;

}

if (ucRxCnt > 38)//数据位判断//G5S为32,G5ST为38

{

pm_cf_10=(int)ucRxBuffer[4] * 256 + (int)ucRxBuffer[5]; //大气环境下PM2.5浓度计算

pm_cf_25=(int)ucRxBuffer[6] * 256 + (int)ucRxBuffer[7];

pm_cf_100=(int)ucRxBuffer[8] * 256 + (int)ucRxBuffer[9];

pm_at_10=(int)ucRxBuffer[10] * 256 + (int)ucRxBuffer[11];

pm_at_25=(int)ucRxBuffer[12] * 256 + (int)ucRxBuffer[13];

pm_at_100=(int)ucRxBuffer[14] * 256 + (int)ucRxBuffer[15];

particulate03=(int)ucRxBuffer[16] * 256 + (int)ucRxBuffer[17];

particulate05=(int)ucRxBuffer[18] * 256 + (int)ucRxBuffer[19];

particulate10=(int)ucRxBuffer[20] * 256 + (int)ucRxBuffer[21];

particulate25=(int)ucRxBuffer[22] * 256 + (int)ucRxBuffer[23];

particulate50=(int)ucRxBuffer[24] * 256 + (int)ucRxBuffer[25];

particulate100=(int)ucRxBuffer[26] * 256 + (int)ucRxBuffer[27];

if (pm_cf_25 > 999)//如果PM2.5数值>1000,返回重新计算

{

ucRxCnt = 0;

return;

}

ucRxCnt = 0;

return;

}

}

void setup() {

Serial.begin(9600);

Serial.print("PM_CF1.0");Serial.print(",");

Serial.print("PM_CF2.5");Serial.print(",");

Serial.print("PM_CF10");Serial.print(",");

Serial.print("PM_AQI1.0");Serial.print(",");

Serial.print("PM_AQI2.5");Serial.print(",");

Serial.print("PM_AQI10");Serial.print(",");

Serial.print("PM_count03");Serial.print(",");

Serial.print("PM_count05");Serial.print(",");

Serial.print("PM_count10");Serial.print(",");

Serial.print("PM_count25");Serial.print(",");

Serial.println("PM_count100");

Serial.print("(ug/m3)");Serial.print(",");

Serial.print("(ug/m3)");Serial.print(",");

Serial.print("(ug/m3)");Serial.print(",");

Serial.print("(ug/m3)");Serial.print(",");

Serial.print("(ug/m3)");Serial.print(",");

Serial.print("(ug/m3)");Serial.print(",");

Serial.print("(pcs/0.01cf)");Serial.print(",");

Serial.print("(pcs/0.01cf)");Serial.print(",");

Serial.print("(pcs/0.01cf)");Serial.print(",");

Serial.print("(pcs/0.01cf)");Serial.print(",");

Serial.println("(pcs/0.01cf)");

}

void loop() {

while (Serial.available())

{

getG5(Serial.read());

}

Serial.print(pm_cf_10);Serial.print(",");

Serial.print(pm_cf_25);Serial.print(",");

Serial.print(pm_cf_100);Serial.print(",");

Serial.print(pm_at_10);Serial.print(",");

Serial.print(pm_at_25);Serial.print(",");

Serial.print(pm_at_100);Serial.print(",");

Serial.print(particulate03);Serial.print(",");

Serial.print(particulate05);Serial.print(",");

;Serial.print(particulate10);Serial.print(",");

Serial.print(particulate25);Serial.print(",");

Serial.println(particulate100);

delay(2000);

}