Cindy
Created March 24, 2017

Air dust monitor with arduino

Air dust monitor with arduino, this is useful for outdoor activities before hand.

194
Air dust monitor with arduino

Things used in this project

Hardware components

Arduino 101
Arduino 101
×1
Smart dust sensor PWM-01
×1
lcd1602 panel
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

airidust.ino

Arduino
smart air dust sensor reading and shown.
#include <LiquidCrystal.h>
#include <CurieTimerOne.h>

#define PM25DURATION 30000


// 第一步 显示器和传感器初始设置
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
//---------------------------------------------
const int airdustPin = 11; // 选择第11号引线作为传感器的输入
int alltime;   //低电压脉冲总时间
int lowtime;   //低电压脉冲时间
int airdust;  //占空比
int x=50;     //PM2.5数据
int current_time=0; //当前时间
int last_time=0;    //上一个计时的起始时间


// 第二步 启动显示器和启动传感器
void setup() 
{ 
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PM2.5=");
  pinMode(airdustPin,INPUT);
  delay(500);
  Serial.begin(9600);
}

  /*
第三步 在loop程序中循环执行以下过程,
      开始计数5秒钟,
      ——>如果超过计算时间间隔,计算时间段内的pm2.5计算值,{计算低电压时间占30秒的百分数,并把计算时间清零,重新计算}
      ——>遇到有PM25颗粒时的低电压信号时间累加
      ——>按照比例关系换算出PM25的数值
      ——>在显示器当前计算出来的pm2.5数值和空气好坏
      ——>返回到循环开头,继续反复执行
  */

void loop() 
{ 
  
//开始计数5秒钟—当前时间比上一次时间点超过5秒钟时,计算pm25的数值,把时间点设为当前时间,重新开始统计
    current_time=millis();  
    int gaptime=current_time-last_time ; 
    if (gaptime > PM25DURATION) {
      pm25(); 
      alltime=0; 
      last_time=current_time;  
    }

//遇到有PM25颗粒时的低电压信号时间累加
      lowtime = pulseIn(airdustPin, LOW); 
      alltime=alltime+lowtime;  

//按照比例关系换算出PM25的数值      
    x=50+airdust*20;

//显示器显示
    lcd.setCursor(8, 0);
    lcd.print(x);
    lcd.setCursor(0, 1);
    if (x<100) {
        lcd.print("Good");}
    else  {
        lcd.print("Not Good");}
//返回到循环开头,继续反复执行
}

void pm25()
{
      airdust=100*(0.001*alltime/PM25DURATION);
      // set airdust value for the characeristic: 
}

Credits

Cindy

Cindy

5 projects • 3 followers
bonjour

Comments