Item:Capteur de CO2 SENSEAIR S8 : Différence entre versions

m (Révocation des modifications de Antonydbzh (discussion) vers la dernière version de Julienrat)
(Balise : Révocation)
 
(11 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 15 : Ligne 15 :
 
Document PDF : http://co2meters.com/Documentation/Manuals/DS_SE_0119_CM_0177_Revised8.pdf
 
Document PDF : http://co2meters.com/Documentation/Manuals/DS_SE_0119_CM_0177_Revised8.pdf
  
*Mesure du CO2: infrarouge non dispersif (NDIR)
+
*Mesure du CO2 : infrarouge non dispersif (NDIR)
*Méthode de mesure: diffusion
+
*Méthode de mesure : diffusion
*Plage de mesure: (0-10 000 ppm)
+
*Plage de mesure : (0-10 000 ppm)
*Temps de réponse: 90% à 2 minutes
+
*Temps de réponse : 90% à 2 minutes
*Intervalle de mesure: 0,5 Hz (toutes les 2 secondes)
+
*Intervalle de mesure: 0,5 Hz (toutes les 2 secondes)
 
*Précision CO2: ± 70ppm ± 3% de la valeur mesurée
 
*Précision CO2: ± 70ppm ± 3% de la valeur mesurée
 
*Options de communication: UART Modbus
 
*Options de communication: UART Modbus
*Sortie disponible: analogique
+
*Sortie disponible : analogique
*Espérance de vie du capteur:> 15 ans
+
*Espérance de vie du capteur : > 15 ans
*Intervalle de maintenance: aucun entretien requis
+
*Intervalle de maintenance : aucun entretien requis
*Autodiagnostic: contrôle de fonctionnement complet au démarrage
+
*Autodiagnostic : contrôle de fonctionnement complet au démarrage
  
 
<br />
 
<br />
Ligne 41 : Ligne 41 :
 
|-
 
|-
 
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
 
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
| valign="middle" align="left" |AirGradient ag = AirGradient();
+
| valign="middle" align="left" |AirGradient monCapteur = AirGradient();
 
|-
 
|-
 
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
 
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
| valign="middle" align="left" |ag.CO2_Init(D4,D3); // coté wemos  broche RX (D4), broche TX (D3)
+
| valign="middle" align="left" |monCapteur.CO2_Init(D4,D3); // coté wemos  broche RX (D4), broche TX (D3)
 
|-
 
|-
 
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Loop
 
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Loop
 
| valign="middle" bgcolor="#999999" align="center" |Utilisation
 
| valign="middle" bgcolor="#999999" align="center" |Utilisation
| valign="middle" align="left" |int CO2 = ag.getCO2_Raw(); // mesure brute du CO2
+
| valign="middle" align="left" |int CO2 = monCapteur.getCO2_Raw();  
 
+
|}Astuce:  il est possible RX et TX soient inversé, dans ce cas il vous suffit d'inverser D3 et D4 dans votre code. ATTENTION Valable uniquement pour un wemos ESP8266
Serial.print("C02: ");
 
 
 
Serial.println(ag.getCO2()); // Affichage du CO2  en ppm dans la console
 
 
 
delay(5000); // Attente de 5 secondes
 
|}Astuce:  il est possible RX et TX soient inversé, dans ce cas il vous suffit d'inverser D3 et D4 dans votre code.
 
 
==Exemple==
 
==Exemple==
 
<br /><syntaxhighlight lang="arduino" line="1" start="0">
 
