Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Onderdelen en benodigdheden

Onderdeel Aantal Opmerking
Arduino Nano R3 1
SDS018 PM-sensor (laser scattering) 1 Datasheet
DHT22 temperatuur/vochtigheid sensor (module met pull-up & condensator) 1
OLED Display I2C SSD1306 (128x32) 1
LED Groen 3mm 1
LED Geel 3mm 1
LED Rood 3mm 1
Condensator 100 nF 1 Optioneel voor DHT22
Weerstand 4.7 kΩ 1 Optioneel pull-up voor DHT22
Powerbank (5V USB) 1 Voeding
Weerstand 390 Ω 3 Voor LED's
Machine schroef M3x16 4 Behuizing
Machine schroef M3x6 1 SDS018 bevestiging
LED-beugel 3mm (optioneel) 3 Montage hardware
Female jumper kabels 3
Krimpkous 1
Pin header 2-pins 1
Jumper (0.1") 1 Voor programmeermodus

Benodigde tools en machines

  • Soldeerbout
  • Loodvrij soldeertin
  • 3D-printer (voor behuizing)
  • Lijmpistool
  • Draadloze boor/schroevendraaier

Apps en online services

  • Arduino IDE

Over dit project

Abstract

Experimentele studies suggereren dat fijnstof (PM) kan fungeren als "drager" voor virale infecties zoals COVID-19. Het virus kan over grotere afstanden worden getransporteerd door in de lucht zwevende deeltjes en uren tot weken infectieus blijven. Luchtverontreiniging kan dus de verspreiding vergroten.

In Noord-Italie daalde de fijnstofconcentratie tijdens de lockdown niet significant, omdat intensive veehouderij (naast fabrieken en auto's) grote hoeveelheden PM10/PM2.5 produceert. Wetenschappers zien een correlatie tussen hoge PM10-waarden en hogere infectiecijfers in de Po-vallei.

Inleiding

Geïnspireerd door het Italiaanse onderzoeksprogramma "Report" over vervuiling door intensive veehouderij. Dierlijke afvalstoffen (mest, urine) produceren ammoniak, waterstofsulfide, methaan en fijnstof (PM10, PM2.5). In Lombardije komt 85% van de ammoniak uit mest. Een studie (maart 2020) toont een significante relatie tussen dagelijkse PM10-overschrijdingen en COVID-19 verspreiding (10-29 feb 2020).

Zuid-Italie (minder vervuild) toonde klassieke persoon-tot-persoon transmissie, terwijl Noord-Italie een versneld patroon vertoonde door fijnstof als drager. Vochtigheid en temperatuur beïnvloeden virusoverleving: lage vochtigheid (<40% of >60%) en gematigde temperaturen bevorderen overleving.

Mijn oplossing

Een herhaalbaar, goedkoop, gebruiksvriendelijk apparaat dat PM10, temperatuur en relatieve vochtigheid meet om te waarschuwen bij gevaarlijke waarden. Mensen kunnen dan thuisblijven, een masker dragen of terugkeren.

Het apparaat bestaat uit:

  • SDS018 (PM10/PM2.5)
  • DHT22 (temperatuur/vochtigheid)
  • OLED I2C display
  • 3 LED's (groen, geel, rood)
  • Arduino Nano
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Alarmniveaus en LED-indicatie

Niveau PM10 (µg/m³) Vochtigheid (%) LED's
Normaal 0 – 25 40 – 60 Allemaal UIT
Laag 0 – 25 <40 of >60 Groen AAN
Laag 26 – 50 40 – 60 Groen AAN
Waarschuwing 26 – 50 <40 of >60 Groen + Geel AAN
Waarschuwing >51 40 – 60 Groen + Geel AAN
Alarm >51 <40 of >60 Groen + Geel + Rood AAN
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

SDS018 - PM10 Sensor

Meet deeltjes 0.3–10µm via laserverstrooiing. UART output, ingebouwde ventilator, resolutie 0.3 µg/m³, CE/FCC/RoHS.

Aansluiting SDS018 op Arduino Nano:

  • Pin 3 (5V) → 5V Nano
  • Pin 5 (GND) → GND Nano
  • Pin 7 (TX) → RX Nano (D0)
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

DHT22 Sensor

Digitale temperatuur (-40–80°C, ±0.5°C) en vochtigheid (0–100%, 2–5%). 3–5V, 2.5mA, sample rate 0.5 Hz.

Aansluiting:

  • VDD → 5V Nano
  • GND → GND Nano
  • 100nF condensator tussen VDD-GND
  • 4.7kΩ pull-up tussen DATA-VDD
  • DATA → D2 Nano
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Bibliotheek: Adafruit DHT sensor library v1.3.10

OLED I2C Display (SSD1306)

128x32 pixels, wit op zwart, 3.3–5V, I2C.

Aansluiting:

  • VCC → 5V Nano
  • GND → GND Nano
  • SCL → A5 Nano
  • SDA → A4 Nano
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Bibliotheek: Adafruit SSD1306 v2.2.1

LED-aansluitingen

Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit
  • Rood anode → D3, katode via 390Ω → GND
  • Groen anode → D4, katode via 390Ω → GND
  • Geel anode → D5, katode via 390Ω → GND

Arduino Nano Hardware Aanpassing

Om de SDS018 UART te lezen terwijl de USB-seriële poort vrij blijft voor programmeren, wordt de SMD-weerstand op de RX-lijntje (naar USB-chip) verwijderd en verticaal gesoldeerd met draden naar een pin header. Jumper erop = programmeermodus, jumper eraf = SDS018 communicatie. Alternatief: weerstand permanent verwijderen (dan niet meer herprogrammeerbaar).

Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Voeding

Arduino Nano via USB (powerbank) of Vin (7-12V). Gekozen: powerbank op USB.

Behuizing en Montage

3D-geprinte oranje PLA behuizing in twee delen (onder: Arduino + SDS018; boven: DHT22, display, LED's). Openingen voor USB, SDS018 inlaat, LED's. Bevestiging met lijmpistool en M3 schroeven. Zie bijgevoegde 3D-bestanden (Sketchfab links).

Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Firmware

Arduino sketch met vereenvoudigd flowchart:

Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Opstart: peripheral setup, LED-test. Hoofdlus (elke 2 sec):

  1. DHT22 uitlezen → temperatuur & vochtigheid naar Serial Monitor
  2. SDS018 uitlezen (10 bytes UART) → PM2.5 & PM10 naar Serial Monitor
  3. Bepaal alarmniveau op basis van PM10 en vochtigheid → stuur LED's
  4. Display wisselt elke cyclus: PM10 + vochtigheid OF PM2.5 + temperatuur. Bij alarm: "Alarm!!!" ipv PM10.
Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Complete Code

#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

int startdhr22 = 0;
int switchDisplay = 0;
const int ledRed = 3, ledGreen = 4, ledYellow = 5;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(ledYellow, OUTPUT);
  dht.begin();
  Serial.begin(9600);
  Serial.println("start");
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE);
  // LED test
  digitalWrite(ledGreen, HIGH); delay(500);
  digitalWrite(ledYellow, HIGH); delay(500);
  digitalWrite(ledRed, HIGH); delay(500);
  digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  delay(500);
}

void loop() {
  // DHT22
  if(0 == startdhr22) { delay(2000); startdhr22 = 1; }
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); return; }
  Serial.print(F("Humidity: ")); Serial.print(h); Serial.print(F("% Temperature: ")); Serial.print(t); Serial.println(F("°C"));

  // SDS018
  uint8_t dataIN[10] = {0};
  float pm25, pm10;
  while(Serial.available() > 0) {
    for(int i=0; i<10; ++i) dataIN[i] = Serial.read();
    if((0xAA == dataIN[0]) && (0xC0 == dataIN[1]) && (0xAB == dataIN[9])) {
      uint8_t cksum = 0;
      for(int i=2; i<=7; ++i) cksum += dataIN[i];
      if(cksum == dataIN[8]) {
        digitalWrite(LED_BUILTIN, HIGH);
        uint8_t pm25Lo = dataIN[2], pm25Hi = dataIN[3];
        uint8_t pm10Lo = dataIN[4], pm10Hi = dataIN[5];
        pm25 = ((pm25Hi * 256.0) + pm25Lo)/10.0;
        pm10 = ((pm10Hi * 256.0) + pm10Lo)/10.0;
        Serial.print("PM2.5: "); Serial.print(pm25); Serial.println(" ug/m3");
        Serial.print("PM10: "); Serial.print(pm10); Serial.println(" ug/m3");
      }
      Serial.println("-----------------");
    }
    Serial.flush();
  }

  // LED logica
  if((pm10 <= 25) && (h >= 40 && h <= 60)) { // Normaal
    digitalWrite(ledGreen, LOW); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if((pm10 <= 25) && (h < 40 || h > 60)) { // Laag (vochtigheid)
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if((pm10 > 25 && pm10 <= 50) && (h >= 40 && h <= 60)) { // Laag (PM)
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, LOW); digitalWrite(ledRed, LOW);
  } else if((pm10 > 25 && pm10 <= 50) && (h < 40 || h > 60)) { // Waarschuwing
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW);
  } else if((pm10 > 50) && (h >= 40 && h <= 60)) { // Waarschuwing (hoge PM)
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, LOW);
  } else { // Alarm
    digitalWrite(ledGreen, HIGH); digitalWrite(ledYellow, HIGH); digitalWrite(ledRed, HIGH);
  }

  // Display
  if(0 == switchDisplay) {
    display.clearDisplay(); display.setTextColor(SSD1306_WHITE); display.setCursor(0,0);
    if(pm10 > 50) display.print("Alarm!!!");
    else { display.print("PM10:"); display.println(pm10); }
    display.print(" HR%:"); display.println(h);
    display.display(); switchDisplay = 1;
  } else {
    display.clearDisplay(); display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); display.setCursor(0,0);
    display.print("PM25:"); display.println(pm25);
    display.print("T[C]:"); display.println(t);
    display.display(); switchDisplay = 0;
  }
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1500);
}

3D-print bestanden (Custom parts)

Schema

Zelfbouw Arduino PM10, Temperatuur & Vochtigheid Sensor Kit

Productieproces

  1. Hoe COVID-19 Automatisering in de Kunststofindustrie Versnelde
  2. Hoe COVID-19 De Toekomst Van Werk En Automatisering Herschaft – Inzichten Uit Een Nieuw Onderzoek
  3. Hoe automatisering productieveerkracht versnelde tijdens COVID-19
  4. COVID-10 en het Einde van het Post-WWII Economisch Paradigma
  5. Het Pandemie-effect: COVID-10 Versnelt Blockchain en Cryptocurrency Innovatie
  6. COVID-19 versnelt het einde van jaarlijkse zender RFP's
  7. Wayfair & COVID-19: Belastingvrije verkopers uitdagingen in een post-pandemie economie
  8. De vaardigheidskloof overbruggen: Reskilling en heropleiding strategieën post-COVID voor fabrikanten
  9. COVID‑19 Richtlijnen & Bronnen voor Productieleiders
  10. Snelle, nauwkeurige COVID-19 detectie met grafene-technologie
  11. SABIC's circulaire benadering: Kunststofverpakking, veiligheid en duurzaamheid tijdens COVID-19