
本教程实现功能:通过传感器获取当前空气PM2.5的值,并通过串口发送给上位机显示。 PM2.5传感器概述: 可以检测直径大于0.8um的灰尘颗粒浓度,作为一名创客,想了解空气质量?想DIY一个PM2.5检测仪?想设计一个空气净化器?,那么这款传感器就是你的必备神器 硬件准备: 硬件连接: 1. 将IO Expansion 扩展板接入UNO PLUS,用跳线帽将两个板子的电压都配置为 5V 2. Dust Sensor 与IO Expansion的连接 VCC -- VCC GND -- GND AOUT -- A5 ILED -- D2 3. 连接效果如下图 
程序: 01 | #define COV_RATIO 0.2 //ug/mmm / mv |
02 | #define NO_DUST_VOLTAGE 400 //mv |
03 | #define SYS_VOLTAGE 5000 //ADC参考电压 |
14 | float density, voltage; |
22 | static int flag_first = 0, _buff[10], sum; |
23 | const int _buff_max = 10; |
30 | for (i = 0, sum = 0; i < _buff_max; i++) |
40 | for (i = 0; i < (_buff_max - 1); i++) |
42 | _buff[i] = _buff[i + 1]; |
55 | pinMode(iled, OUTPUT); |
56 | digitalWrite(iled, LOW); |
59 | Serial.print( "*********************************** WaveShare ***********************************\n" ); |
67 | digitalWrite(iled, HIGH); |
68 | delayMicroseconds(280); |
69 | adcvalue = analogRead(vout); |
70 | digitalWrite(iled, LOW); |
72 | adcvalue = Filter(adcvalue); |
77 | voltage = (SYS_VOLTAGE / 1024.0) * adcvalue * 11; |
82 | if (voltage >= NO_DUST_VOLTAGE) |
84 | voltage -= NO_DUST_VOLTAGE; |
86 | density = voltage * COV_RATIO; |
94 | Serial.print( "The current dust concentration is: " ); |
95 | Serial.print(density); |
96 | Serial.print( " ug/m3\n" ); |
程序代码下载: DustSensor.zip |