Mini station météo

Tuto Arduino

Matériel Arduino utilisé

Microcontrôleur Esp8266

DHT 11 - capteur de température et d'humidité de l'air

Ecran LCD

Montage Arduino

DHT : capteur de température et d'humidité de l'air

Caractéristiques du capteur dht11

Souder 3 cables au dht11

Cable relié au « VCC » (borne +) sur la broche 1 de l’esp (par convention, cable rouge)

Cable correspondant au « signal » sur la broche 2

Cable relié au GND (borne -) sur la broche 4 de l’esp (par convention, cable noir)

Relier les cables à l'esp8266

Cable noir relié au GND de l’esp
Cable rouge relié au 3V de l’esp

Ecran LCD : affichage des données

Utilisation de l'interface I2C

I2C, c’est quoi ?

I2C est un protocole de communication.

L’interface I2C permet de faciliter la connexion de l’écran lcd au microcontrôleur.

 

Adresse I2C
Chaque équipement I2C dispose d’une adresse unique qui prend la forme d’une chaîne hexadécimale (exemple 0x69).

Brancher l'I2C sur l'ESP8266

L’interface I2C possède 4 broches
VCC -> à connecter sur la borne VU de l’esp
GND -> à connecter sur la borne G de l’esp
SDA -> à connecter sur la broche D2 de l’esp8266
SCL -> à connecter sur la broche D1 de l’esp8266

Montage Arduino complet

Codes Arduino

Code DHT11

Librairie Arduino utilisée pour le dht11

DHT sensor library by Adafruit
cette librairie  nous permet de récupérer la température et l’humidité de l’air en quelques lignes de code.

Il faut vérifier si cette librairie est déja installée.

Dans le menu du logiciel arduino, cliquer sur l’onglet « Outils » puis « Gérer les bibliothèques ».

Dans le moteur de recherche, saisir « DHT sensor library ». Si celle-ci est installée, le mot « Installed » apparaitra à coté du nom de la librairie.

Si la librairie n’est pas installée, suivre les étapes suivantes :
Dans le logiciel Arduino, se rendre dans « Outils > Gérer les bibliothèques », puis saisir DHT sensor library dans le moteur de recherche. Survoler la librairie avec la souris puis cliquer sur « INSTALLER ».

Une nouvelle fenêtre s’ouvre nous indiquant que pour fonctionner, la librairie DHT sensor library a besoin d’autres librairies (appelées dépendances).
Il faut donc cliquer sur « TOUT INSTALLER ».

Avant de téléverser du code dans le microcontrôleur, il est nécessaire de définir quelle carte est connectée à l’ordinateur et sur quel port USB de l’ordinateur.

Dans le logiciel Arduino, cliquer sur le lien « Sélectionner une autre carte et un autre port » comme indiqué sur le schéma ci-dessous.
La carte à sélectionner est : NodeMCU 1.0 (ESP-12E Module)

Le port sera détecté automatiquement

Code Arduino permettant de récupérer la température et l'humidité de l'air

CODE A


#include "DHT.h"

#define dhtPin 14 // D5 sur esp8266
#define dhtType DHT11

float temperature;
float humidity;

DHT dht(dhtPin, dhtType);

void getDatas() {
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();
}

void setup()
{
  dht.begin();
}

void loop()
{
  getDatas();
}

Code Ecran LCD

Librairies arduino utilisées pour l'écran lcd

Wire.h -> cette librairie assure le protocole de  communication avec le dispositif I2C
LiquidCrystal_I2C.h -> librairie de contrôle de l’écran lcd

Pour installer la librairie LiquidCrystal_I2C, opérer de la même façon que pour la librairie « DHT sensor library » installée précedemment.

Code permettant de récupérer l'adresse I2C de l'écran lcd


    
#include "Wire.h"

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);
}

void loop()
{
  byte error, address;
  int I2CDevices;

  Serial.println("Scanning I2C …");
 
  I2CDevices = 0;
  for (address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("Adresse I2C trouvée : 0x");
      if (address < 16)
      {
        Serial.print("0");
      }
      Serial.println(address, HEX);

      I2CDevices++;
    }
    else if (error == 4)
    {
      Serial.print("Erreur adresse 0x");
      if (address < 16)
      {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (I2CDevices == 0)
  {
    Serial.println("Interface I2C non trouvée\n");
  }
  else
  {
    Serial.println("****\n");
  }
  delay(2000);
}

Dans le logiciel Arduino, ouvrir le « Moniteur série » (encadré en rouge sur le dessin ci-dessous) pour connaitre l’adresse I2C de l’écran lcd.

Ici, l’adresse est 0x27

Code permettant d'afficher des données sur l'écran lcd

Dans le code ci-dessous, penser à modifier l’adresse de l’I2C si nécessaire.
Vérifier la 2ème ligne de code :LiquidCrystal_I2C lcd(0x27, 16, 2);

CODE B


#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(0x27, 16, 2);   

void setup() {
  lcd.init();                      
  lcd.backlight();
}

void loop(){
  lcd.setCursor(0, 0);
  lcd.print("Apprendre avec");
  lcd.setCursor(0,1);
  lcd.print("ORE");
}

Remarques
Afin d’obtenir le code complet, vous devez utiliser les codes A et B afin de ne téléverser qu’un seul fichier.
Les lignes de code « lcd.print(…) » doivent afficher la température et l’humidité. Elles devront être remplacées par les lignes de code ci-dessous.
Le code final ne doit contenir qu’une seule fonction setup() et qu’une seule fonction loop().


lcd.setCursor(0, 0);
lcd.print("Tmp :  ");
lcd.print(String(temperature,1) +" "); // Affichage de la température avec un chiffre après la virgule
lcd.print((char)223); //(char)223 : affichage du caractère °
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum :  ");
lcd.print(String(humidity,0) +" "); // Affichage de la température avec zéro chiffre après la virgule
lcd.print((char)37); //(char)37 : affichage du caractère %
lcd.print(" ");    

Résultat final