Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Luftqualitäts-Monitor mit DSM501A-Feinstaubsensor bauen

Bauteile und Zubehör

Arduino Nano R31
DSM501A-Staubsensor-Modul1
Alphanumerisches LCD 16×21
Lüfterkit 40 mm1
LED (diverse)5
Widerstand 221 Ω1
Potentiometer 10 kΩ1

Benötigte Werkzeuge

Apps und Online-Dienste

Über das Projekt

Luftqualitätsüberwachung ist seit den 1980ern etablierte Wissenschaft. Damals war die Technik begrenzt, Lösungen komplex, unhandlich und teuer. Heute sind Geräte präziser, schneller, kleiner und erschwinglicher. Dieses Projekt nutzt den Samyoung DSM501A-Staubsensor – einer der günstigsten Sensoren (wenige Dollar bei AliExpress) – der PM2,5- und PM10-Partikel detektiert.

Arduino-Luftqualitäts-Monitor mit DSM501A-Feinstaubsensor bauen

Die Schaltung ist simpel: Vout1 (PM2,5) an Arduino D2, Vout2 (PM10) an D3, Vcc an 5 V, GND an GND. Fünf LEDs an den analogen Pins A1–A5 (als Ausgänge definiert) zeigen die Luftqualität an. Ein 16×2-LCD (Hitachi HD44780-kompatibel) zeigt PM10-Konzentration in Partikeln/0,01 cf und fünf Qualitätsstufen:

Beide Konzentrationen (PM10 & PM2,5) lassen sich im Serial Monitor verfolgen. Je nach PM10-Wert leuchtet eine farbige LED für schnelle Ablesbarkeit. Ein Lüfter, der Luft aus dem Sensorausgang saugt, verbessert die Messwerte deutlich (weniger Spitzen). Das Gerät ist in einem Installationsgehäuse verbaut.

Arduino-Luftqualitäts-Monitor mit DSM501A-Feinstaubsensor bauen

Zukünftig plane ich Tests weiterer günstiger Staubsensoren – Ergebnisse folgen in späteren Projekten.

Code

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int pin2 = 3;
int pin1 = 2;
unsigned long duration1, duration2, starttime, sampletime_ms = 3000;
unsigned long lowpulseoccupancy1 = 0, lowpulseoccupancy2 = 0;
float ratio1 = 0, ratio2 = 0, concentration1 = 0, concentration2 = 0;
int wLed = A1, gLed = A2, yLed = A3, rLed = A4, bLed = A5;

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT); pinMode(3, INPUT);
  pinMode(wLed, OUTPUT); pinMode(gLed, OUTPUT);
  pinMode(yLed, OUTPUT); pinMode(rLed, OUTPUT); pinMode(bLed, OUTPUT);
  starttime = millis();
  lcd.begin(16, 2);
}

void loop() {
  duration1 = pulseIn(pin1, LOW);
  duration2 = pulseIn(pin2, LOW);
  lowpulseoccupancy1 += duration1;
  lowpulseoccupancy2 += duration2;

  if ((millis() - starttime) > sampletime_ms) {
    ratio1 = lowpulseoccupancy1 / (sampletime_ms * 10.0);
    concentration1 = 1.1 * pow(ratio1, 3) - 3.8 * pow(ratio1, 2) + 520 * ratio1 + 0.62;
    ratio2 = lowpulseoccupancy2 / (sampletime_ms * 10.0);
    concentration2 = 1.1 * pow(ratio2, 3) - 3.8 * pow(ratio2, 2) + 520 * ratio2 + 0.62;

    lcd.setCursor(0, 0); lcd.print("PM10 ");
    lcd.setCursor(6, 0); lcd.print(concentration1, 3);
    Serial.print("concentration1 = "); Serial.print(concentration1);
    Serial.print(" pcs/0.01cf - ");
    Serial.print("concentration2 = "); Serial.print(concentration2);
    Serial.print(" pcs/0.01cf - ");

    // LED & LCD-Anzeige je nach Konzentration
    if (concentration1 < 1000) { showStatus("CLEAN", wLed); }
    else if (concentration1 < 10000) { showStatus("GOOD", gLed); }
    else if (concentration1 < 20000) { showStatus("ACCEPTABLE", yLed); }
    else if (concentration1 < 50000) { showStatus("HEAVY", rLed); }
    else { showStatus("HAZARD", bLed); }

    lowpulseoccupancy1 = lowpulseoccupancy2 = 0;
    starttime = millis();
  }
}

void showStatus(const char* txt, int led) {
  lcd.setCursor(0, 1);
  for (int i = 0; i < 16; ++i) lcd.write(' ');
  lcd.setCursor(4, 1); lcd.print(txt);
  digitalWrite(wLed, led == wLed);
  digitalWrite(gLed, led == gLed);
  digitalWrite(yLed, led == yLed);
  digitalWrite(rLed, led == rLed);
  digitalWrite(bLed, led == bLed);
}

Schaltplan

Arduino-Luftqualitäts-Monitor mit DSM501A-Feinstaubsensor bauen

Herstellungsprozess

  1. Luftqualität messen mit OpenSensors: Arduino & Python Anleitung
  2. Helium-basierter solarbetriebener Luftqualitätssensor: Design- und Deployments-Guide
  3. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  4. Multi-Position Temperatursensor-System für Smart-Home-Integration
  5. K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
  6. Einfachen Hindernissensor mit Arduino bauen – IR-LED & Photodiode Tutorial
  7. DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
  8. Web-fähigen IoT-Messer mit Arduino, Yaler und IFTTT bauen
  9. Arduino-basierte abstoßende Magnetschwebung: Einfache Schaltung & DIY-Anleitung
  10. Fortschrittlicher kohlenstoffbasierter NO₂-Sensor verbessert Innenraumluftüberwachung