Capteur CO2 Gravity SEN0219
(et capteurs associés)
(pilote pour système Mensura disponible à la fin de la page)
- Deuligne est une plaque à mettre sur l'Arduino, permettant d'afficher deux lignes de caractères ; un type voisin est LCD Shield de DFRobot
- le capteur Gravity SEN0219 permet de mesurer le CO2 par absorption d'infrarouge (entre 0 et 5000 ppm)
- le capteur DHT 11 permet de mesurer à la fois l'humidité relative de l'ai ambiant et sa température.
Ces capteurs mettent quelques secondes à réagir, ils sont donc adaptés à des mesures lentes (par exemple toutes les 5 secondes, pendant quelques heures ou quelques jours).
On peut réaliser un appareil de mesure autonome (alimentation en 5V, par USB, transformateur ou batterie), mais aussi connectable à l'ordinateur pour faire des mesures répétées sur un temps long.
1 Où se procurer le matériel et les composants logiciels ?
(décembre 2018)
Arduino Uno : 22,50 euros chez www.kubii.fr, 19,45 chez www.lextronic.fr (il existe d'autres fournisseurs, à des prix comparables)
Afficheur Deuligne : https://snootlab.com/, 39 euros totalement monté, ou 24 euros partiellement monté.
Capteur de CO2 SEN0219 : 65,95 euros chez www.gotronic.fr (autres revendeurs possibles)
Capteur d'humidité et de température DHT11 : 6,30 euros chez boutique.semageek.com (autres revendeurs possibles).
Où se procurer les composants logiciels :
Le logiciel Arduino est à télécharger sur www.arduino.cc
La bibliothèque pour Deuligne vient du site du fournisseur, la bibliothèque nécessaire pour le capteur de CO2 est « wire », normalement disponible avec le logiciel Arduino.
La bibliothèque pour DHT11 provient de https://www.dfrobot.com/image/data/DFR0067/dht.zip, mais il existe d'autres bibliothèques trouvables sur internet.
2 Branchements des capteurs
Les deux capteurs utilisés ont 3 fils : un noir pour la masse (0 V), un rouge pour l'alimentation en +5 V, et un bleu pour la mesure.
2.1 Capteur de CO2
Il est à brancher sur une entrée analogique, côté bas du Deuligne ou du LCDShield. Mettre le fil noir à un connecteur GND et le fil rouge à +5 V. Le fil bleu pourrait être mis à divers connecteurs ; ici, on choisit A1.
2.2 Capteur d'humidité et de température DHT11
Il est à brancher du côté « entrées/sorties binaires ». Fil noir à GD, fil rouge à AR, et fil bleu à D4. Le programme ci-dessous est pour Deuligne, mais on peut en faire une variante pour LCDShield.
2.2 Autres capteurs analogiques : à mettre sur A2
Le programme ci-dessous est pour LCDShield, mais on peut en faire une variante pour Deuligne
3 Pour Deuligne et DHT11
Ce programme est à injecter dans Arduino ; il permet d'afficher les mesures de CO2, humidité et température sur l''écran à cristaux liquides et de les envoyer vers l'ordinateur. Le programme n'est pas bloqué par l'absence d'un matériel : on peut l'utiliser sans ordinateur, avec juste l'affichage sur Deuligne, ou bien sans Deuligne, avec juste l'ordinateur, ou avec un seul des deux capteurs...
/***************************************************
* Infrared CO2 Sensor0-5000ppm
* ****************************************************
* This example The sensors detect CO2
*
* @author lg.gang(lg.gang@qq.com)
* @version V1.0
* @date 2016-7-6
*
* GNU Lesser General Public License.
* See for details.
* All above must be included in any redistribution
* ****************************************************/
// intégration des capteurs d'humidité DHT11 et de CO2 par
// Pierre Dieumegard, 4 décembre 2018
#include
dht DHT;
#define DHT11_PIN 4
#include "Wire.h"
#include
Deuligne lcd;
int sensorIn = A1;
double total=0;
void setup(){
Serial.begin(9600);
// Set the default voltage of the reference voltage
analogReference(DEFAULT);
lcd.init();lcd.print("hello !");//Print a message to the LCD.
}
int chk; //pour l'humidité
void loop(){
//Lecture de la tension pour CO2
int sensorValue = analogRead(sensorIn);
total=0;
for (int i=1; i <= 50; i++){
total=total+analogRead(1) ; delay(5);
}
// Conversion en volts
float voltage = (total/50)*(5000/1024.0);
if(voltage == 0)
{
Serial.println("Problème");
lcd.clear(); lcd.print("Problème");
}
else if(voltage < 400)
{
Serial.println("Préchauffage");
lcd.clear(); lcd.print("préchauffage");
}
else
{
int voltage_diference=voltage-400;
float concentration=voltage_diference*50.0/16.0;
lcd.clear();
//Print CO2 concentration
Serial.print("CO2: ");Serial.print(concentration);
Serial.print(" ppm");
lcd.setCursor(0,0);lcd.print("CO2: ");
lcd.print(concentration);lcd.print("ppm");
//maintenant, humidité et température
Serial.print(" // DHT11, \t");
chk = DHT.read11(DHT11_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// Affichage Humidité et température, sur écran et USB
Serial.print("Humid= "); Serial.print(DHT.humidity,1);Serial.print(",\t");
Serial.print("T= "); Serial.println(DHT.temperature,1);
lcd.setCursor(0,1);
lcd.print("H=");lcd.print(DHT.humidity);
lcd.print("//T=");lcd.print(DHT.temperature);
}
delay(1000);
}
4.1 Mesures affichées sur l'écran à cristaux liquides
CO2
Il faut quelques dizaines de secondes pour le capteur soit fonctionnel. Pendant ce temps, la première ligne de l'afficheur indique « Préchauffage ».
Ensuite, elle affiche « CO2 », et la concentration en ppm
Humidité et température
La partie gauche de la deuxième ligne est « H= » puis la valeur de l'humidité relative (en pourcentage).
La partie droite indique « T= » puis la température en degrés Celsius.
4.2 Récupération des données par un ordinateur
(par connexion USB)
Simple logiciel de communication
On peut prendre le logiciel Arduino (option Outils/moniteur série). Il faut régler la vitesse de communication à 9600 bauds. On voit alors une série de lignes du type « CO2: 1240.63 ppm // DHT11, OK, Humid= 46.0 T= 19.0 ».
En important ces lignes dans un tableur de type LibreOffice (par copier/coller), en indiquant que les valeurs sont séparées par des espaces, les données sont dans diverses colonnes, séparées par des colonnes de texte.
Logiciel d'Exao de la famille Mensura
Ces logiciels utilisent des « pilotes d'appareil de mesure » : il suffit de faire le pilote correspondant au montage Arduino + capteur(s) pour que les logiciels puissent faire les mesures. Un pilote est disponible sur http://sciencexp.free.fr/index.php?perma=capteurCO2GravitySEN0219 (le pilote pour Windows en PureBasic doit être facile à compiler en Linux)
à télécharger :
- pilote Windows pour Arduino + capteur CO2 + capteur Humidité/Température (réalisé en PureBasic)
- kit de démarrage, contenant le pilote précédent, et le logiciel Mensurasoft-LZ, démarrant automatiquement avec le pilote.
- fichier pdf correspondant à l'information de cette page
4 Pour LCDShield et capteur quelconque connecté en A2
C'est le même principe, mais l'afficheur est d'une autre origine (le programme est donc un peu différent) et le capteur est connecté sur une entrée analogique et non sur les entrées/sorties binaires.
Les programmes sont semblables, bien qu'un peu différents à cause de la différence des afficheurs.
Pilote (bibliothèque dynamique) pour Windows
Kit de démarrage pour Windows, contenant le pilote précédent et MensurasoftLZ
(Utilisateurs de Linux : le programme à injecter dans Arduino est identique ; recompilez le pilote en PureBasic)
Dernière modification le 13/01/2021