各位心灵手巧的Maker小伙伴们,是时候动手做一个空气污染监测装置了。利用一个空气监测传感器搭配Arduino控制器和扩展板,马上就可以搭建出一个简易空气监测装置。即使没有那些专业的监测设备和砖家的报告,你也能科学客观的了解你时刻呼吸的空气质量! 硬件列表 -Sharp GP2Y10 空气质量传感器 - DFRduino UNO R3 - IO 传感器扩展板 V7 -转接板(如果没有转接板 可选150欧、220uF电容、面包板) -杜邦线 步骤一:硬件连接
图 1 完整连接图 1、I/O扩展板插在UNO上 2、粉尘传感器与转接板通过杜邦线连接 3、转接板上标有分别标有D和A的两个接口 D → 数字口 2 A → 模拟口 0 只要轻松的插上几根线就完成连接,是不是很方便呀? 步骤二:烧入代码 按照教程代码烧入DFRduino UNO R3 完成之后,得到一串的数字是不是还是很模糊呀?我们先简单了解下粉尘传感器,可以对应代码一起看。 (当然,如果觉得不需要了解的话,只需直接下载代码即可使用。)
上图是个粉尘传感器的内部结构图以及硬件说明。 可以从图中看出,在发射端,我们需要驱动一个红外发射管,也就是引脚3。对应程序中定义的ledPower。同样,我们也可以看出输出是引脚5,输出的是模拟量,对应到程序中的measurePin。 那我们如何得到我们想要的值呢? 下图截自 datasheet,你可以看出粉尘传感器的输出电压是几乎呈线性的。dustDensity = 0.17 * calcVoltage - 0.1; 这个公式曲线近似转换过来的(来自Chris Nafis)。这里dustDensity是粉尘密度值,单位mg/m3。calcVoltage是输出电压值。
我们都知道输出0~5V电压对应UNO模拟口读出的是0~1023。calcVoltage = voMeasured * (5.0 / 1024.0); 这个公式就是模拟值转为电压值。voMeasured 模拟口输出量。
根据datasheet,也就是上图可看出,我们需要开启内部的LED并等待280μs(微秒),之后再读取输出值。
上图可以看出,整个脉冲持续时间为320μs。因此,我们还需再等待40μs,才能将LED关闭。 以上就是对程序以及,粉尘传感器工作原理的简单说明。 步骤三:没有转接板的情况
还有个问题,有人说如果没有转接板怎么办,那就接着看上面这张图。 看出来了吗?我们需要在引脚1外接一个150欧的电阻,并且并联一个220uF的电容。这也就是我们使用转接板的原因,把这个部分在转接板上完成了,大大方便了连线,也增加了稳定性。 下面来看下实物图上的引脚位置,如果是需要自己外接电阻、电容的朋友们请继续往下看。“
粉尘传感器对应的Arduino引脚:
照着连就可以了,连接完成之后,同样下载教程的样例代码。 PM2.5检测器 代码如下: int measurePin = 0; // 连接模拟口0 int ledPower = 2; // 连接数字口2 int samplingTime = 280; int deltaTime = 40; int sleepTime = 9680; float voMeasured = 0; float calcVoltage = 0; float dustDensity = 0; void setup(){ Serial.begin(9600); pinMode(ledPower,OUTPUT); } void loop(){ digitalWrite(ledPower,LOW); //开启内部LED delayMicroseconds(samplingTime); // 开启LED后的280us的等待时间 voMeasured = analogRead(measurePin); // 读取模拟值 delayMicroseconds(deltaTime); // 40us等待时间 digitalWrite(ledPower,HIGH); // 关闭LED delayMicroseconds(sleepTime); // 0 - 5V mapped to 0 - 1023 integer values // recover voltage (责任编辑:admin) |