Responsive image
...
Tutoriel - Fabriquer son capteur
Version 1 - Kit pédagogique

Nous vous proposons ici de fabriquer vous même votre capteur pour mesurer la qualité de l'air. Ce kit pédagogique vous invite à découvrir les bases de l'électronique et de la mesure des particules fines à l'aide d'une carte à microcontrôleur Arduino UNO et une sonde SDS011. Le kit est équipé d'une batterie pour alimenter les différents composants ainsi qu'un écran pour visualiser les données. Les connexions se fond à l'aide de petits câbles Dupont.

Ce kit est un excellent outil pédagogique qui a fait ses preuves lors d'intervention auprès des élèves dans les écoles, auprès du grand public lors d'évènements type Fete de la Science et même auprès de professionnels de la qualité de l'air.

Matériel requis

Vérifier que vous avez bien tous les composants nécessaires :

  • Batterie (18650) et son chargeur (TP4056)
  • Carte microcontrôleur Arduino UNO
  • Ecran (LCD1602 avec connecteur I2C)
  • Sonde Particules Fines SDS011
  • Cables Dupont (M-F et F-F de 15cm)
  • Mini Breadboard
Les composants ci-dessus peuvent être commandés en kit auprès d'AirCarto ou achetés séparément sur des sites tel que AliExpress ou Amazon.

...
Etape 1 - Batterie et Breadboard

La première étape consiste à connecter le + et le - de la batterie sur la breadboard qui va servir de "multiprise électrique" pour alimenter l'ensemble des composants. Pour cela nous utilisons les branchements disponibles sur le côté de la batterie en respectant toujours la polarité: + (5V) et - (GND). La "pin" - se trouve au desssus de la "pin" + sur le coté de la batterie. Nous utilisons la ligne rouge pour le + et la ligne noire pour le - (GND). Effectuer les branchements comme sur les images ci-dessus à l'aide des câbles "Male-Femelle".

Etape 2 - Arduino UNO

La seconde étape consiste à alimenter en électricité l'Arduino UNO. Pour cela, relier le + et le - sur la breadboard à l'aide des 2 cables "Male-Male". Attention a bien respecter la polarité sur l'Arduino en branchant le - sur un pin GND et le + sur la pin 5V. L'Arduino démarre et la petite LED rouge s'allume.

Etape 3 - Ecran

