Detektor oxidu uhličitého je vstupní modul pro Arduino. Tento detektor obsahuje senzor MG811, který slouží pro snímání hladiny CO2 ve svém okolí a na modulu je ještě doplněn několika součástkami pro správnou funkci. Pro nastavení detektoru jsou na modulu také 2 trimry, kdy ten blíže pinu VDD slouží pro případnou kalibraci výstupní hodnoty senzoru. Druhý z trimrů pak určuje detekční hranici, při které se rozsvítí modrá dioda na modulu a zároveň se aktivuje digitální výstup DOUT.
Senzor dokáže měřit koncentraci CO2 přibližně v rozsahu 0 až 10000 ppm (jedna částice z milionu). Pro jeho správnou funkci je ale nutné myslet na určitou dobu předehřevu senzoru. Po zakoupení je doporučeno nechat senzor „zahořet“ alespoň 24-48 hodin. Poté při každém dalším použití bychom měli nechat vždy senzor minimálně 15-20 minut zahřát, abychom dosáhli přijatelně přesných výsledků.
Pro napájení senzoru MG811 je doporučeno použít napětí 5-6 Voltů, přičemž proudový odběr se pohybuje při výhřevu okolo 120 miliampér.
Pro úspěšné propojení modulu MG811 a Arduino desky stačí zapojit celkem 3 vodiče. Propojíme VDD s 5V Arduina, AOUT s pinem A0 a GND se zemí Arduina. Pro pin AOUT musíme vybrat analogový pin, ale pokud chcete využít jiný z dostupných pinů, je nutné tuto volbu provést také na začátku programu.
Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu CO2Sensor, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny společně s vytvořením objektu modulu z knihovny, u kterého zadáváme tři parametry. První parametr je propojovací pin pro analogový výstup senzoru, druhý parametr je inerční koeficient (pro MG811 je to 0.99) a třetí parametr je počet měření, které se provedou pro jedno čtení dat ze senzoru.
V podprogramu setup zahájíme komunikaci po sériové lince a poté provedeme kalibraci CO2 senzoru pomocí funkce z knihovny.
Na začátku nekonečné smyčky loop vždy načteme koncentraci ze senzoru do vytvořené proměnné a tuto informaci poté vytiskneme po sériové lince. Následně provedeme kontrolu, jestli nebyla překročena nastavená hranice 1000 ppm, při jejímž překročení vytiskneme ještě varovnou zprávu pro uživatele. A na konci smyčky loop se po krátké pauze program opakuje.
// Senzor CO2 MG811 // připojení potřebné knihovny #include "CO2Sensor.h" // vytvoření instance senzoru z knihovny, // první parametr je propojovací pin (A0), // druhý parametr je inerční koeficient (0.99), // třetí parametr je počet měření při každém čtení (100) CO2Sensor co2Sensor(A0, 0.99, 100); void setup() { // inicializace komunikace po sériové lince Serial.begin(9600); // kalibrace CO2 senzoru co2Sensor.calibrate(); } void loop() { // načtení CO2 koncentrace ze senzoru do proměnné int hodnota = co2Sensor.read(); // vytištění informací po sériové lince Serial.print("Koncentrace CO2: "); Serial.print(hodnota); Serial.println(" ppm."); // pokud je hodnota vyšší než 1000, // vytiskneme ještě varování pro uživatele if (hodnota > 1000) { Serial.println("Prekrocena bezpecna koncentrace 1000 ppm, vyvetrej!"); } // pauza před novým během smyčky delay(1000); }
Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem CO2 MG811 dostaneme například tento výsledek:
Koncentrace CO2: 396 ppm. Koncentrace CO2: 402 ppm. Koncentrace CO2: 400 ppm. Koncentrace CO2: 404 ppm.
Detektor oxidu uhličitého MG811 je zajímavým senzorem, který dokáže měřit takzvanou kvalitu vzduchu v místnosti díky měření koncentrace CO2. Podle různých studií by měla běžná vyvětraná místnost dosahovat hodnoty okolo 300-400 ppm. Pokud se ale překročí hranice například 1000 ppm, tak může docházet k únavě či nesoustředění. A právě v těchto případech se může hodit zařízení právě s tímto senzorem, kdy si můžeme sami určit varovné hranice a také co se při jejich porušení stane – ať už si vytvoříme zvukovou či světelnou signalizaci, anebo můžeme například sami Arduinem vyvětrat pomocí otevření ventilace. Pro bastlíře pak může být asi největší nevýhodou nemožnost bateriového provozu kvůli nutnosti vyhřívání a také poměrně vysoká cena za modul.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/2988-detektor-oxidu-uhliciteho-co2-mg811-s-analogovym-vystupem.html