Arduino-gebaseerde binnenluchtkwaliteit- en comfortsensor kit
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino Nano R3 | 1 |
| DHT11 Temperatuur- & vochtigheidssensor (3 pennen) | 1 |
| Luchtkwaliteitssensor (MQ135) | 1 |
| 0,96" I2C OLED-display | 1 |
Benodigde tools en machines
- Solderbout (standaard)
- 3D-printer (optioneel)
Apps en online diensten
- Arduino IDE
Over dit project
Vaak voel je je 's ochtends moe en mattig, zelfs na een goede nachtrust. Dit kan komen door slechte luchtkwaliteit in een gesloten slaapkamer.
Dit project is een goedkope luchtkwaliteitsmonitor die de luchtkwaliteit meet met een MQ135-sensor, temperatuur en vochtigheid met een DHT11-sensor, en de gegevens weergeeft op een OLED-display. Een leuke en nuttige knutselopdracht.
Schema
Verbind:
- Arduino D2 → DHT11 OUT
- Arduino A0 → MQ135 AO
- Arduino A5 → OLED SCL
- Arduino A4 → OLED SDA
Programmeren
Installeer eerst de volgende bibliotheken via de Library Manager:
- Adafruit_SSD1306.h
- Adafruit_GFX.h
- DHT.h
De code bevat twee hoofdfuncties: sendSensor() en air_sensor().
air_sensor()leest de analoge waarde van de MQ135 (gasLevel = analogRead(sensor)) en klassificeert de luchtkwaliteit op basis van drempelwaarden.sendSensor()meet temperatuur en vochtigheid met de DHT-bibliotheek en toont dit op het display.
Kalibratie van de MQ135: Voordat je de sensor in gebruik neemt, moet je hem "branden": voed hem met 5V en laat hem minimaal 24 uur in een schone omgeving lopen. De sensor komt vervuild uit de fabriek; het branden reinigt het gevoelige element en verbetert de nauwkeurig. Daarna kun je de drempelwaarden in de code aanpassen aan je lokale omstandigheden.
Code
Arduino Luchtkwaliteitsmonitor
#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 > 181 && gasLevel < 225) {
quality = " Poor!";
} else if (gasLevel > 225 && gasLevel < 300) {
quality = "Very bad!";
} else if (gasLevel > 300 && gasLevel < 350) {
quality = "ur dead!";
} 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"));
}
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 Abid");
display.display();
delay(1000);
display.clearDisplay();
}
void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();
}
Behuizing (optioneel)
Er is een 3D-printbare behuizing ontworpen, maar je kunt ook eenvoudig een doosje maken van karton of ander materiaal.
Schema

Productieproces
- Bouw Een Raspberry Pi Luchtkwaliteit & Weerstation Met InfluxDB & Grafana
- Luchtkwaliteit meten met OpenSensors: Een Arduino & Python Handleiding
- DIY Luchtkwaliteitmonitor: Kosteneffectieve EPA-compliante detector
- Helium-gebaseerde Zon-Powered Luchtsensor: Ontwerp & Implementatiegids
- Slimme stadsmonitoring van luchtkwaliteit met LoRa
- Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
- Slim Binnenklimaat- & Afvalmonitoringssysteem met Raspberry Pi en Arduino
- Bosch Sensortec onthult AI-ingeschakelde BME688 luchtkwaliteitssensor om virusoverdrachtsrisico te verminderen
- Renesas verbetert Indoor Air Quality sensorplatform met embedded AI voor verbeterde geurdeteectie
- Kleine PM2.5 & VOC-sensoren leveren realtime persoonlijke luchtkwaliteitsmonitoring
- Geavanceerde Koolstofgebaseerde NO₂-sensor Verbetert Binnenluchtkwaliteitsmonitoring