środa, 30 stycznia 2019

Domowy miernik zanieczyszczenia powietrza

Chcecie się dowiedzieć, czy macie czyste powietrze w mieszkaniu i na zewnątrz? Można je sobie samodzielnie sklecić. Oto krótka instrukcja dla tych, którzy łapią co nieco w kwestiach elektronicznych.




Najpierw trzeba kupić przez Internet:
-  czujnik pyłów PM10 i PM 2,5 SDS011
- Arduino  (albo bardziej wypasiony NodeMCU, ale to nie u nas)
- wyświetlacz LCD z konwerterem I2C
- czujnik wilgotności i temperatury
- 3 oporniki (ale to tylko wtedy, gdy łączymy je z Arduino, jako dzielnik napięć)
- przewód USB umożliwiający podłączenie powerbanku lub wgranie softwaru.
Potem łączymy powyższe obiekty według schematu, który wszystko klarownie pokazuje:) Nie ma tu jeszcze czujnika wilgotności, bo dopiero jedzie do nas z Chin.



Wszystko wkładamy do pudełka po maśle klarowanym robiąc w nim otworki:
- na wlot powietrza, które będziemy badać
- na usuniecie zbadanego powietrza - w pobliżu wentylatora czujnika
- otwory pomocnicze służące mocowaniu całości urządzenia do wiaderka






Czujnik ma w środku laser, który ma przewidzianą określoną żywotność - niecały rok działania non stop, dlatego najlepiej, gdyby nie był włączony cały cały czas, np. żeby włączał się automatycznie co 5 minut i się wyłączał, wtedy będzie dłużej działał - trzeba sobie do tego celu zmodyfikować oprogramowanie. Ale my uruchamiamy nasze wiaderko okazjonalnie i tak jest skonstruowany software:

#include <SDS011.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define BACKLIGHT_PIN 3

LiquidCrystal_I2C  lcd(0x27,2,1,0,4,5,6,7);

int pinRX=10;
int pinTX=11;

float p10,p25;
int error;

SDS011 my_sds;

void setup() {
 lcd.begin (16,2);
 lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
 lcd.setBacklight(HIGH);
 lcd.home ();
 lcd.print("Pom. P2.5 i P10");

 my_sds.begin(pinRX,pinTX);
 Serial.begin(9600);
 my_sds.wakeup();
}

void loop() {
  error = my_sds.read(&p25,&p10);
  if (! error) {
    lcd.setCursor(0, 0);
    lcd.print("                ");
    lcd.setCursor(0, 0);
    lcd.print("P2.5: "+String(p25));

    lcd.setCursor(0, 1);
    lcd.print("                ");
    lcd.setCursor(0, 1);
    lcd.print("P10:  "+String(p10));
   
    Serial.println("P2.5: "+String(p25));
    Serial.println("P10:  "+String(p10));
  }
}

Jeśli ma się czas, chęci i części można wziąć udział w międzynarodowym, a zarazem ogólnopolskim projekcie i udostępniać oraz porównywać swoje dane z danymi innych. Nie ma obawy, że ktokolwiek ustali położenie czujnika, bo jego lokalizacja jest podana z dokładnością do ok. 1,5 km. Można wtedy również śledzić historię zmian zachodzących w powietrzu. Zajrzyjcie na stronę:


https://deutschland.maps.luftdaten.info/

Przydaje nam się to wiadereczko na różne sposoby, np. włączone w mieszkaniu sugeruje, że już czas na odkurzanie:) (gdy wynik zaczyna być dwucyfrowy, bo normalnie potrafi być jednocyfrowy, jak w Szwecji na zewnątrz na co dzień).

Umieszczone na balkonie i obserwowane przez balkonową szybę daje wyobrażenie o rzeczywistej zawartości pyłów w powietrzu podczas, gdy komunikaty wyświetlane na przystankach tramwajowych są sformułowane idiotycznie (czystość powietrza "powyżej normy" lub "poniżej normy"- innych opcji brak. Zastanawiam się, co uznaje się we Wrocławiu za normę i jak należy rozumieć te zwroty, bo jest to dyskusyjne).

Przy dużych stężeniach pyłów moja Córka wydobywa maseczkę antysmogową ("Kochanie, o jakim prezencie mikołajkowym marzysz? O maseczce antysmogowej" - jest to cytat prawdziwy) i zakłada na usta wychodząc do biblioteki lub na zakupy. Ja mam z tym problem - wydaje mi się, że wszyscy się na mnie gapią, jak idę w tej maseczce, ale podobno o to chodzi.

Może lepiej by było żyć sobie w słodkiej nieświadomości, co do tych pyłów i jedynym sygnałem tego, że pyłów jest więcej byłoby zapalenie oskrzeli u naszego alergika? Działa bezbłędnie - lepiej niż czujnik w wiaderku po maśle.