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.
Module ESP8266 ESP-12. Par exemple LoLin D1 Mini | |
Alimentation 5/3A micro-usb | |
|
Pression atmosphérique
BMP180 ou BME280 (température, humidité, pression atmosphérique) |
Capteur de température et d’humidité
DHT11 ou DHT22 |
|
Ecran OLED monochrome 168×64 pixels 0.96″ | |
Jumper Dupont | |
Breadboard | |
Led (optionnel, pour suivre l’activité WiFi) | |
Résistance 220Ω (optionnel) |
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
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
- ESP Easy Mega. Installation facile avec PlatformIO sur ESP8266 (R120 obsolète)
- Hack . Prise connectée SONOFF S20 pour en faire un super smart plug avec ESP Easy R120
- ESP Easy R120 ou Mega. Flasher le firmware avec esptool.py sur ESP8266
- ESP Easy R120. Ecran d’affichage OLED SSD1306 déporté avec un script Lua
- ESP Easy R120. Utiliser les Rules pour créer la consigne d’un thermostat connecté (Jeedom, Domoticz, Node-RED…)
- Environnement : température, humidité, baromètre, poussière, lumière, gaz 31%, 188 votes188 votes 31%188 votes - 31% de tous les votes
- Piloter : relai, servo-moteur, pompe, électro-vanne... 28%, 167 votes167 votes 28%167 votes - 28% de tous les votes
- Mesure : courant, compteur, distance... 9%, 54 votes54 votes 9%54 votes - 9% de tous les votes
- Affichage : OLED, LCD, LED 9%, 53 votes53 votes 9%53 votes - 9% de tous les votes
- Alarme : mouvement, RFID, contacteur 8%, 45 votes45 votes 8%45 votes - 8% de tous les votes
- Plusieurs choses à la fois : température, comptage, commande relais, relevé d'état* 7%, 39 votes39 votes 7%39 votes - 7% de tous les votes
- Thermostat 4%, 26 votes26 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 votes8 votes 1%8 votes - 1% de tous les votes
- RFLiNK* 1%, 7 votes7 votes 1%7 votes - 1% de tous les votes
- Notifier : MP3, vibreur 1%, 6 votes6 votes 1%6 votes - 1% de tous les votes
- Anémomètre* 1%, 4 votes4 votes 1%4 votes - 1% de tous les votes
- Puissance thermique* 1%, 3 votes3 votes 1%3 votes - 1% de tous les votes
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
Bonjour Olivier et merci beaucoup pour le retour. Avec plaisir 😀
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 °
Bonjour, merci pour ce tutoriel. ESP Easy gère t’il l’écran OLED officiel wemos ? Merci.
Celui ci : Wemos® OLED Shield V2.0.0 For Wemos D1 Mini 0.66″ Inch 64X48
Merci beaucoup Nicolas ! J’ai ajouté l’astuce dans l’article. On devrait même pouvoir afficher d’autres caractères spéciaux.
Merci pour l’astuce!
Comment faites vous pour avoir cette présentation ?
(J’ai fait un thermostat de mon côté)
Je voudrais comme vous afficher 2 informations en gros au milieu : Consignes + température actuel
Bonjour Damda. Il faut utiliser la nouvelle version Esp Easy Mega https://projetsdiy.fr/firmware-esp-easy-mega-esp32-test-wemos-lolin32-lite-nouveautes/ ou ajouter manuellement le plugin “frame” en suivant ce tutoriel https://projetsdiy.fr/esp-easy-installation-ota-playground/
Merci 🙂
Testé sur la version dev12 cette astuce ne fonctionne pas :
L’astuce est au moins valable en dev11 (version qui tourne actuellement chez moi et visible sur la photo), je n’ai pas encore testé sur des nouvelles versions…