美文网首页arduino玩转Arduino@IT·互联网
【Arduino综合项目】空气质量检测装置

【Arduino综合项目】空气质量检测装置

作者: 繁著 | 来源:发表于2016-07-01 16:54 被阅读1610次
空气质量检测装置

功能介绍

本项目主要是实现基本的空气质量检测功能:

  1. PM2.5指数
  2. 空气质量指数
  3. 空气湿度
  4. 空气温度

准备材料

就不给出购买链接了,这些材料在某宝上随便一搜就有~

模块接线

  • LCD 5110与Arduino

LCD 5110 Arduino
RST -> 11
CE -> 12
DC -> 10
DIN -> 9
CLK -> 8
VCC -> 5V
BL -> GND
GND -> GND
  • PM2.5粉尘检测传感器与Arduino

GP2Y1010AU0F Arduino
1 150欧电阻 5V
1 220uF电解电容 GND
2 -> GND
3 -> 2
4 -> GND
5 -> A0
6 -> 5V
  • MQ135空气质量检测模块与Arduino

MQ135 Arduino
VCC -> 5V
AOUT -> A1
GND -> GND
  • DHT11温湿度传感器与Arduino

DHT11 Arduino
GND -> GND
VCC -> 5V
OUT -> 5

第三方库

#include <dht.h>
#include <LCD5110_Basic.h>
#include "MQ135.h"

下载地址:

如果不知道如何手动加载库文件,或者不知道怎么使用库,请参考我之前写的基础教程:


源程序

#include <dht.h>
#include <LCD5110_Basic.h>
#include "MQ135.h"

//空气质量
MQ135 gasSensor = MQ135(1);

//LCD5110
LCD5110 myGLCD(8,9,10,11,12);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

//温湿度
dht DHT;
#define DHT11_PIN 5

//PM2.5
int dustPin=0;
float dustVal=0;
int ledPower=2;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
float a=0;
String s0 = " ";
String s1 = " ";
String s2 = " ";
String s3 = " ";

void setup()
{
  Serial.begin(115200);
  pinMode(ledPower,OUTPUT);
  pinMode(dustPin, INPUT);
  myGLCD.InitLCD(); //Intializing LCD
  myGLCD.setContrast(55);
}

void pm25(){
  digitalWrite(ledPower,LOW); 
  delayMicroseconds(delayTime);
  dustVal=analogRead(dustPin); 
  delayMicroseconds(delayTime2);
  digitalWrite(ledPower,HIGH); 
  delayMicroseconds(offTime);
  if (dustVal>36.455)
  a = (float(dustVal/1024)-0.0356)*120000*0.035;
  s0 = String("PM2.5: "+String(a));
  myGLCD.setFont(SmallFont);
  myGLCD.print(s0,0,8);
}

void ht(){
  Serial.print("DHT11, \t");
  int chk = DHT.read11(DHT11_PIN);
  switch (chk)
  {
    case DHTLIB_OK:  
                Serial.print("OK,\t"); 
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.print("Checksum error,\t"); 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.print("Time out error,\t"); 
                break;
    case DHTLIB_ERROR_CONNECT:
        Serial.print("Connect error,\t");
        break;
    case DHTLIB_ERROR_ACK_L:
        Serial.print("Ack Low error,\t");
        break;
    case DHTLIB_ERROR_ACK_H:
        Serial.print("Ack High error,\t");
        break;
    default: 
                Serial.print("Unknown error,\t"); 
                break;
  }
  // DISPLAY DATA
  Serial.print(DHT.humidity, 1);
  Serial.print(",\t");
  Serial.println(DHT.temperature, 1);

  myGLCD.setFont(SmallFont);
  s1 = String("H : " + String(int(DHT.humidity)) + " %");
  myGLCD.print(s1,0,24);
  myGLCD.setFont(SmallFont);
  s2 = String("T : " + String(int(DHT.temperature))+" C");
  myGLCD.print(s2,0,32);
  }

void ppm(){
  float ppm = gasSensor.getPPM();
  s3 = String("Air: " + String(ppm)+"ppm");
  myGLCD.print(s3,0,16);
  }

void loop(){ 
  myGLCD.setFont(SmallFont);
  myGLCD.print("Hello World",CENTER,0);

  pm25();
  ht();
  ppm();
  
  delay(2000);
  myGLCD.clrScr();
}

源程序下载地址https://github.com/wwwxmu/ArduinoAirQuality


附:测试得到的数据和空气质量对照:

3000 + = 很差
1050-3000 = 差
300-1050 = 一般
150-300 = 好
75-150 = 很好
0-75 = 非常好

附:室内空气质量对照表

室内空气质量对照表

相关文章

网友评论

  • cc8a1d959d1c:Arduino:1.8.2 (Windows 7), 开发板:"Arduino/Genuino Uno"

    C:\Users\Administrator\Desktop\sketch_dec03a\sketch_dec03a.ino:2:27: fatal error: LCD5110_Basic.h: No such file or directory

    #include <LCD5110_Basic.h>

    ^

    compilation terminated.

    exit status 1
    为开发板 Arduino/Genuino Uno 编译时出错。

    在文件 -> 首选项开启
    “编译过程中显示详细输出”选项
    这份报告会包含更多信息。

    这是什么意思,作者
    繁著:@夏沐阳光_3a2e lcd5110的库应该有方法可以调节的。具体你要百度一下
    cc8a1d959d1c:@繁著 谢谢了,我已经弄好了,只是这个屏幕上多字有点不清楚,你知道该怎么办吗?
    繁著:@夏沐阳光_3a2e 找不到头文件吧
  • cc8a1d959d1c:我想做一下,谢谢你了。
  • cc8a1d959d1c:作者不好意思,我能要一下编写这个程序的软件吗?😳
    繁著:@夏沐阳光_3a2e 软件?源代码吗?https://github.com/wwwxmu/ArduinoAirQuality
  • runingSail:这个不是oled吗?
  • 2cee72aff0e6:这个做出来成本大概多少
    繁著:@放肆的青春诠释灵魂 100以内吧,太久了都忘了
  • 324e683a30bb:我想问问您,设计【Arduino综合项目】空气质量检测装置 的设计思路是什么?
  • 醉酒肆之:不管复不复杂,实现棒棒棒!
    繁著:@醉酒肆之 真正动手才是王道:blush:
  • 唯爱丶:这个可以自己玩吗,作者你整成功了没?
    繁著:@唯爱丶 可以啊,我都是实验成功才放上来的:smile:

本文标题:【Arduino综合项目】空气质量检测装置

本文链接:https://www.haomeiwen.com/subject/rfcfjttx.html