Introduction: PcDuino Can Help You Measure Air Particle Pollution PM2.5
In this tutorial we are going to use Dust sensor on pcDuino to measure air pollution pm2.5.
Step 1: Dust Sensor
Main feature:
Output signal is PWM;
Easy installation;
Single-supply;
Parameter:
5VDC;
Scope of detecting particles:Max 8000pcs/283ml;
Output signal is PWM;
Easy installation;
Single-supply;
Parameter:
5VDC;
Scope of detecting particles:Max 8000pcs/283ml;
Step 2: Compile and Run
Hardware:
1 x pcDuino
1 x Dust Sensor
Several jumper wire
Wiring diagram:
Dust Sensor Pin 1 => pcDuino GND
Dust Sensor Pin 3 => pcDuino 5V
Dust Sensor Pin 4 => pcDuino D8v
1 x pcDuino
1 x Dust Sensor
Several jumper wire
Wiring diagram:
Dust Sensor Pin 1 => pcDuino GND
Dust Sensor Pin 3 => pcDuino 5V
Dust Sensor Pin 4 => pcDuino D8v
Step 3: Run Code
Run code: (You need to preheat the dust sensor more than 3 minutes before first use )
1. Launch Arduino IDE that comes with pcDuino and enter the following code (the code is shown in next tab):
1. Launch Arduino IDE that comes with pcDuino and enter the following code (the code is shown in next tab):
Step 4: 2. Click the Run Button
2. Click the run button:
Step 5: Sample Code
<code>
/************************************/
/* Dust Sensor Pin 1 => pcDuino GND */
/* Dust Sensor Pin 3 => pcDuino 5V */
/* Dust Sensor Pin 4 => pcDuino D8 */
/************************************/
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;//sampe 30s ;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup()
{
pinMode(pin,INPUT);
starttime = millis();//get the current time;
}
void loop()
{
duration = pulseIn(pin,LOW,1000000);
lowpulseoccupancy += duration;
if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s
{
ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
printf(“lowpulseoccupancy: %ld \nratio: %f \nconcentration: %f\n\n”,lowpulseoccupancy,ratio,concentration);
lowpulseoccupancy = 0;
starttime = millis();
}
}
</code>
/************************************/
/* Dust Sensor Pin 1 => pcDuino GND */
/* Dust Sensor Pin 3 => pcDuino 5V */
/* Dust Sensor Pin 4 => pcDuino D8 */
/************************************/
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;//sampe 30s ;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup()
{
pinMode(pin,INPUT);
starttime = millis();//get the current time;
}
void loop()
{
duration = pulseIn(pin,LOW,1000000);
lowpulseoccupancy += duration;
if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s
{
ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
printf(“lowpulseoccupancy: %ld \nratio: %f \nconcentration: %f\n\n”,lowpulseoccupancy,ratio,concentration);
lowpulseoccupancy = 0;
starttime = millis();
}
}
</code>