Table des matières

Sommaire Matériels

Capteurs - Environnement

[Mise à jour le 26/6/2024]


1. Généralités sur les grandeurs physiques

1.1 Température

1.2 Humidité

1.3 Pression


2. Capteurs de température et de pression

BMP280 Adafruit

2.1 BMP280

2.1.1 Présentation
Ce capteur est basé sur le circuit BMP280 et mesure la pression atmosphérique, la température et l'altitude. Le BMP280 se compose d'un élément de détection de pression piézorésistif et d'un ASIC à signal mixte. L'ASIC effectue des conversions A/D et fournit les résultats de conversion et les informations spécifiques au capteur. Il communique avec un microcontrôleur via un bus I2C ou SPI.


2.1.2 Bibliothèques
  • A partir du gestionnaire de bibliothèques de l'IDE Arduino, installer :
A venir
A venir


2.1.3 Exemples de code
  • Resources
    • wiki Adafruit
    • Fiche guide pour l'étude d'une chaîne d'information comprenant un BMP280 [Télécharger]

  • Exemple de l'IDE Arduino pour tester le capteur
    Dans l'IDE Arduino, sélectionner : Fichier → Exemples → Adafruit BMP280 Library → bmp280test
A venir
A venir


3. Capteurs de température et d'humidité

3.1 HYT-221

3.1.1 Présentation
Capteur capacitif numérique d'humidité et de température relative présentant une précision de base de ±1,8% HR, calibré et compensé en température. Communication via le bus I²C (adresse 0x28 par défaut).


3.1.2 Bibliothèques
  • Intégré à l'exemple ci-dessous.
  • Intégrée au code de l'exemple ci-dessous
  • A venir


3.1.3 Exemples de code
  • Exemple pour tester le capteur
    A télécharger sur Github..
  • Mise en oeuvre du capteur avec un afficheur OLED

*.cpp
// Matériels : Adafruit Feather Huzzah ESP8266  + Support Particle, Adafruit OLED SH1107, HYT221, câble Qwiic
// Logiciel : Arduino
 
// A ajouter
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
 
// Adresse I2C par défaut de HYT 221, 271, 371
#define HYT_ADDR 0x28
 
#define BUTTON_A 0
#define BUTTON_B 16
#define BUTTON_C 2
 
// Constructeurs
Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire);
 
void setup()
{
  // Bus I2C
  Wire.begin();
  Wire.setClock(400000);
  display.begin(0x3C, true); // L'addresse de l'afficheur est 0x3C par défaut
 
  // Configuration de l'affichage
  display.setRotation(1); // Affichage horizontal
  display.setTextSize(1);
  display.setTextColor(SH110X_WHITE);
  display.clearDisplay(); // Pour ne pas afficher le logo Adafruit chargé
                          // automatiquement à la mise sous tension
  // Connexion des boutons-poussoirs
  pinMode(BUTTON_A, INPUT_PULLUP);
  pinMode(BUTTON_B, INPUT_PULLUP);
  pinMode(BUTTON_C, INPUT_PULLUP);
}
 
void loop()
{
  double humidity;
  double temperature;
 
  // Efface le buffer
  display.clearDisplay();
 
  // Test des boutons
  display.setCursor(0, 0);
 
  if (!digitalRead(BUTTON_A))
    display.print("[A]");
  if (!digitalRead(BUTTON_B))
    display.print("[B]");
  if (!digitalRead(BUTTON_C))
    display.print("[C]");
 
  // Titre
  display.setCursor(30, 0);
  display.println("HYT221");
 
  Wire.beginTransmission(HYT_ADDR); // Début de la transmission avec le capteur HYT221
  Wire.requestFrom(HYT_ADDR, 4);    // Nécessite 4 octets
 
  // Read the bytes if they are available
  // Les deux premiers octets sont l'humidité, les deux suivants la température
  if (Wire.available() == 4)
  {
    int b1 = Wire.read();
    int b2 = Wire.read();
    int b3 = Wire.read();
    int b4 = Wire.read();
 
    Wire.endTransmission(); // Fin de la transmission avec le capteur HYT221
 
    // Calcul de l'humidité
    int rawHumidity = b1 << 8 | b2;
    rawHumidity = (rawHumidity &= 0x3FFF);
    humidity = 100.0 / pow(2, 14) * rawHumidity;
 
    // Calcul de la température
    b4 = (b4 >> 2);
    int rawTemperature = b3 << 6 | b4;
    temperature = 165.0 / pow(2, 14) * rawTemperature - 40;
 
    // Affichage
    display.setCursor(0, 12);
    display.print("Temperature: ");
    display.print(temperature);
    display.println("C ");
    display.print("Humidite: ");
    display.print(humidity);
    display.println("% ");
 
    // Infos
    display.setCursor(5, 52);
    display.print("Appuyer sur A, B, C");
    display.display();
  }
  else
  {
    display.println("Pas de mesure");
  }
}

