Le cable de la broche 1 du dht sera relié au « VCC » (borne +) de l’esp (par convention, cable rouge)
Le cable de la broche 2 du dht sera reliée à la broche D5 de l’esp
Le cable de la broche 4 du dht sera reliée au GND (borne -) de l’esp (par convention, cable noir)
Cable noir relié au GND de l’esp
Cable rouge relié au 3V de l’esp
Cable orange relié à la broche D5 de l’esp
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).
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
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 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();
}
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.
#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
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(" ");