Température et humidité avec Arduino

Mesurez la température et l’humidité puis affichez les sur un écran OLED avec votre carte Arduino.

Ecran Oled 0.96 affichant une image, la température et l'humidité

Nous allons décomposer ce projet Arduino de mesure de la température et de l’humidité en 2 étapes, une première pour l’affichage utilisant l’écran OLED et une deuxième pour l’acquisition des données.

Le matériel nécessaire

Pour cette réalisation, vous avez besoin:

Carte Arduino UNO Rev 3 Cordon USB de type A/B Ecran 0.96 OLED I2C
Carte Arduino UNO Câble USB 2.0 Type A/B Ecran OLED I2C
Capteur DHT11 (température et humidité) Platine d'essai 830 points
Capteur DHT11 Cables Plaque d’essai
Résistance de 4,7 K ohm    
Résistance 4,7 k Ohm    

Câblage de l’écran OLED avec votre carte Arduino

L’écran OLED 0.96 de ce montage utilise le protocole I2C qui ne nécessite que 2 fils pour échanger des données:

  • la broche SDA de l’écran OLED reliée à la sortie A4 de l’Arduino
  • la broche SCL reliée à la sortie A5.

Pour l’alimentation, de l’écran vous reliez:

  • la broche VCC de l’écran au 3,3V de la carte Arduino
  • les deux masses ensemble (GND).
Branchement d'un ecran Oled 0.96 sur Arduino

Installation d’une bibliothèque pour l’écran OLED

Afin de nous faciliter la gestion de l’écran OLED, nous allons installer la bibliothèque Arduino lcdgfx. Pour cela, dans le menu « Outils », choisir « Gérer les bibliothèques ».

Menu de l'Arduino pour gérer les bibliothèques

La fenêtre des bibliothèques s’ouvre alors. En saisissant « lcdgfx » dans la zone de recherche, vous ne verrez plus que la bibliothèque « lcdgfx by Alexey Dynda » d’affichée.

Vous pouvez alors réaliser sa mise en place en cliquant sur le bouton « Installer » correspondant.

Recherche et installation de la bibliothèque ArduiArduino "lcdgfx by Alexey Dynda"

Le message « INSTALLED » confirme que l’opération d’installation s’est bien déroulée.

La bibliothèque Arduino "lcdgfx by Alexey Dynda" est installée

Vous pouvez fermer la fenêtre, nous allons passer à la programmation proprement dite.

Code logiciel pour le pilotage de l’écran OLED

Nous allons partir de l’ossature du code Arduino suivante:

// Fonction de démarrage, s'exécute une seule fois:
void setup()
{

}

// Fonction principale du programme, s'exécute en boucle:
void loop()
{

}

Nous commençons par indiquer au compilateur Arduino que nous utilisons la bibliothèque lcdgfx.

La première ligne démarrant par « // » est une ligne de commentaires non exécutée par le processeur. La deuxième ligne déclare le nom du fichier installé servant de porte d’entrée à la bibliothèque.

// Déclaration des librairies utilisées
#include "lcdgfx.h"

Cette librairie utilise la programmation objet, aussi nous déclarons un objet globale de type « DisplaySSD1306_128x64_I2C » permettant de gérer l’afficheur en utilisant le protocole I2C. Vous allez nommer cette classe « Afficheur_G » à l’aide des instructions suivantes:

// Déclaration globales
DisplaySSD1306_128x64_I2C Afficheur_G(-1);

Ensuite, vous allez ajouter les instructions de réglage de l’écran dans la fonction « setup » pour sélectionner une fonte de caractère de 6 points de large par 8 points de hauts:

    /* Sélection de la fonte de 6x8 */
    Afficheur_G.setFixedFont( ssd1306xled_font6x8 );

Ajoutez les 3 lignes suivantes pour initialiser initialise l’écran et l’effacer:

    // Initialisation et effacement de l'écran   
    Afficheur_G.begin();
    Afficheur_G.clear();

Nous allons pouvoir maintenant passer à l’affichage proprement dit des valeurs mesurées. Comme ces valeurs évoluent au cours du temps, elles s’écrivent dans la fonction « loop« .

L’écran OLED 0.96 est composé de 64 lignes de 128 points. L’origine des coordonnées des points est située sur le sommet gauche.

Coordonnées de l'écran OLED 0.96

La fonction de la librairie permettant d’écrire une chaine de caractères est la fonction printFixed. Cette fonction prends 4 paramètres: les coordonnées X et Y de l’écran, la chaîne de caractères à afficher ainsi que le style de caractères à utiliser. Écrivez les 2 lignes suivantes pour avoir un affichage de la température et de l’humidité au centre de l’écran:

    Afficheur_G.printFixed (5, 16, "Temperature: xxC", STYLE_NORMAL);
    Afficheur_G.printFixed (5, 42, "Humidite: xx%", STYLE_NORMAL);

Afin de laisser le temps de lire la valeur affichée, nous allons utiliser la fonction « delay » qui demande au microcontrôleur d’attendre une durée exprimée en millisecondes. Puis nous effacerons l’écran par la fonction « clear » afin de nettoyer l’écran avant le nouvel affichage. Voici les 4 lignes à ajouter:

    // Attente de 2 secondes   
    delay(2000);
    // Effacement de l'écran
    Afficheur_G.clear();  

Voici à quoi devrait ressembler votre programme maintenant:

// Déclaration des librairies utilisées
#include "lcdgfx.h"

// Déclaration globales
DisplaySSD1306_128x64_I2C Afficheur_G(-1);

// Fonction de démarrage, s'exécute une seule fois:
void setup()
{
    /* Sélection de la fonte de 6x8 */
    Afficheur_G.setFixedFont( ssd1306xled_font6x8 );


    // Initialisation et effacement de l'écran   
    Afficheur_G.begin();
    Afficheur_G.clear();
}

// Fonction principale du programme, s'exécute en boucle:
void loop()
{
    Afficheur_G.printFixed (5, 16, "Temperature: xxC", STYLE_NORMAL);
    Afficheur_G.printFixed (5, 42, "Humidite: xx%", STYLE_NORMAL);
    delay(2000);
    Afficheur_G.clear();   
}

Afin de le vérifier, vous pouvez maintenant compiler cette première partie du programme puis le transférer dans l’Arduino avant de poursuivre notre projet. Vous devez obtenir le résultat suivant.

Maintenant, que nous avons préparé l’affichage de nos données, nous allons pouvoir passer à leur acquisition (page 2).

Laisser un commentaire