Alimenter en électricité l'écran à l'aide des pins 5V et GND (comme pour l'Arduino). Connecter l'écran à l'Arduino UNO à l'aide des pins A4 et A5 comme sur les images ci-dessus. A noter qu'une fois les branchements effectués l'écran s'allume. Redémarrer l'Arduino UNO à l'aide du petit bouton rouge situé sur celui-ci, vous devriez voir apparaitre les inscriptions "AirCarto.fr - Atelier capteur".

Etape 4 - Sonde particule fines

La dernière étape consiste à brancher la sonde de particules fines. Alimenter en électricité l'écran à l'aide des pins 5V et GND (comme pour l'Arduino et l'écran). Connecter la sonde à l'Arduino à l'aide de la pin 10 comme sur les images ci-dessus. Une fois les câbles branchés l'écran peut afficher des informations incohérentes. Redémarrer l'Arduino UNO à l'aide du petit bouton rouge situé sur celui-ci, vous devriez voir apparaitre les inscriptions "AirCarto.fr - Atelier capteur" puis un second écran avec les mesures en temps réel de particules fines

Etape 5 - Défis tempète de pollution !

L'écran affiche les mesures en particules fines actualisées toutes les secondes. Pour tester votre capteur vous pouvez agiter un foulard ou frotter vos vêtements au dessus de l'entrée d'air du capteur afin de voir les concentrations en poussières augmenter.

...
Schéma électrique

En cas de doute, voici le shéma électrique des branchements à effectuer.

Code source

En cas d'achat du kit sur AirCarto, le code est déjà présent sur l'Arduino et cette étape n'est pas nécessaire. Si vous avez votre propore matériel voici le code à uploader sur le microcontrôleur. Vous pouvez aussi modifier le code à votre convenance si vous le souhaitez.

                                
/*
Code pour Arduino UNO - Kit pédagogique qualité de l'air proposé par AirCarto et AtmoSud (version 2024)
Plus d'infos sur le site d'aircarto: aircarto.fr
Tutoriel de montage: https://aircarto.fr/kit_pedagogique/tuto/
Hardware:
1.Arduino UNO
2.Capteur de particules fines SDS011 connecté sur la pin 10 (TX)
3.Ecran LCD 1602 avec module I2C connecté sur les pins A4 et A5

Il faut installer deux librairies pour faire fonctionner le script
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  //bibliothèque pour l'écran LCD (LiquidCrystal I2C by Frank de Brandander https://github.com/johnrickman/LiquidCrystal_I2C)
#include <SDS011.h>             //bibliothèque pour le capteur SDS011 (SDS011 sensor Library by R. Zshiegner https://github.com/ricki-z/SDS011)

LiquidCrystal_I2C lcd(0x27,16,2);

float p10,p25;
int error;
bool led_on = true;

SDS011 my_sds;


void setup()
{
Serial.begin(9600);
my_sds.begin(10,11);
pinMode(LED_BUILTIN, OUTPUT);
lcd.init();                      
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Atelier capteur"); //message d'intro ligne 2

for (int i = 0; i <= 16; i++) {
  lcd.setCursor(i,1);
  lcd.print("-");
  // on fait clignoter la LED
  if(led_on){
    digitalWrite(LED_BUILTIN, LOW);
    led_on = false;
  }else{
    digitalWrite(LED_BUILTIN, HIGH);
    led_on = true;
  }
  delay(200);
}
lcd.clear(); 

delay(1000);
}

void loop()
{
error = my_sds.read(&p25,&p10);
if (! error) {
  //Uncomment next two line for serial debugging output
  //Serial.println("P2.5: "+String(p25));
  //Serial.println("P10:  "+String(p10));
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("PM10: "+ String(p10,1));
  lcd.setCursor(11,0);
  lcd.print("ug/m3");

  // On affiche ici les seuils en fonction de l'indice atmo: https://www.atmosud.org/article/comprendre-les-indices-pour-qualifier-lair
  if(p10<=20){ 
      lcd.setCursor(6,1);
      lcd.print("BON"); 
  }
   if(p10>20 && p10<=40){
      lcd.setCursor(5,1);
      lcd.print("MOYEN"); 
  }
   if(p10>40 && p10<=50){
      lcd.setCursor(4,1);
      lcd.print("DEGRADE"); 
  }
   if(p10>50 && p10<=100){
      lcd.setCursor(4,1);
      lcd.print("MAUVAIS"); 
  }
   if(p10>100 && p10<=150){
      lcd.setCursor(4,1);
      lcd.print("TRES MAUVAIS"); 
  }
  if(p10>150 ){
      lcd.setCursor(4,1);
      lcd.print("EXTRM. MAUVAIS"); 
  }
  
if(led_on){
    digitalWrite(LED_BUILTIN, LOW);
    led_on = false;
  }else{
    digitalWrite(LED_BUILTIN, HIGH);
    led_on = true;
  }
  }
delay(200);
}

                                
                        
Questions fréquemment posées

La recharge de la batterie est très simple. Sur le côté gauche de la batterie, vous trouverez un port micro-USB ou USB-C pour la recharge.

États de charge :
  • Diode rouge : Batterie en cours de charge
  • Diode rouge + verte : Batterie complètement chargée
Batterie en charge

Indicateurs de charge sur la batterie

Le code initial a été optimisé pour n'afficher que l'essentiel. Nous avons choisi de n'afficher que les PM10 car ce sont les particules les plus couramment mesurées dans les indices de qualité de l'air officiels.

Il est tout à fait possible d'afficher les deux mesures (PM2.5 et PM10) en modifiant le code. Voici le code modifié à utiliser :


void loop()
{
error = my_sds.read(&p25,&p10);
if (! error) {
  lcd.clear();
  
  // Affichage PM10 ligne 1
  lcd.setCursor(0,0);
  lcd.print("PM10:" + String(p10,1));
  lcd.setCursor(11,0);
  lcd.print("ug/m3");

  // Affichage PM2.5 ligne 2
  lcd.setCursor(0,1);
  lcd.print("PM2.5:" + String(p25,1));
  lcd.setCursor(12,1);
  lcd.print("ug/m3");
  
  if(led_on){
    digitalWrite(LED_BUILTIN, LOW);
    led_on = false;
  }else{
    digitalWrite(LED_BUILTIN, HIGH);
    led_on = true;
  }
}
delay(200);
}
                                            
Résultat : Avec ce code, l'écran affichera les deux types de particules simultanément !

Si votre écran apparaît vide ou très peu lumineux, cela peut être dû à deux raisons principales :

Causes possibles :
  • La batterie est peu chargée – assurez-vous qu’elle est complètement chargée avant d’alimenter l’Arduino et l’écran.
  • Le contraste de l’écran n’est pas correctement réglé – il y a une petite vis bleue sous l’écran LCD ; tournez-la doucement pour ajuster le contraste.
Réglage du contraste de l'écran LCD

Tournez la petite vis bleue sous l’écran LCD pour ajuster le contraste.

Les seuils affichés suivent l'indice ATMO français :

BON
0-20 μg/m³
MOYEN
21-40 μg/m³
DÉGRADÉ
41-50 μg/m³
MAUVAIS
51-100 μg/m³
TRÈS MAUVAIS
101-150 μg/m³
EXTRÊMEMENT MAUVAIS
> 150 μg/m³

Le capteur SDS011 utilise la diffusion de lumière laser pour détecter et compter les particules en suspension dans l'air. Un ventilateur aspire l'air à travers la chambre de mesure où un faisceau laser illumine les particules. Un photodétecteur mesure ensuite la lumière diffusée pour calculer la concentration de particules PM2.5 et PM10.

Capteur SDS011

Pour modifier le code de l'Arduino, il suffit de connecter l'Arduino à votre PC et de modifier le code via l'IDE Arduino. Voici comment procéder :

Étapes de base :
  1. Télécharger et installer l'IDE Arduino sur votre ordinateur
  2. Connecter l'Arduino à votre PC avec un câble USB
  3. Ouvrir l'IDE Arduino et sélectionner le bon type de carte et le port
  4. Écrire ou modifier votre code
  5. Cliquer sur "Téléverser" pour envoyer le code vers l'Arduino
Vidéos tutoriels recommandées :
Arduino IDE - Premier programme

Tutoriel complet pour débuter avec l'IDE Arduino et téléverser son premier code.

Programmation Arduino pour débutants

Apprendre les bases de la programmation Arduino étape par étape.

Si votre capteur affiche des taux de particules fines anormalement élevés, cela peut être dû à deux causes principales :

Causes possibles :
  • Batterie peu chargée - Une batterie déchargée alimente mal le capteur de PM, ce qui peut fausser les mesures et donner des valeurs aberrantes.
  • Capteur encrassé - Le capteur de particules fines peut être sale ou encrassé, ce qui perturbe le fonctionnement du laser et donne des mesures erronées.
Solutions :
  • Rechargez complètement la batterie avant utilisation
  • Nettoyez délicatement l'entrée d'air du capteur SDS011 avec un pinceau ou de l'air comprimé
  • Redémarrez l'Arduino après avoir effectué ces vérifications
Taux normaux affichés

Exemple de taux normaux affichés à l'écran