Nous mesurons la concentration de CO2 dans l'appartement avec le MH-Z19

Presque toutes les stations météorologiques, y compris les modèles chinois bon marché pour quelques dollars, peuvent mesurer les paramètres de base de la température de l'air et de l'humidité. Le dioxyde de carbone devient de plus en plus difficile: il n'y a pratiquement aucun appareil disponible dans le commerce qui puisse le mesurer. Pour compliquer la situation, le CO2 est un gaz sans couleur ni odeur, il est donc presque impossible de sentir sa concentration avec le «nez».

Détails et mesures sous la coupe.

Le capteur MH-Z19 lui-même a déjà été décrit ici sur le site. L'article " Vue d'ensemble du capteur de CO2 infrarouge " a été pris comme base , et ce matériau en est la suite logique. La mesure de la concentration de CO2 dans la rue a été écrite ici , mais il n'y avait aucune donnée sur la concentration dans l'appartement. Comblez cette lacune.

Le fer


Les premières choses ont d'abord commandé les composants suivants sur eBay:
- Arduino Micro ATmega32U4 3.3V (prix d'émission 5 $). Parce que le capteur a une logique 3 volts, Arduino ordinaire est préférable de ne pas utiliser.
- Écran LCD OLED I2C 0.91 "128x32 (prix d'émission 7 $). L'écran se connecte aux broches Arduino i2c standard.
- En fait, le capteur MH-Z19 (prix d'émission 28 $).
- Un ensemble de fils avec connecteurs pour contacts à broches (prix d'émission 1-2 $)
Ainsi, le coût total était de ~ 40 $, soit 2600r. Un appareil de marque d'une entreprise bien connue coûte environ deux fois plus cher, bien qu'ici il ne s'agisse probablement pas d'une question d'économie, mais d'un intérêt technique.

Le code pour Arduino a été emprunté à l' article ci-dessus ., la sortie des données à l'écran y a été ajoutée, et pour une analyse des données plus pratique, la sortie a été convertie en un format de ligne simple avec un séparateur. Des horodatages ont également été ajoutés, chacun correspondant à 10 secondes.
Code source
#include <SoftwareSerial.h>
#include <Wire.h>

// I2C OLED
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiWire oled;

// CO2 sensor:
SoftwareSerial mySerial(8,9); // RX,TX
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
unsigned char response[9];

void setup() {
  // Serial
  Serial.begin(9600);
  mySerial.begin(9600);

  // OLED
  Wire.begin();         
  oled.begin(&Adafruit128x32, I2C_ADDRESS);
  oled.set400kHz();  
  oled.setFont(ZevvPeep8x16);  

  oled.clear();  
  oled.println("setup::init()");
}

long t = 0;

void loop() 
{
  mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response[i];
  crc = 255 - crc;
  crc++;

  oled.clear();  
  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
    oled.println("Sensor CRC error");
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.print(String(t)); Serial.print(","); Serial.print(ppm); Serial.println(";");
    if (ppm <= 400 || ppm > 4900) {
      oled.println("CO2: no data");          
    } else {
      oled.println("CO2: " + String(ppm) + " ppm"); 
      if (ppm < 450) {   
        oled.println("Very good");
      }
      else if (ppm < 600) {   
        oled.println("Good");
      }
      else if (ppm < 1000) {   
        oled.println("Acceptable");
      }
      else if (ppm < 2500) {   
        oled.println("Bad");
      }
     else {   
        oled.println("Health risk");
      }
    }
  }
  delay(10000);
  t += 10;
}


Tout cela a été mis en place, le croquis a été versé dans arduino, le résultat ressemble à ceci:
image

Bien sûr, ce n'est pas le sommet du design industriel (prévoit de trouver une sorte de logement), mais pour la tâche d'un périphérique d'affichage qui peut fonctionner à la fois indépendamment et transférer des données via USB, l'appareil fait face. Pour recevoir des données via USB, ouvrez simplement le moniteur de port dans l'IDE Arduino, les données y seront affichées. Le texte à partir de là peut être copié et ouvert dans n'importe quel programme, par exemple dans Excel.

Mesures


La question suivante: que mesurons-nous réellement? L'appareil fournit des données en ppm (parties par million, parties par million). 1000 ppm = 0,1% de CO2. Sur Internet, vous pouvez trouver le tableau suivant des concentrations admissibles:
- 350 - 450 ppm : Niveau normal en plein air.
- <600 ppm : niveaux acceptables. Niveau. Recommandé pour les chambres, les jardins d'enfants et les écoles.
- 600 - 1000 ppm : Plaintes d'air vicié, éventuellement une diminution de la concentration.
- 1000 ppm : les normes les plus élevées des normes ASHRAE (American Society of Heating, Refrigerating and Air-Conditioning Engineers) et OSHA (Occupational Safety & Health Administration).
- 1000 - 2500 ppm: Léthargie générale, diminution de la concentration, maux de tête possibles.
- 2500 - 5000 ppm : Effets néfastes possibles sur la santé.

Et enfin, les résultats. Le capteur a été installé dans la cuisine, les fenêtres sont en métal-plastique, le temps de mesure est d'environ 8 heures.

Les résultats étaient assez intéressants. Le temps horizontal en secondes, 3600 secondes correspondent à 1 heure.

Les courbes sur le graphique sont décryptées comme suit:
0h: lectures d'environ 420ppm (correspondent à la rue), il n'y avait personne à la maison, je rentrais du travail et en même temps allumais le capteur.
0-2 heures: je suis dans la cuisine, on peut voir qu'en présence d'une personne la concentration de co2 monte lentement quelque part à 900ppm.
2-4 heures: j'ai quitté la pièce, vous pouvez voir comment la concentration diminue lentement.
4-6 heures: je suis revenu, la concentration a recommencé à croître.
6ème heure: un pot de raviolis est placé sur le poêle. Il est intéressant de voir comment la concentration a augmenté presque instantanément à 1700 ppm, puis a lentement commencé à décliner. Bien que le gaz n'ait pas brûlé pendant longtemps (10 à 15 minutes), des niveaux élevés> 1 000 ppm se maintiennent pendant au moins une heure.
Fin du graphique: une fenêtre s'est ouverte et le niveau de CO2 a chuté presque immédiatement.

Conclusions


L'appareil s'est avéré assez intéressant, et particulièrement pertinent pour ceux qui travaillent à domicile à l'ordinateur. Ainsi, par exemple, lors de la rédaction de cet article, le niveau de CO2 est passé de 500 à 770 ppm en intérieur. Regarder l'écran vous oblige à ouvrir la fenêtre plus souvent, ou enfin à penser à l'appareil dans la maison avec une ventilation normale (probablement le mode de micro-ventilation dans la fenêtre ne serait pas superflu, mais plutôt une sorte de hotte). Si j'achetais de nouvelles fenêtres maintenant, j'aurais probablement pensé à un modèle plus ou moins de haute qualité avec une ventilation normale.

Il est également important de noter la pertinence d'une bonne ventilation dans la cuisine: comme le montre le graphique, même en 10 minutes, un brûleur à gaz peut «brûler» la totalité de l'oxygène, ce qui porte la concentration de CO2 à un niveau très élevé. Les mesures dans la chambre ont montré qu'en termes de ventilation aussi, tout n'est pas très bon: le matin, la concentration de CO2 est supérieure à 1000 ppm et pour le travail mental, un bon sommeil est très important.

En général, cet appareil simple et peu coûteux vous permet de contrôler très efficacement la qualité de l'air dans un appartement ou un bureau.
L'auteur souhaite à tous bonne santé et bonne humeur. Et bien sûr, du bon air aussi.

Source: https://habr.com/ru/post/fr395755/


All Articles