Accueil / esp8266 / ESP Easy / ESP Easy : ajouter un affichage OLED SSD1306 à un ESP8266

ESP Easy : ajouter un affichage OLED SSD1306 à un ESP8266

ESP Easy est capable de gérer l’affichage sur écran OLED noir et blanc (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.

Si vous débutez avec ESP Easy, vous pouvez commencer par lire cet article de présentation.

Read this article in English

Pour réaliser cet article, j’ai utilisé la version R120 du firmware ESP Easy.

Matériel nécessaire et câblage

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

esp8266 Wemos D1 mini Module ESP8266 ESP-12. Par exemple Wemos D1 Mini
 BMP180 Pression atmosphérique

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

Broches DHT22 Capteur de température et d’humidité

DHT11 ou DHT22

oled ssd1306 ecran i2c Ecran OLED monochrome 168×64 pixels 0.96″

SSD1306

jumper dupont Jumper Dupont
breadboard Breadboard
led 3mm Led (optionnel, pour suivre l’activité WiFi)
resistance 220ohms Résistance 220Ω (optionnel)

Câblage

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

Composant Broches Repérage Arduino Equivalence ESP8266 (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

espeasy + dht22 + ssd1306 + bmp180

 

Une fois le câblage réalisé

esp easy ssd1306 oled display bmp180

Configuration de l’ESP8266 avec ESP Easy

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, ans espace si vous devez l’utiliser dans une Rule
  • Delay : délai de rafraichissement 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 sytè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 n’est pas possible d’afficher certains caractères spéciaux, par exemple : ° ‘ €, et les caractères accentués.

espeasy oled ssd1306 wemos d1 mini

Voici le résultat obtenu.

esp easy ssd1306 oled display bmp180

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>,<col>,<text>

  • 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 rafraichissement (Delay)

Autres commandes disponibles :

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

 

Autres articles sur ESP Easy

 

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