Accueil | esp8266 | Test du shield OLED pour Wemos D1 Mini (SSD1306 64×48 pixels) : ESP Easy et Adafruit_SSD1306

Test du shield OLED pour Wemos D1 Mini (SSD1306 64×48 pixels) : ESP Easy et Adafruit_SSD1306

Aujourd’hui, je vous propose de tester le shield OLED pour la Wemos D1 Mini. Ce shield est équipé d’un écran OLED de 64 x 48 pixels. Il utilise le micro-contrôleur SSD1306 habituel déjà présenté dans plusieurs articles. C’est un écran de petite taille idéal pour ajouter un affichage miniature à la Wemos D1 Mini. On le trouve très facilement en direct de Chine pour moins de 5€.

Déballage du shield OLED Wemos D1 Mini

J’ai été surpris par la qualité de l’emballage. L’écran est livré dans un petit boitier transparent. Le shield est livré avec le jeu de broche habituel de 3 dimensions. L’écran OLED est directement soudé sur le PCB. La qualité de fabrication est irréprochable. Petit petit point faible à noté toutefois, l’écran est maintenu en place par une mousse autocollante. L’écran peut être légèrement tourné. Il a peut être été positionné au moment du collage, ou la mousse se déforme durant le stockage. Ce n’est pas très gênant, il suffit de le décoller délicatement et le repositionner correctement

shield wemos d1 mini oled display 64x48 pixels

L’écran utilise le bus I2C pour communiquer avec la Wemos. L’écran est utilisable à l’adresse 0x3C (ou 0x3D)

Code Arduino avec la librairie Adafruit_SSD1306 modifiée

La librairie Adafruit_SSD1306 est assez simple et très puissante. Elle permet de dessiner des formes simples, écrire du texte, afficher des bitmap, écrire du texte et faire de petites animations (scrolling…). La résolution de cet écran n’est pas pris en charge directement par cette librairie. Mike Causer a fait une adaptation de la librairie. Elle est disponible sur Github ici. Mc Causer a également fait une adaptation du programme de démo d’Adraduit ici.

Si vous développez d’autres projets à l’aide de la librairie Adafruit_SSD1306 officielle, le mieux est d’ajouter les 2 fichiers modifiés directement dans votre projet. Téléchargez le fichier ZIP depuis Github. Après décompression, placez les 2 fichiers Adafruit_SSD1306.cpp et Adafruit_SSD1306.h dans le répertoire de votre projet. Fermez et rechargez le projet pour prendre en compte les 2 librairies

Pour en savoir plus sur cette librairie, lisez cet article

Il faut modifier la déclaration de la librairie en début de programme pour appeler la librairie locale. C’est surtout le cas si vous utilisez déjà la librairie officielle Adafruit pour d’autres projets.

Devient

Attention, si la librairie n’est pas placée dans le même répertoire que le programme Arduino, il faudra également indiquer le chemin. 

La modification prend simplement en compte la résolution de l’écran OLED du shield. La programmation reste parfaitement identique. Voici un petite exemple de code (minimal) qui affiche un Hello World sur la première ligne de l’écran.

Testeur DHT22 : affichage température et humidité

Pour tester l’écran, voici un petit montage rapide qui permet de mesurer puis d’afficher la température et l’humidité mesurée à l’aide du shield DHT22. Le Shield Wemos DHT22 a déjà été présenté dans ce test. Vous pouvez rendre cette petite sonde de température autonome en la faisant fonctionner sur batterie grâce au Shield LiPo qui fera l’objet d’un prochain test.

esp8266 Wemos D1 miniWemos D1 Mini
wemos d1 mini shield batterie lipoChargeur pour batterie LiPo avec connecteur micro USB.

environ 2,20€

wemos d1 mini oled shieldEcran OLED SSD1306 I2C 64×48 pixels. Broches par défaut : D1 – SCL, D2 – SDA

environ 4,40€

wemos d1 mini dht22 shieldShield DHT22 ou DHT11 pour Wemos D1 Mini

Le capteur est connecté à la broche D4 (GPIO2)

Code du programme

Ce petit programme récupère donc la mesure de température (en Celcius) ainsi que le taux d’humidité.

Le shield OLED permet d’afficher jusqu’à 6 lignes de texte. Avec la librairie Adafruit_SSD1306, on dispose de 10 caractères avec la taille 1.

shield wemos dht22 oled display 64x48pixels battery lipo arduino code
De bas en haut : Wemos D1 Mini, Shield LiPo, Shield DHT22, Shield OLED

Utiliser le Shield OLED avec ESP Easy

Le shield Wemos n’est pris en charge qu’à partir de la version R147 RC8 d’ESP Easy. Cliquez sur ce lien pour la télécharger ou allez sur le site de letscontrolit.com pour récupérer une version plus récente. Installez le firmware ESP Easy comme d’habitude.

Lancez un scan du bus I2C pour connaître l’adresse de l’écran.

shield oled wemos d1 mini espeasy 64x48 scan bus i2c

Créez un device pour le DHT22. Par rapport à la version R120, les broches ont un double repérage. Le repérage Arduino GPIOx ainsi que la correspondance ESP8266 (Dx). Sur le shield DHT, le DHT22 (ou DHT11) est soudé sur la broche D4. Configurez les paramètres comme ceci :

  • Delay : choisissez une fréquence de rafraichissement. Ici 1 seconde
  • IDX : un nombre différent de 0
  • GPIO : le DHT22 est branché sur le D4
  • Type : choisissez votre modèle (DHT11, DHT21 ou DHT22)
  • Enregistrez avec submit

shield oled wemos d1 mini espeasy dht22 shield

Ajoutez un nouveau device pour l’écran OLED et configurez le ainsi

  • Delay : 1 seconde par exemple
  • I2C : choisissez l’adresse I2C sur laquelle se trouve l’écran
  • Rotation : si vous n’avez que 4 lignes à afficher, vous pouvez changer d’orientation. La version 147 RC8 comporte un bug d’affichage qui n’affiche pas les 2 dernières lignes
  • Display Size : choisissez 64×48
  • Line : on appel la valeur d’une sonde entre crochets. Par exemple pour afficher la température renvoyée par le device DHT22, on fera [DHT22#temperature]. La casse n’est pas prise en compte.
  • Enregistrez avec submit

Autres remarques :

  • Le code comporte un second bug. La dernière ligne déborde sur la première ligne (ou plus)
  • Chaque ligne ne peut pas contenir plus de 8 caractères. C’est moins qu’avec la librairie Adafruit_SSD1306

shield oled wemos d1 mini esp easy

Et voici l’affichage obtenu

shield wemos dht22 oled display 64x48pixels battery lipo esp easy r147

Wemos nos propose donc ici un Shield de bonne qualité qui vient s’empiler par dessus d’autres Shields. La résolution est un peu contraignante mais les librairies habituelles ont été adaptées et permettent de programmer assez simplement un affichage.