亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 室内空气质量与舒适度监测套件 - DIY 教程

所需组件与材料

组件数量备注
Arduino Nano R31主控板
DHT11 温湿度传感器(3 引脚)1测温范围 0-50°C,测湿 20-90% RH
MQ135 空气质量传感器1检测 CO2、酒精、苯、烟雾等
0.96" I2C OLED 显示屏 (128x64)1SSD1306 驱动

所需工具

所需软件

项目背景

许多人在封闭房间睡眠后醒来感到疲惫,这往往是由于夜间室内空气质量下降导致的。本项目制作一个低成本的空气质量监测仪,实时显示温度、湿度和空气质量等级,帮助改善居住环境。

接线说明

Arduino 引脚连接模块模块引脚
D2DHT11OUT
A0MQ135AO (模拟输出)
A5 (SCL)OLEDSCL
A4 (SDA)OLEDSDA

所有模块 VCC 接 5V,GND 接地。OLED 使用 I2C 通信,默认地址 0x3C。

代码实现

所需库安装

通过库管理器安装:

核心逻辑

程序包含两个主要函数:

MQ135 传感器“老化”与校准(关键步骤)

MQ135 出厂时表面吸附杂质,首次使用必须通电“老化”至少 24 小时(在洁净空气中),以烧掉表面污染物,提高测量准确性。老化完成后,将传感器置于已知洁净环境(如户外空气)中,观察串口输出的 gasLevel 基准值,据此调整代码中的阈值:

if (gasLevel < 181) quality = "GOOD!";
else if (gasLevel < 225) quality = "Poor!";
else if (gasLevel < 300) quality = "Very bad!";
else if (gasLevel < 350) quality = "Dangerous!";
else quality = "Toxic!";

不同环境、不同批次传感器基准值差异较大,建议实测校准。

完整代码

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoOblique9pt7b.h>
#include <DHT.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define sensor A0
#define DHTPIN 2
#define DHTTYPE DHT11

int gasLevel = 0;
String quality = "";
DHT dht(DHTPIN, DHTTYPE);

void sendSensor() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setFont();
  display.setCursor(0, 43);
  display.println("Temp :");
  display.setCursor(80, 43);
  display.println(t);
  display.setCursor(114, 43);
  display.println("C");
  display.setCursor(0, 56);
  display.println("RH :");
  display.setCursor(80, 56);
  display.println(h);
  display.setCursor(114, 56);
  display.println("%");
}

void air_sensor() {
  gasLevel = analogRead(sensor);
  if (gasLevel < 181) quality = " GOOD!";
  else if (gasLevel < 225) quality = " Poor!";
  else if (gasLevel < 300) quality = "Very bad!";
  else if (gasLevel < 350) quality = "Dangerous!";
  else quality = " Toxic";

  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(1, 5);
  display.setFont();
  display.println("Air Quality:");
  display.setTextSize(1);
  display.setCursor(20, 23);
  display.setFont(&FreeMonoOblique9pt7b);
  display.println(quality);
}

void setup() {
  Serial.begin(9600);
  pinMode(sensor, INPUT);
  dht.begin();
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);
  }
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(50, 0);
  display.println("Air");
  display.setTextSize(1);
  display.setCursor(23, 20);
  display.println("Quality monitor");
  display.display();
  delay(1200);
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20, 20);
  display.println("BY Maker");
  display.display();
  delay(1000);
  display.clearDisplay();
}

void loop() {
  display.clearDisplay();
  air_sensor();
  sendSensor();
  display.display();
  delay(1000); // 1秒刷新一次
}

外壳与原理图

项目提供 3D 打印外壳模型(可选),也可用纸盒、亚克力板自制。原理图见项目附件。

注意事项与改进建议

制造工艺

  1. 树莓派打造空气质量与气象站:InfluxDB+Grafana可视化
  2. 使用 OpenSensors 监测空气质量:Arduino 与 Python 实战指南
  3. DIY 空气质量监测仪:低成本 EPA 合规检测器
  4. 基于 Helium 网络的太阳能供电空气质量监测站:设计与部署全指南
  5. 基于LoRa的智慧城市空气质量监测系统
  6. 用 Arduino 打造绚丽显示器 Ambilight 系统
  7. 智能室内空气质量与垃圾监测系统
  8. K30 CO₂ 传感器:室内空气质量实时监测
  9. Bosch Sensortec 推出 AI 赋能 BME688 空气质量传感器,降低病毒传播风险
  10. 瑞萨升级室内空气质量传感器平台,嵌入式AI增强异味检测
  11. 微型 PM2.5 与 VOC 传感器实现实时个人空气质量监测
  12. 先进碳基 NO₂ 传感器提升室内空气质量监测水平