<br /><syntaxhighlight lang="arduino" line="1" start="0">
#include <AirGradient.h> // import de la bibliothèque Air Gradient
+
#include <AirGradient.h>                 // import de la bibliothèque Air Gradient
AirGradient ag = AirGradient(); // Création de l'objet ag
+
AirGradient monCapteur = AirGradient(); // Création de l'objet "monCapteur"
  
 
void setup(){
 
void setup(){
   Serial.begin(9600); //Démarrage de la liaison série
+
   Serial.begin(9600);         // Démarrage de la liaison série
   ag.CO2_Init(D4,D3); // démarrage et initialisation de l'objet, définition des broches RX (D4) et TX (D3) du Wemos
+
   monCapteur.CO2_Init(D4,D3); // Démarrage et initialisation de l'objet, définition des broches RX (D4) et TX (D3) du Wemos
 
}
 
}
  
 
void loop(){
 
void loop(){
int CO2 = ag.getCO2_Raw(); // mesure brute du CO2
+
int CO2 = monCapteur.getCO2_Raw(); // mesure brute du CO2 placée dans la variable "CO2"
Serial.print("C02: ");
+
Serial.print("Taux de CO2 : ");
Serial.println(ag.getCO2()); // Affichage du CO2 en ppm  
+
Serial.println(CO2);               // Affichage du CO2 en ppm  
delay(5000); // attente de 5 secondes (temps de mesure du capteur 2s)
+
delay(5000);                       // attente de 5 secondes (le temps de mesure du capteur est de 2s)
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==<span> </span>==
+
== Le capteurs en ASCII pour de beaux codes ! ==
 +
<syntaxhighlight lang="arduino">
 +
/*
 +
Senseair S8
 +
              ________________________
 +
|*/
 +
 
 +
</syntaxhighlight>Exemple pour décrire la connexion à un D1 mini :<syntaxhighlight lang="arduino">
 +
/*                                  D1 mini
 +
                                    BROCHAGE                           
 +
                                _________________                       
 +
                              /    D1 mini    \                     
 +
                              |[ ]RST        TX[ ]|                 
 +
                              |[ ]A0  -GPIO  RX[ ]|                   
 +
                              |[ ]D0-16    5-D1[ ]|                   
 +
                              |[ ]D5-14    4-D2[ ]|                   
 +
                              |[ ]D6-12    0-D3[X]| -> UART_RxD           
 +
                              |[ ]D7-13    2-D4[X]| -> UART_TxD     
 +
                              |[ ]D8-15    GND[X]| -> G0             
 +
                              |[ ]3V3 .      5V[X]| -> G+     
 +
                              |      +---+      |                   
 +
                              |_______|USB|_______|   
 +
 
 +
                            ________________________
 +
                            |  |° ° ° ° ° °|    |  |
 +
                  +5V <- G+ |[X]| ° ° ° ° °/    |[ ]| DVCC_out
 +
                  GND <- G0 |[X]|° ° ° ° °/      |[X]| UART_RxD -> D3
 +
                  Alarm_OC |[ ]|_°_°_°_°|      |[X]| UART_TxD -> D4
 +
                  PWM 1Khz |[ ]|                |[ ]| UART_R/T
 +
                            |  |  SenseAir® S8  |[ ]| bCAL_in/CAL
 +
                            |___|________________|___|
 +
*/
 +
</syntaxhighlight><br />
 +
==<span>Note pour la calibration du Capteur</span>==
 +
Il est possible que votre capteur de dérègle ou que vous le receviez non étalonné. Pour calibrer votre capteur '''il suffit de le placer à l'extérieur,''' à l’abri de toute pollution (évitez les abords d'une autoroute. ) et '''d'appuyer sur le bouton calibration pendant 6 secondes''' (entre 4 et 8 secondes, pas plus sinon au bout de 13 secondesil passe dans un autre mode de calibration ).
 +
 
 +
Votre capteur devrait alors indiquer 400 ppm valeur nominale de quantité de CO2 à l'extérieur.
  
 
==Liens Utiles : ==
 
==Liens Utiles : ==
Ligne 83 : Ligne 113 :
  
 
http://lafabrique.centralesupelec.fr/projetco2/document/la_fabrique_projetCO2_v7.pdf
 
http://lafabrique.centralesupelec.fr/projetco2/document/la_fabrique_projetCO2_v7.pdf
 +
 +
 +
Expériences en lien avec le fonctionnement du capteur (absorption de la lumière, spectrométrie) :
 +
 +
[[Pourquoi le ciel est-il bleu]]
 +
 +
[[Arc-en-ciel de chambre]]
 +
 +
[[Lumière : dispersion de la lumière]]
 +
 +
[[Disque de Newton]]
 +
 +
[[Gonfler un ballon sans souffler]]
 +
 +
==Idées pour frankencoder : ==
 +
Un capteur connecté :
 +
 +
[[Créer un compte chez AdafruitIO pour envoyer des données dans le web]]
 +
 +
[[Envoyer des données sur le WEB grâce à MQTT]]
 +
 +
 +
Une interface WEB :
 +
 +
[[Créer une Interface Web pour ESP32]]
 +
 +
 +
Un capteur avec un écran :
 +
 +
[[Item:Ecran OLED 1.3 pouces I2C]]
 +
 
<br />
 
<br />
 
}}
 
}}

Version actuelle datée du 23 août 2021 à 10:47


Item-Capteur de CO2 SENSEAIR S8 imagegen.png

Capteur de CO2 SENSEAIR S8

Capteur Infrarouge de CO2 (NDIR) utilisé dans le projet CO2

25EUR (€)


Description longue

Principe:

Le capteur CO2 Sensair S8, est un capteur NDIR (InfraRouge non Dispersif), le principe de mesure est un principe optique :

Une chambre de mesure est parcourue par un faisceau infrarouge et de l'autre coté de la chambre un capteur ultra sensible mesure les variations d’absorption de la lumière. En fonction des ondes absorbées par la présence de CO2 il en déduit la quantité. Cette mesure utilise le principe de la spectrométrie. (expérience en lien Lumière : dispersion de la lumière )
Schema de principe


Selon le Fablab Central Supélec La Fabrique, les capteurs NDIR sont plus fiables et robustes que les capteurs de CO2 utilisant d'autres technologies (chimiques, MOX ...). Plus d'infos http://projetco2.fr/documents/presentation_PM_webinaireco2_v5_bpd.pdf

Caractéristiques :

