ESP Easy R120. Projet IoT ESP8266 avec un affichage OLED SSD1306

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

ESP Easy R120 permet d’ajouter très facilement un affichage sur écran OLED monochrome (SSD1306, 124×68 pixels) ou sur écran LCD 2004 (4 lignes). Ajouter un affichage sur un projet Arduino ou ESP8266 demande toujours un peu de travail. Si vous n’avez besoin que d’afficher du texte et que les capteurs et/ou actionneurs sont supportés par le firmware ESP Easy, voici comment faire.

 

Si vous avez un projet plus complexe pour lequel ce firmware ne convient pas, vous devriez trouver tout ce qu’il vous faut dans cet article précédent, comment ajouter un écran OLED SSD1306 à un ESP-01. Pour un projet Arduino, lisez celui-ci.

ESP Easy (R120) ou ESP Easy Mega, attention à la confusion !

Il existe 2 branches (versions) d’ESP Easy ce qui peut entraîner une certaine confusion lorsqu’on débute.

ESP Easy est la version stable (R120) que l’on peut récupérer sur cette page. L’installation à partir de la compilation du code source est difficile (impossible) avec les versions récente de l’IDE Arduino. En cas de problème, utilisez l’utilitaire ESP Tools d’Espressif. Tout est expliqué étape par étape dans ce tutoriel.

A LIRE AUSSI :
Débuter avec ESP Easy R120, firmware ESP8266 pour créer des objets connectés sans programmation

ESP Easy Mega est la version en cours de développement disponible ici. Elle embarque plus de plugins, une nouvelle interface et supporte (quelques) cartes de développement ESP32. Pour en savoir plus, vous pouvez lire cet article de présentation. Attention, pour fonctionner votre carte ESP8266 doit au moins disposer d’1MB de mémoire flash (attention à bien choisir votre module ESP-01).

A LIRE AUSSI :
ESP Easy Mega. Installation sur un ESP8266 avec le Flasher pour Windows

Matériel conseillé

Dans ce tutoriel, nous allons réaliser un petit baromètre qui mesure la pression atmosphérique à l’aide d’un capteur BMP180, la température et l’humidité à l’aide d’un DHT22.

esp8266 Wemos D1 miniModule ESP8266 ESP-12. Par exemple LoLin D1 Mini
chargeur raspbery pi 3 5v 3000maAlimentation 5/3A micro-usb
 BMP180Pression atmosphérique

BMP180 ou BME280 (température, humidité, pression atmosphérique)

Broches DHT22Capteur de température et d’humidité

DHT11 ou DHT22

ecran oled ssd1306 display blancEcran OLED monochrome 168×64 pixels 0.96″

SSD1306

jumper dupontJumper Dupont
breadboardBreadboard
led 3mmLed (optionnel, pour suivre l’activité WiFi)
resistance 220ohmsRésistance 220Ω (optionnel)

Circuit

Voici un tableau de repérage et de correspondance des broches entre Arduino et ESP8266.

ComposantBrochesArduinoESP8266 (LoLin (Wemos) D1 mini)
DHT22VCC5V5V
GNDGNDG
DataGPIO-14G5
BMP180VCC5V5V
GNDGNDG
SDAGPIO-4D2
SCKGPIO-5D1
OLED SSD1306 0.96”VCC5V5V
GNDGNDG
SDAGPIO-4D2
SCKGPIO-5D1
Led activité WiFiPole +GPIO-12D6
Pole –GNDG

 

espeasy + dht22 + ssd1306 + bmp180

 

Une fois le câblage réalisé

esp easy ssd1306 oled display bmp180

Configurer l’ESP8266 avec ESP Easy R120

Récupération des adresses I2C des accessoires

Avant d’aller plus loin, nous allons commencer par récupérer les adresses de chaque accessoires I2C. Pour cela allez dans la page Tools puis cliquer sur I2C Scan. Vous devez obtenir quelque chose comme ceci :

espeasy ssd1306 oled bmp180 i2c scan

L’écran a bien été identifié comme un écran OLED SSD1306 à l’adresse 0x3c. Le BMP180 a été identifié comme un BMP085 (normal, c’est son successeur). Il se trouve à l’adresse 0x77. Le Firmware ESP Easy est capable de retrouver lui même l’adresse de nombreux Devices sur le bus I2C. Il n’y a que pour l’écran OLED qu’il faudra l’aider.

Ajout du Device BMP180 (ou BME280)

Le baromètre numérique BMP180 mesure la pression atmosphérique (de 300 à 1100 hPa) et la température (de -50°C à +85°C). Si vous souhaitez également récupérer le taux d’humidité, optez plutôt pour un BME280. L’avantage du BME280 est une intégration plus facile dans Domoticz. Dans la liste choisissez Temperature & Pressure – BMP085 puis

  • Name donner un nom au device. Court et sans espace si vous devez l’utiliser dans une Rule
  • Delay délai de rafraîchissement de la mesure. Attention à la consommation pour des projets sur batterie.
  • IDX / Var identifiant du dispositif Domoticz. Différent de 0 dans tous les cas
  • Send Data active l’envoi de données sur un serveur ou un service en ligne
  • Value Name 1 Le nom de la variable contenant la mesure de température. Vous pourrez vous en servir dans une Rule
  • Value Name 2 idem pour la pression atmosphérique
  • Vous pouvez également faire une conversion d’unité dans le champ Formula (attention uniquement avec les opérateurs + –  *, %value% contient la mesure)
  • Enfin choisissez le nombre de chiffres après la virgule (Decimals)