Télécharger le projet PlatformIO pour VSCode.
  • A venir



3.2 DHT22


3.2.1 Présentation

DHT22 - ADAFRUIT

Le module Grove DHT22 de Seeed Studio est basé sur un module numérique de mesure de la température et de l’humidité AM2302 de AOSONG. Les détails internes du module ne sont pas connus, mais la documentation, accessible accessible ci-dessous, nous apprend qu’il se compose :
- d'un capteur de température, d'un capteur d’humidité capacitif (les capteurs sont calibrés automatiquement)
- d'un microcontrôleur 8bits chargé de corriger et de transmettre les mesures sous forme numérique (16bits) via un bus spécifique 1 fil (différent du 1 wire de Dallas) à une distance < 30m sous 5V ou 0,1m sous 3,3V.


3.2.2 Bibliothèques
  • A partir du gestionnaire de bibliothèques de l'IDE Arduino, installer :

A venir
A venir


3.2.3 Exemple de code
  • Ressources
    • Wiki seeedstudio
    • Fiche guide pour l'étude d'une chaîne d'information comprenant un DHT22 [Télécharger]

  • Exemple de l'IDE Arduino pour tester le capteur
    Dans l'IDE Arduino, sélectionner : Fichier → Exemples → DHT sensor library → DHTtester
A venir
A venir


4. Capteurs de température, humidité et pression

4.1 BME280

4.1.1 Présentation

Capteur environnemental mesurant la température, la pression barométrique et l'humidité ! Ce capteur est idéal pour toutes sortes de capteurs météorologiques / environnementaux et peut être utilisé à la fois en I²C et en SPI.


4.1.2 Bibliothèques
  • A partir du gestionnaire de bibliothèques de l'IDE Arduino, installer :


ou

  • A partir du gestionnaire de bibliothèques de l'IDE Arduino, installer :


ou

  • A installer dans le Raspberry Pi Pico

  • Télécharger le code de la bibliothèque BME280 sur Github, le copier dans un fichier BME280.py et l'installer dans le dossier /lib sur le raspberry Pi Pico. Modifier éventuellement l'adresse du composant dans le code de la bibliothèque (0x76 par défaut), ou 0x77 (par ex: sparkfun).


4.1.3 Exemples de code
  • Ressource
    • Fiche guide pour l'étude d'une chaîne d'information comprenant un BME280 [Télécharger]
  • Exemple de l'IDE Arduino pour tester le capteur. Dans l'IDE Arduino, sélectionner :
    - Adafruit : Fichier → Exemples → Adafruit BME280 Library → bme280test
    - Sparkfun : Fichier → Exemples → SparkFun BME280 → Example1_BasicReadings
  • Exemple de l'IDE Arduino pour tester le capteur
    Dans l'IDE Arduino, sélectionner : Fichier → Exemples → SparkFun BME280 → Example1_BasicReadings
  • Mise en oeuvre du capteur avec un afficheur OLED
    • Description : mesure de de la température, de l'humidité et de la pression à l'aide d'un capteur Sparkfun BME280, test des boutons-poussoirs et affichage sur un écran Oled Adafruit SH1107. L'écran et le capteur sont reliés via le système Qwiic de Sparkfun.
    • Matériels