Document PDF : http://co2meters.com/Documentation/Manuals/DS_SE_0119_CM_0177_Revised8.pdf

  • Mesure du CO2 : infrarouge non dispersif (NDIR)
  • Méthode de mesure : diffusion
  • Plage de mesure : (0-10 000 ppm)
  • Temps de réponse : 90% à 2 minutes
  • Intervalle de mesure: 0,5 Hz (toutes les 2 secondes)
  • Précision CO2: ± 70ppm ± 3% de la valeur mesurée
  • Options de communication: UART Modbus
  • Sortie disponible : analogique
  • Espérance de vie du capteur : > 15 ans
  • Intervalle de maintenance : aucun entretien requis
  • Autodiagnostic : contrôle de fonctionnement complet au démarrage


Bibliothèque :

Pour utiliser facilement ce capteur, nous vous conseillons d'utiliser la bibliothèque AirGradient Air Quality Sensor que vous trouverez dans le catalogue de bibliothèques d'Arduino plus d'infos pour la procédure Importer des bibliothèques dans l'interface Arduino


Item-Capteur de CO2 SENSEAIR S8 Image2.png

Plus d'infos et sources : https://github.com/airgradienthq/arduino

Câblage

Item-Capteur de CO2 SENSEAIR S8 Imageschema.png

Code Minimal

Avant le Setup Importation de la bibliothèque #include <AirGradient.h>
Création de l’objet AirGradient monCapteur = AirGradient();
Dans le Setup Démarrage de l’objet monCapteur.CO2_Init(D4,D3); // coté wemos broche RX (D4), broche TX (D3)
Dans le Loop Utilisation int CO2 = monCapteur.getCO2_Raw();
Astuce: il est possible RX et TX soient inversé, dans ce cas il vous suffit d'inverser D3 et D4 dans votre code. ATTENTION Valable uniquement pour un wemos ESP8266

Exemple


 0 #include <AirGradient.h>                 // import de la bibliothèque Air Gradient
 1 AirGradient monCapteur = AirGradient();  // Création de l'objet "monCapteur"
 2 
 3 void setup(){
 4   Serial.begin(9600);         // Démarrage de la liaison série
 5   monCapteur.CO2_Init(D4,D3); // Démarrage et initialisation de l'objet, définition des broches RX (D4) et TX (D3) du Wemos
 6 }
 7 
 8 void loop(){
 9 int CO2 = monCapteur.getCO2_Raw(); // mesure brute du CO2 placée dans la variable "CO2"
10 Serial.print("Taux de CO2 : ");
11 Serial.println(CO2);               // Affichage du CO2 en ppm 
12 delay(5000);                       // attente de 5 secondes (le temps de mesure du capteur est de 2s)
13 }

Le capteurs en ASCII pour de beaux codes !

/*
Senseair S8
              ________________________
|*/
Exemple pour décrire la connexion à un D1 mini :
/*                                   D1 mini
                                     BROCHAGE                            
                                _________________                        
                               /     D1 mini     \                       
                              |[ ]RST        TX[ ]|                   
                              |[ ]A0  -GPIO  RX[ ]|                    
                              |[ ]D0-16    5-D1[ ]|                     
                              |[ ]D5-14    4-D2[ ]|                     
                              |[ ]D6-12    0-D3[X]| -> UART_RxD             
                              |[ ]D7-13    2-D4[X]| -> UART_TxD       
                              |[ ]D8-15     GND[X]| -> G0              
                              |[ ]3V3 .      5V[X]| -> G+       
                              |       +---+       |                     
                              |_______|USB|_______|     

                             ________________________
                            |   |° ° ° ° ° °|    |   |
                  +5V <- G+ |[X]| ° ° ° ° °/     |[ ]| DVCC_out
                  GND <- G0 |[X]|° ° ° ° °/      |[X]| UART_RxD -> D3
                   Alarm_OC |[ ]|_°_°_°_°|       |[X]| UART_TxD -> D4
                   PWM 1Khz |[ ]|                |[ ]| UART_R/T
                            |   |  SenseAir® S8  |[ ]| bCAL_in/CAL
                            |___|________________|___|
*/

Note pour la calibration du Capteur

Il est possible que votre capteur de dérègle ou que vous le receviez non étalonné. Pour calibrer votre capteur il suffit de le placer à l'extérieur, à l’abri de toute pollution (évitez les abords d'une autoroute. ) et d'appuyer sur le bouton calibration pendant 6 secondes (entre 4 et 8 secondes, pas plus sinon au bout de 13 secondesil passe dans un autre mode de calibration ).

Votre capteur devrait alors indiquer 400 ppm valeur nominale de quantité de CO2 à l'extérieur.

Liens Utiles :

Projet CO2 :

http://projetco2.fr/

http://lafabrique.centralesupelec.fr/projetco2/document/la_fabrique_projetCO2_v7.pdf


Expériences en lien avec le fonctionnement du capteur (absorption de la lumière, spectrométrie) :

Pourquoi le ciel est-il bleu

Arc-en-ciel de chambre

Lumière : dispersion de la lumière

Disque de Newton

Gonfler un ballon sans souffler

Idées pour frankencoder :

Un capteur connecté :

Créer un compte chez AdafruitIO pour envoyer des données dans le web

Envoyer des données sur le WEB grâce à MQTT


Une interface WEB :

Créer une Interface Web pour ESP32


Un capteur avec un écran :

Item:Ecran OLED 1.3 pouces I2C


Commentaires

Published