Elkezdett foglalkoztatni az otthoni levegő minőségének a témája. Édesanyám mindig mondta, hogy szellőztessek, persze én inkább csukva szerettem tartani az ablakot mert nem akartam a hideget és meleget beengedni. A szobaajtót is becsuktam, hogy a főzés és a tv hangja se érjen el. Nem ideális körülmények a létezésre. Gondoltam vásárolok egy szén-dioxid mérőt és megnézem tényleg van-e értelme szellőztetni. Miért szén-dioxid mérőt? Azért mert az ember lélekzéskor szén-dioxidot lélekzik ki, ami így egyre jobban feldúsul a zárt térben. Utána lehet nézni milyen tüneteket okoz a túl sok szén-dioxid a levegőben. Fáradtság, fejfájás, szem irritáció, száraz torok, szédülés, koncentrációzavar, köhögés.
Tehát vettem egy CO2 szenzort (Sensirion SCD41 kb 3x3cm a mérete) és elkezdtem mérni a hálószobában lefekvés után a széndioxid koncentrációt a levegőben. Mennyi a normális co2 mennyiség? Szabad levegőn kb 400ppm jelenleg a co2 koncentráció. Ez lenne az ideális szint. 1000ppm felett már magasnak mondják. A szenzor amit vettem ppm értéket ad, tehát ideális a méréshez.
Megjegyzem a lakásban egyedül tartózkodtam.
A hálószobám 8m2 nagyságú a légköbméter 21 m3. Elég kicsi! Szóval éjszakára becsuktam ajtót ablakot és mértem. A kiinduló érték 550ppm volt. Ez egy óra múlva 900ppm, 2 óra múlva 1200ppm, 3 óra múlva 1500ppm, 4 óra múlva 1860ppm, 4 és fél óra múlva 2000ppm-re nőtt! Ekkor felkeltem és kinyitottam az ablakot. Eléggé rémisztőnek tűnik a dolog.
Következő mérés nyitott szobaajtó, csukott ablak. A lakás 63m2-es. 530ppm-ről indultam 7 és fél óra alatt még nem érte el az 1000ppm-et, de fokozatosan emelkedett a szint.
Következő mérés. A másik szobában az ablakot bukóra hagytam nyitva egész éjjel. Így egész végig 500-550ppm körül maradt a szén-dioxid szint. Azóta így alszom.
Kíváncsi voltam észreveszek-e változást az alvás minőségében. De még mennyire, sokkal nyugodtabban alszom és kipihentebben ébredek. Ajánlom mindenkinek.
Vajon ha mondjuk ketten aludtunk volna a szobában csukott ajtóval, ablakkal milyen értékek lettek volna? Talán ezért olyan fáradtak az emberek? Vagy egy irodában ahol egy szobában 8-an ülnek és nem megy a szellőzés ott mi lehet?
Itt felmerülhet az a kérdés, hogy oké, nyitva hagyom az ablakot, de akkor bejön a hideg vagy a meleg, bejön a zaj, a szmog. Ez mind igaz. Ezért rosszabb a városban lakók életminősége. Én jelenleg Budapesten a XI. kerületben lakom. Éjszakára bukón nyitva hagyom az ablakot a lakás nem hül ki. A zaj elviselhető. A szmog, légszennyezés nyomon követhető a meteorológia szolgálat mérőállomásaival, vagy az idokep.hu oldalon. De leginkább a következő weboldalt ajánlom:
https://sensor.community/hu/
Itt közösségi közreműködők, bárki által üzembe helyezett érzékelők adatait valós időben feltöltve látható a levegő minősége. Ha a légszennyezettség közepesnél rosszabb, akkor nem hagyom nyitva az ablakot. Ideális az lenne ha egy légszűrős szellőztető rendszert építenék a lakásba ami akkor is szellőztetne ha kint szennyezett a levegő. Szerencsére a szennyezett napok elég ritkák ott ahol lakom így ebbe nem fogtam bele.
Hogy valós képet kaphassak a lakásomnál a levegő minőségéről, vásároltam egy szálló por/Nitrogén oxid mérő szenzort is. (Sensirion Sen55 - kb 5x5 cm nagy)
Ez valós időben méri a PM1.0, PM2.5, PM4.0 és PM10 méretű részecskéket a levegőben. Valamint a Nitrogén oxidokat is. Ha valaki nem akar erre szánni, az a sensor.community oldalon nyomon tudja követni a szennyezéseket. Én idén Budapesten Január 31-én és február 1-én éreztem, hogy nagyon szennyezett a levegő, de azt is elfújta a szél talán már másnap vagy harmadnap. Legutóbb húsvétkor érkezett szaharai homok a levegőben, ez rontott a levegő minőségen.
Ezen kívül rendben volt a levegő minősége. Ezt a cikket 2024. április 4-én írom.
A meteorológiai szolgálat méréseivel kapcsolatban látok furcsaságokat. A levegő munkacsoport azt állítja a mérőállomásai nem a legdurvább helyeken hanem parkokban vannak. Az is torzítja a mérést, hogy óránkénti értéket adnak csak meg és ott is a legrosszabb mérési értékeket. Szerintem a közösségi valós idejű mérések sokkal pontosabban mutatják a helyzetet.
Más kérdés nagyvároson kívül, sok helyen fával tüzelnek, nagyon sok helyen szemetet égetnek. Ilyenkor ha van az embernek saját mérőeszköze jobb helyzetben van, mert ha más nem teszi közzé a mérési adatait a faluban mondjuk akkor nem tudja az ember mi van, csak az orrára és szemére hagyatkozhat.
A legjobbnak a levegő szűrős, levegőt felmelegítő/hűtő folyamatos szellőztető rendszer tűnik.
CO2 mérő összeállítása:
Eszközök amit használtam:
-Arduino Uno
-Sensirion SCD41 ez nagyon drága volt, 25.000 forint, de rendeltem egyet kínából is az aliexpressről, ott 8700-ért lehet kapni és mint kiderült ugyan olyan jó
-kábel: JST1.0 SH1.0 4-pin cable with socket male DuPont wire For STEMMA QT/QWIIC
stemma qt 4-es csatlakozós a másik oldala sima tűs
-Adafruit Monochrome 0.96" 128x64 OLED Graphic Display - STEMMA QT
erről a kijelzőről lehet leolvasni az értékeket, aki számítógépről használja, annak nem kell kijelző.
Ez 10.000 forint volt, de aliexpressről 600 forintért rendeltem egy másikat.
-kábel: JST1.0 SH1.0 4-pin cable with socket male DuPont wire For STEMMA QT/QWIIC
ebből a stemm qt-ból olyat kell venni aminek mindkét vége a 4-es csatlakozójú
Én az I2C protokolt használtam. Itt két kábel kell az adatforgalomnak, a másik kettő a pozitív és negatív kábel az áramellátáshoz. A co2 szenzorba bedugtam a 4-es csatlakozó egyik végét, a másik végét a kijelzőbe. A kijelző másik csatlakozójába a 4-es csatlakozó és a másik végén tűs kábelt.
A 4 kábel közül kettő a pozitív és negatív a másik kettő az Arduino SCL és SDA csatlakozójára kötendő. Az én képeimen a kábelek színezése eltérő lehet mint amit kap az ember a boltban, mindig ellenőrizzük melyik hova csatlakozik, a szín nem mindig egyezik!+
Az I2C eszközöknek van egyedi azonosítójuk a 0x3D és 0x3C a kijelzőké, az scd41-nek 0x62.
A használt kód az eredeti adafruit kijelzővel:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Arduino.h>
#include <SensirionI2CScd4x.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library.
// On an arduino UNO: A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO: 2(SDA), 3(SCL), ...
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
SensirionI2CScd4x scd4x;
void setup() {
Serial.begin(9600);
//display.dim(true);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
display.display();
delay(500); // Pause for 2 seconds
// Clear the buffer
display.clearDisplay();
Wire.begin(0x62);
//uint16_t error;
// char errorMessage[256];
scd4x.begin(Wire);
scd4x.startPeriodicMeasurement();
display.dim(true);
}
void loop() {
delay(5000);
uint16_t co2;
float temperature;
float humidity;
scd4x.readMeasurement(co2, temperature, humidity);
display.clearDisplay();
display.setTextSize(3); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
// display.print(F("Co2: "));
display.println(co2);
// display.print(F("Temperature: "));
display.println(temperature);
// display.print(F("Humidity: "));
display.println(humidity);
display.display();
}
Eszközök amit használtam:
-Arduino Uno
-SEN55 érzékelő. Ez sem olcsó, 8.000 volt, az aliexpressen nem is találtam meg. Elvileg vannak alternatív mérők is, én ezt vettem meg végül.
-kábel - ennek spécibb, 6 tűs a csatlakozója, de ugyan úgy I2C interfészen is tud kommunikálni-Adafruit Monochrome 0.96" 128x64 OLED Graphic Display - STEMMA QT
erről a kijelzőről lehet leolvasni az értékeket, aki számítógépről használja, annak nem kell kijelző.
Ez 10.000 forint volt, de aliexpressről 600 forintért rendeltem egy másikat.
-kábel: JST1.0 SH1.0 4-pin cable with socket male DuPont wire For STEMMA QT/QWIIC
stemma qt 4-es csatlakozós a másik oldala sima tűs
Én az I2C protokolt használtam. Itt két kábel kell az adatforgalomnak, a másik négy a következő:
egyik plusz a másik minusz, az 5-ös is mehet a földre mert ezzel választjuk ki, hogy az I2C protokollt használja. 6-ost nem kell bedugni sehová. 3-as 4-es a két adatkábel.
Az I2C eszközöknek van egyedi azonosítójuk a SEN55-nek 0x69.
A használt kód:
//#include <SensirionI2CSen5x.h>
#include <Wire.h>
//#include <SPI.h>
//#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
// SEN55
const int16_t SEN55_ADDRESS = 0x69;
int a = 1;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
//Serial.begin(9600);
Wire.begin();
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) {
Serial.println(F("Nem találom a kijelzőt."));
for(;;); // Don't proceed, loop forever
}
display.display();
delay(500); // Pause for 2 seconds
// Send command to start measurement (0x0021)
Wire.beginTransmission(SEN55_ADDRESS);
Wire.write(0x00);
Wire.write(0x21);
Wire.endTransmission();
//Serial.println("PM1.0\tPM2.5\tPM4.0\tPM10.0\tVOC_Index\tNOx_Index\tRH\tT");
// Wait until sensor is ready, fan is initialized
delay(1000);
}
void loop() {
// Initializing variables
uint16_t pm1p0, pm2p5, pm4p0, pm10p0;
int16_t voc, nox, humidity, temperature;
uint8_t data[24], counter;
// Send command to read measurement data (0x03C4)
Wire.beginTransmission(SEN55_ADDRESS);
Wire.write(0x03);
Wire.write(0xC4);
Wire.endTransmission();
// Wait 20 ms to allow the sensor to fill the internal buffer
delay(20);
// Read measurement data of SEN55, after two bytes a CRC follows
Wire.requestFrom(SEN55_ADDRESS, 24);
counter = 0;
while (Wire.available()) {
data[counter++] = Wire.read();
}
// PM1.0 to PM10 are unscaled unsigned integer values in ug / um3
// VOC level is a signed int and scaled by a factor of 10 and needs to be divided by 10
// humidity is a signed int and scaled by 100 and need to be divided by 100
// temperature is a signed int and scaled by 200 and need to be divided by 200
pm1p0 = (uint16_t)data[0] << 8 | data[1];
pm2p5 = (uint16_t)data[3] << 8 | data[4];
pm4p0 = (uint16_t)data[6] << 8 | data[7];
pm10p0 = (uint16_t)data[9] << 8 | data[10];
humidity = (uint16_t)data[12] << 8 | data[13];
temperature = (uint16_t)data[15] << 8 | data[16];
voc = (uint16_t)data[18] << 8 | data[19];
nox = (uint16_t)data[21] << 8 | data[22];
// Print output
display.clearDisplay();
display.setTextSize(1); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0);
//display.print(F("PM 1.0: "));
//display.println(String(float(pm1p0) / 10));
display.print(F("PM 2.5: "));
display.println(String(float(pm2p5) / 10));
//display.print(F("PM 4.0: "));
//display.println(String(float(pm4p0) / 10));
display.print(F("PM 10 : "));
display.println(String(float(pm10p0) / 10));
display.print(F("Humidi: "));
display.println(String(float(humidity) / 100));
display.print(F("Temper: "));
display.println(String(float(temperature) / 200));
display.print(F("VOC : "));
display.println(String(float(voc) / 10));
display.print(F("NOx : "));
display.println(String(float(nox) / 10));
if (a == 1){
display.print(F("----"));
a= a-1;
} else if (a == 0) {
display.print(F("++++"));
a = a+1;
}
display.display();
// Wait 2 s for next measurement
delay(2000);
}
Nincsenek megjegyzések:
Megjegyzés küldése