ESP Easy R120. Projet IoT ESP8266 avec un affichage OLED SSD1306 • Domotique et objets connectés à faire soi-même

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.

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).

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.

Circuit

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

Composant Broches Arduino ESP8266 (LoLin (Wemos) D1 mini)
DHT22 VCC 5V 5V
GND GND G
Data GPIO-14 G5
BMP180 VCC 5V 5V
GND GND G
SDA GPIO-4 D2
SCK GPIO-5 D1
OLED SSD1306 0.96” VCC 5V 5V
GND GND G
SDA GPIO-4 D2
SCK GPIO-5 D1
Led activité WiFi Pole + GPIO-12 D6
Pole – GND G

Une fois le câblage réalisé

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 :

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)

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.

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)

Voici le résultat obtenu.

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

kulgij3jckkt8lniodyj-8125651

di2ccnpwrhwznbm8ymvv-8327487

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:///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 ?

  • Environnement : température, humidité, baromètre, poussière, lumière, gaz 31%, 190 votes

    190 votes 31%

    190 votes – 31% de tous les votes

  • Piloter : relai, servo-moteur, pompe, électro-vanne… 27%, 167 votes

    167 votes 27%

    167 votes – 27% de tous les votes

  • Mesure : courant, compteur, distance… 9%, 56 votes

    56 votes 9%

    56 votes – 9% de tous les votes

  • Affichage : OLED, LCD, LED 9%, 54 votes

    54 votes 9%

    54 votes – 9% de tous les votes

  • Alarme : mouvement, RFID, contacteur 8%, 46 votes

    46 votes 8%

    46 votes – 8% de tous les votes

  • Plusieurs choses à la fois : température, comptage, commande relais, relevé d’état* 7%, 41 vote

    41 vote 7%

    41 vote – 7% de tous les votes

  • Thermostat 4%, 26 votes

    26 votes 4%

    26 votes – 4% de tous les votes

  • Comment connecter un petit récepteur 433mhz pour sonde XH300 imagintronix, réalisé à l’aide d’un pic12F1822 qui communique via le bus i2c* 1%, 8 votes

    8 votes 1%

    8 votes – 1% de tous les votes

  • RFLiNK* 1%, 7 votes

    7 votes 1%

    7 votes – 1% de tous les votes

  • Notifier : MP3, vibreur 1%, 6 votes

    6 votes 1%

    6 votes – 1% de tous les votes

  • Anémomètre* 1%, 5 votes

    5 votes 1%

    5 votes – 1% de tous les votes

  • Puissance thermique* 0%, 3 votes

    3 votes

    3 votes – 0% de tous les votes

Avez-vous aimé cet article ?