Capteur de CO2 / Humidité / Temperature (Confinement)

Materiel :

Spécifications

 

Capteur de CO2 :

Plage de mesure : 0-2000 parties par million (PPM)Voltage de 4.5 a 6V
Courant maximum de moins de 100 mA, le courant moyen de moins est de 50 mA
Mode de sortie UART
http://www.seeedstudio.com/wiki/Grove_-_CO2_Sensor


350~450 ppm : Environnement extérieur
350~1000 ppm : L'air est frais
1000~2000 ppm : L'air est stagnante et vous vous sentez fatigue
2000~5000 ppm : Maux de tête, sommeil, incapable de vous concentrer et même une légère nausée
>5000 ppm : grave epuisement de l'oxygene, des lesions cerebrales permanentes et meme la mort

 

Capteur de temperature et Humidité

Plage de mesure :
Humidité de 5% à 99% HR (humidité relative)
Temperature de -40 a 80°C
Voltage de 3.3 a 6V
Temps de réponse entre 6 et 20 secondes
http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro

 

Une humidité relative de 70% signifie que l'air contient 70% du maximum de vapeur d'eau qu'il peut absorber à cette température. Ainsi votre confort dépend directement d'un subtil équilibre entre la température de l'air et le pourcentage d'humidité : à 60% d'humidité relative, l'inconfort suscité par l'humidité sera plus grand s'il fait 30°C que s'il en fait 20. En effet, l'air à 30°C étant moins vite saturé, c'est à dire pouvant contenir plus de vapeur d'eau que l'air à 20°C, l'être humain ressentira davantage les effets désagréables de l'humidité à 30°C (même si l'humidité est la même). Inversement, une journée humide semblera plus chaude qu'une journée où la température est plus élevée mais l'air plus sec.

L'humidité relative idéale recommandée

D'une manière générale, une humidité relative située entre 30 et 70% recouvre toutes les fourchettes d'humidité conseillées. En Belgique, il est officiellement recommandé d'avoir une humidité située entre 40 et 70%, tandis que selon des experts français, l'humidité relative conseillée se trouve entre 45 et 65%. Dans le milieu médicale, on recommande un taux entre 40 et 60%, une humidité trop faible pouvant occasionner des complications respiratoires. Ainsi, une humidité relative inférieure à 30% est trop peu pour un logement : les personnes confrontées à un tel environnement devront aérer pour renouveler l'air.

Les valeurs critiques de l'humidité relative

Un taux d'humidité relative idéale se situe donc entre 30% et 70%. En France, l'air ambiant extérieur est à 70-80% de degré d'hygrométrie. Naturellement, cette tendance est une moyenne et dépend de la localisation et de la température. Aux Philippines, l'air est littéralement saturé d'humidité puisqu'il frôle les 100% : les crèmes hydratantes ne sont pas commercialisées dans ces contrées. Si vous avez des fleurs, prévoyez au moins 50% d'hygrométrie pour leur bien-être. En revanche, en hiver, l'humidité relative se situera plutôt entre 30 et 50% afin de prévenir la formation de condensation sur les fenêtres, pour une température moyenne située entre 18 et 24°C.

Le montage

Capteur de CO2 sur prise UART
Capteur d'humidité et temperature sur D2

L'enregistrement des valeurs est directement enregistré sur la carte SD dans un fichier CO2.txt

Les données peuvent être visualisé en temps réel depuis la console série du logiciel arduino quant le Linkit One est connecté a l'ordinateur.

Code source

  1.  // Capteur de confinement
  2.  // temps , Temperature , CO2 , humidité
  3.  // Enregistrement sur carte SD
  4.  #include <LSD.h>
  5.  
  6.  //Capteur de co2
  7.  const unsigned char cmd_get_sensor[] = { 0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 };
  8.  unsigned char dataRevice[9];
  9.  int temperature;
  10.  int CO2PPM;
  11.  
  12.  //Capteur d'humidité et temperature
  13.  #include "DHT.h"
  14.  #define DHTPIN 2 // what pin we're connected to
  15.  #define DHTTYPE DHT22 // DHT 22 (AM2302)
  16.  DHT dht(DHTPIN, DHTTYPE);
  17.  float tDHT;
  18.  float hDHT;
  19.  
  20.  void setup() {
  21.   dht.begin(); // initialise le capteur d'humidité
  22.   Serial1.begin(9600); //démarre la communication avec le capteur de CO2
  23.  
  24.   //Ouvre le port serie et attend qu'il soit ouvert:
  25.   Serial.begin(115200);
  26.   Serial.print("Initializing Flash memory...");
  27.   LSD.begin();
  28.   Serial.println("card initialized.");
  29.  }
  30.  
  31.  void loop() {
  32.   String dataString = ""; // Déclaration d'une chaine de caractere pour stoquer les données:
  33.   dht.readHT(&tDHT,&hDHT); // lecture de la temperature de l'humidité
  34.   if(dataRecieve() && hDHT > 0 ) //Si on a recus des donnée du capteur de CO2 et d'humidité
  35.   {
  36.   dataString += millis()/1000;
  37.   dataString += ",";
  38.   dataString += String(CO2PPM);
  39.   dataString += ",";
  40.   dataString += String(tDHT);
  41.   dataString += ",";
  42.   dataString += String(hDHT);
  43.   Serial.println(dataString);
  44.  
  45.   LFile dataFile = LSD.open("CO2.txt", FILE_WRITE); // ouverture du fichier CO2
  46.   // Si le fichier est ouvert on ecris les données
  47.   if (dataFile) {
  48.   dataFile.println(dataString);
  49.   dataFile.close(); //Fermeture du fichier
  50.   } else {
  51.   Serial.println("erreur d'ouverture du fichier CO2.txt");
  52.   }
  53.   }
  54.   delay(2000);
  55.  }
  56.  
  57.  bool dataRecieve(void)
  58.  {
  59.   byte data[9];
  60.   int i = 0;
  61.   //transmt command data
  62.   for(i=0; i<sizeof(cmd_get_sensor); i++)
  63.   {
  64.   Serial1.write(cmd_get_sensor[i]);
  65.   }
  66.   delay(10);
  67.   //begin reveiceing data
  68.   if(Serial1.available())
  69.   {
  70.   while(Serial1.available())
  71.   {
  72.   for(int i=0;i<9; i++) { data[i] = Serial1.read(); }
  73.   }
  74.   }
  75.   if((i != 9) || (1 + (0xFF ^ (byte)(data[1] + data[2] + data[3]
  76.   + data[4] + data[5] + data[6] + data[7]))) != data[8])
  77.   {
  78.   return false;
  79.   }
  80.   CO2PPM = (int)data[2] * 256 + (int)data[3];
  81.   temperature = (int)data[4] - 40;
  82.   return true;
  83.  }