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
  • Carte microcontrôleur Arduino UNO
  • Ecran (I2C LCD1602)
  • Sonde Particules Fines SDS011
  • Cables Dupont
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);
}