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

简介: 空气质量检测装置功能介绍本项目主要是实现基本的空气质量检测功能:PM2.5指数空气质量指数空气湿度空气温度准备材料Arduino UNO *1LCD 5110 *1DHT11温湿度传感器 *1MQ135空气质量检测模块 *1PM2.
img_552e5d3bcb86e734e9dd5df90d2ed3d6.jpe
空气质量检测装置

功能介绍

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

  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

img_2315ef5bb34e7cfb4b69eb7277dbe677.jpe
img_19d767dd075d82d81868b266f618b2a3.jpe
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 = 非常好

附:室内空气质量对照表

img_ca50e4084c7edd10995a8ea0b9a7ba25.jpe
室内空气质量对照表
目录
相关文章
|
传感器 编解码 数据处理
毕业设计|基于STM32单片机的水位浑浊度检测设计
毕业设计|基于STM32单片机的水位浑浊度检测设计
1409 0
|
前端开发 Java
日志框架:基于Logback实现链路追踪
日志框架:基于Logback实现链路追踪
|
8月前
|
存储 缓存 关系型数据库
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
173 18
|
10月前
|
传感器 存储 IDE
Arduino的PID库
Arduino的PID库是一个用于实现比例-积分-微分(PID)控制算法的软件库。它能帮助开发者精确控制各种需要调节的系统,如温度、速度等,通过自动调整参数来达到或维持设定值。使用简单,适用于各种Arduino项目。
|
10月前
|
缓存 前端开发 JavaScript
webpack 原理
【10月更文挑战第23天】Webpack 原理是一个复杂但又非常重要的体系。它通过模块解析、依赖管理、加载器和插件的协作,实现了对各种模块的高效打包和处理,为现代前端项目的开发和部署提供了强大的支持。同时,通过代码分割、按需加载、热模块替换等功能,提升了应用程序的性能和用户体验。随着前端技术的不断发展,Webpack 也在不断演进和完善,以适应不断变化的需求和挑战。
|
11月前
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
289 0
|
API 数据格式
IIIF 标准
IIIF 标准
598 0
安装VS2015时出现“安装包丢失或损坏”
安装VS2015时出现“安装包丢失或损坏”
|
监控 安全 BI
如果服务器端口被扫会发生哪些故障?
在数字化时代,服务器作为支撑各种业务运行的核心基础设施,其安全性至关重要。然而,当服务器的端口被恶意扫描时,可能会引发一系列故障,给企业和个人带来不可估量的损失。那么,服务器端口被扫会发生哪些故障呢?
256 3
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
540 1