espeasy configuration bmp180 bmp085

Ajout du Device DHT22

N’ayant pas de BME280 à ma disposition, j’ai donc ajouté un DHT22 pour récupérer le taux d’humidité. Dans la liste, choisissez Température & Humidity – DHT puis

  • Name donnez un nom au device
  • Delay la fréquence de mesure
  • IDX / Var identifiant différent de 0 ou celui de l’instrument virtuel sous Domoticz
  • 1st GPIO broche sur lequel on récupère les mesures envoyées par le DHT
  • DHT Type DHT11 (bleu) ou DHT22 (blanc)
  • Send Data active l’envoi des données au serveur ou en ligne
  • Pour le reste, c’est identique que précédemment.

espeasy dht22 configuration

Ajout et configuration du Device OLED SSD1306

Ajoutez un nouveau Device. Sélectionnez dans la liste Display – OLED SSD1306.

  • Name donnez un nom au Device, par exemple AffichageOLED
  • Delay fréquence d’actualisation de l’affichage en secondes
  • IDX / Var un identifiant différent de 0
  • IC2 Address adresse de l’écran sur le bus I2C. Ici 3c
  • Rotation permet d’inverser l’affichage de l’écran.
  • Display button permet de convoquer l’affichage de l’écran pour une durée Display Timeout en appuyant sur un bouton branché sur un GPIO de l’ESP8266. Sauf erreur de ma part, cette fonction ne fonctionne pas encore très bien dans la R120.

Il ne reste plus qu’à indiquer le contenu pour chaque ligne. Dans la version R120, ESP Easy gère 8 lignes d’affichage.

On peut écrire n’importe quel texte dans la limite de 16 caractères par ligne.

On peut récupérer et afficher des informations système :

  • %systime% : heure système. Si vous avez coché Use NTP, l’ESP8266 est mis à l’heure depuis internet automatiquement au démarrage.
  • %ip% : adresse ip du module
  • %uptime% : durée de fonctionnement depuis le démarrage

Enfin on peut récupérer la valeur d’une variable de n’importe quel Device comme ceci [NameDuDevice#NameValueX].

Dans le cas présent, pour afficher le taux d’humidité mesuré par le DHT22, on fera [DHT22#HumDHT22].

Remarques

  • L’appel des variables n’est pas sensible à la casse, on peut écrire [dht22#humdtht22]
  • Il est pas possible d’afficher certains caractères spéciaux, par exemple ° permet d’afficher le symbole degré (°) (Merci à Nicolas pour l’astuce)

espeasy oled ssd1306 wemos d1 mini

Voici le résultat obtenu.

 

 

esp easy ssd1306 oled display bmp180

Et la réalisation de Nicolas avec les caractères accentués

espeasy nicolas config caractere accentue degree

espeasy nicolas meteo caractere accentue degree

Afficher des informations à distance sur l’écran

Une autre fonction très intéressante, c’est la possibilité de commander ou d’afficher du texte à l’aide d’une simple requête HTTP. On pourrait par exemple récupérer la météo sur un service en ligne et l’afficher sur l’écran depuis un serveur domotique, un script Mode-Red…

La requête HTTP est de la forme suivante :

http://<ESP IP address>/control?cmd=oled,,,

  • row ligne d’affichage
  • col colonne d’affichage
  • text texte à afficher

Limitations :

  • Il faut d’abord vider l’écran (clear) avant d’envoyer un nouveau texte
  • Le texte sera affiché jusqu’au prochaine rafraîchissement (Delay)

Autres commandes disponibles :

  • Allumer l’écran : http://IP address>/control?cmd=oledcmd,on
  • Eteindre l’écran : http://IP address>/control?cmd=oledcmd,off
  • Vider l’écran : http://IP address>/control?cmd=oledcmd,clear

Source originale de l’article : http://www.esp8266.nu/index.php/OLEDDisplay

Mises à jour

18/09/2017 Astuce pour afficher des caractères accentués. Merci à Nicolas

Et vous, vous utilisez ESP Easy pour faire quoi ?
  • Proposer une autre réponse
Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

Ressources utiles
quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?
10 Commentaires
  1. bonjour,
    merci pour le tuto.
    j ai teste avec esp+oled integre (ESP8266 & NodeMCU & 0.96 OLED display) apres flash du firmware.
    Ca marche nickel.

    merci pour le tuto encore une fois

  2. Merci pour le tutoriel, très clair, qui m’a permis de découvrir l’affichage des infos système sur un écran oled avec easyesp.
    Pour info, il est possible d’afficher le caractère ° avec ° https://uploads.disquscdn.com/images/dd02a730c24902472792be3fb511def059d9e37678cac8dce61665838015c0b5.jpg https://uploads.disquscdn.com/images/06af72a8a2c21b7067abdc898efa7c9c1f85a9313ff448ef3db85cd2ddc7d7d6.jpg

    Laisser un commentaire

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

    Domotique et objets connectés à faire soi-même