*.cpp
// Matériels : Adafruit Feather Huzzah ESP8266  + Support Particle, Adafruit OLED SH1107, Sparkfun BME280, câble Qwiic
// Logiciel : Arduino
 
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#include "SparkFunBME280.h"
 
#define BUTTON_A 0
#define BUTTON_B 16
#define BUTTON_C 2
 
// Constructeurs
Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire);
BME280 bme_280; // L'adresse du circuit BME280 est 0x77 par défaut
 
void setup()
{
  // Bus I2C
  Wire.begin();              // Initialisation
  Wire.setClock(400000);     // Fast I2C
  display.begin(0x3C, true); // L'addresse de l'afficheur est 0x3C par défaut
 
  // Configuration de l'affichage
  display.setRotation(1); // Affichage horizontal
  display.setTextSize(1); // Horizontal
  display.setTextColor(SH110X_WHITE);
  display.clearDisplay(); // Pour ne pas afficher le logo Adafruit chargé
                          // automatiquement à la mise sous tension
  // Test de la communication avec le capteur
  if (bme_280.beginI2C() == false)
  {
    display.println("DEFAUT(s)");
    display.println("1. Le capteur BME280 ne repond pas ! ");
    display.println();
    display.print("BLOCAGE du PROGRAMME");
    display.display(); // Transfert du buffer sur l'écran
    while (1)
      delay(10); // Blocage du programme
  }
 
  // Connexion des boutons-poussoir
  pinMode(BUTTON_A, INPUT_PULLUP);
  pinMode(BUTTON_B, INPUT_PULLUP);
  pinMode(BUTTON_C, INPUT_PULLUP);
}
 
void loop()
{
  // Efface le buffer
  display.clearDisplay();
 
  // Test des boutons
  display.setCursor(0, 0);
 
  if (!digitalRead(BUTTON_A))
    display.print("[A]");
  if (!digitalRead(BUTTON_B))
    display.print("[B]");
  if (!digitalRead(BUTTON_C))
    display.print("[C]");
 
  // Titre
  display.setCursor(20, 0);
  display.println("Sparkfun BME280");
 
  // Humidité
  display.setCursor(0, 12);
  display.print("Humidite : ");
  display.print(bme_280.readFloatHumidity(), 0);
  display.println("%");
 
  // Pression en hPa
  display.setCursor(0, 22);
  display.print("Pression : ");
  display.print(bme_280.readFloatPressure() / 100, 0);
  display.println("hPa");
 
  // Température
  display.setCursor(0, 32);
  display.print("Temp : ");
  display.print(bme_280.readTempC(), 1);
  display.print("C");
 
  // Infos
  display.setCursor(5, 52);
  display.print("Appuyer sur A, B, C");
 
  // yield();
  display.display(); // Transfert du buffer sur l'écran
  delay(10);
}

Télécharger le projet PlatformIO pour VSCode.
*.py
from machine import Pin, I2C
from time import sleep
import bme280 # bibliothèque du capteur (installée dans /lib
 
# RP2 - Pin assignment
i2c = I2C(1,scl=Pin(7), sda=Pin(6), freq=400_000)
 
while True:
  bme = bme280.BME280(i2c=i2c)
  temp = bme.temperature
  hum = bme.humidity
  pres = bme.pressure
  print('Temperature: ', temp)
  print('Humidity: ', hum)
  print('Pressure: ', pres)
 
  sleep(5)


5. Capteurs de CO2, température, humidité et pression

5.1 BME680

5.1.1 Présentation

Ce capteur basé sur un BME680 associé à un CCS811 mesure la température, l'humidité, la pression atmosphérique et la qualité de l'air (TVOC et eCO2). Ce module communique avec un microcontrôleur Arduino® ou compatible via une liaison I2C.
TVOC: Total Volatile Organic Compounds ou composés organiques volatiles totaux et eCO2: équivalent au niveau de CO2.


5.1.2 Bibliothèques
  • A partir du gestionnaire de bibliothèques de l'IDE Arduino, installer :
A venir


A terminer


5.2 SCD40, SCD41


5.3 SGP30