标题:
arduino空气质量检测
[打印本页]
作者:
怎末回事
时间:
2020-2-16 15:49
标题:
arduino空气质量检测
本系统主要是通过arduino控制激光粉尘传感器来检测空气中的PM2.5及其他气体含量,并在lcd1602上显示出来。具体详细代码在压缩包。
#include <Arduino.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);
#define LENG 31 //0x42 + 31 bytes equal to 32 bytes
unsigned char buf[LENG];
int PM01Value=0; //define PM1.0 value of the air detector module
int PM2_5Value=0; //define PM2.5 value of the air detector module
int PM10Value=0; //define PM10 value of the air detector module
void setup()
{
Serial.begin(9600); //使用串口0
Serial.setTimeout(1500); //设置超时时间为1500毫秒(大于传感器传送数据周期1秒)
// lcd.print("PM1.0: ");
// lcd.print(PM01Value);
//lcd.println(" ug/m3");
// lcd.print("PM1 0: ");
//lcd.print(PM10Value);
//lcd.println(" ug/m3");
//lcd.println();
}
void loop()
{
if(Serial.find(0x42)){ //检测到0x42时,开始读取
Serial.readBytes(buf,LENG);
if(buf[0] == 0x4d)
{
if(checkValue(buf,LENG))
{
PM01Value=transmitPM01(buf); //count PM1.0 value of the air detector module
PM2_5Value=transmitPM2_5(buf);//count PM2.5 value of the air detector module
PM10Value=transmitPM10(buf); //count PM10 value of the air detector module
}
}
}
static unsigned long OledTimer=millis();
if (millis() - OledTimer >=1000)
{
OledTimer=millis();
Serial.print("PM1.0: ");
Serial.print(PM01Value);
Serial.println(" ug/m3");
Serial.print("PM2.5: ");
Serial.print(PM2_5Value);
Serial.println(" ug/m3");
Serial.print("PM1 0: ");
Serial.print(PM10Value);
Serial.println(" ug/m3");
Serial.println();
}
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("PM2.5: ");
lcd.print(PM2_5Value);
lcd.println("ug/m3 ");
lcd.setCursor(0,1);
lcd.print("PM10: ");
lcd.print(PM10Value);
lcd.println("ug/m3 ");
lcd.println();
}
char checkValue(unsigned char *thebuf, char leng)
{
char receiveflag=0;
int receiveSum=0;
for(int i=0; i<(leng-2); i++){
receiveSum=receiveSum+thebuf[i];
}
receiveSum=receiveSum + 0x42;
if(receiveSum == ((thebuf[leng-2]<<8)+thebuf[leng-1])) //check the serial data
{
receiveSum = 0;
receiveflag = 1;
}
return receiveflag;
}
int transmitPM01(unsigned char *thebuf)
{
int PM01Val;
PM01Val=((thebuf[3]<<8) + thebuf[4]); //count PM1.0 value of the air detector module
return PM01Val;
}
//transmit PM Value to PC
int transmitPM2_5(unsigned char *thebuf)
{
int PM2_5Val;
PM2_5Val=((thebuf[5]<<8) + thebuf[6]);//count PM2.5 value of the air detector module
return PM2_5Val;
}
//transmit PM Value to PC
int transmitPM10(unsigned char *thebuf)
{
int PM10Val;
PM10Val=((thebuf[7]<<8) + thebuf[8]); //count PM10 value of the air detector module
return PM10Val;
}
复制代码
空气质量检测PM2.5.zip
2020-2-16 15:49 上传
点击文件名下载附件
下载积分: 黑币 -5
61.12 KB, 下载次数: 13, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1