dimanche 27 octobre 2019

Écran Nokia 5110 et ESP32/ESP8266

Voyons un peu comment piloter un écran à cristaux liquides monochrome PCD8544, communément appelé "Nokia 5110", au moyen d'un ESP32 ou d'un ESP8266.


Ces petits écrans peuvent facilement être obtenus en ligne sous la forme d'un module facile à connecter. Il existe principalement deux modèles: celui qui a été mis au point par Sparkfun, et celui qui a été conçu par Adafruit.


J'ai utilisé le modèle Sparkfun; le modèle Adafruit fonctionne tout aussi bien, sauf que ses connecteurs ne sont pas placés dans le même ordre.

Connexion à un ESP32

J'ai branché l'écran à mon module ESP32 de la façon suivante:

  • Broche 1 VCC de l'écran : Broche 3.3V de l'ESP32
  • Broche 2 GND de l'écran: Broche GND de l'ESP32
  • Broche 3 SCE (CS) de l'écran: Broche D15 de l'ESP32
  • Broche 4 RST de l'écran: Broche D4 de l'ESP32
  • Broche 5 D/C de l'écran: Broche D2 de l'ESP32
  • Broche 6 DN (MOSI) de l'écran: Broche D23 de l'ESP32
  • Broche 7 SCLK de l'écran: Broche D18 de l'ESP32
  • Broche 8 LED de l'écran: pas branchée (je n'avais pas besoin du rétroéclairage)



Connexion à un ESP8266

Avec un ESP8266, j'ai procédé de la façon suivante:
  • Broche 1 VCC de l'écran : Broche 3.3V de l'ESP8266
  • Broche 2 GND de l'écran: Broche GND de l'ESP8266
  • Broche 3 SCE (CS) de l'écran: Broche GPIO15 (D8) de l'ESP8266
  • Broche 4 RST de l'écran: Broche GPIO4 (D2) de l'ESP8266
  • Broche 5 D/C de l'écran: Broche GPIO2 (D4) de l'ESP8266
  • Broche 6 DN (MOSI) de l'écran: Broche GPIO13 (D7) de l'ESP8266
  • Broche 7 SCLK de l'écran: Broche GPIO14 (D5) de l'ESP8266
  • Broche 8 LED de l'écran: pas branchée (je n'avais pas besoin du rétroéclairage)


Installation de la bibliothèque u8g2

Afin de faciliter la programmation, j'ai utilisé la bibliothèque u8g2, qui supporte à peu près tout ce qui existe comme petit écran monochrome, et qui est parfaitement compatible avec l'ESP32 et l'ESP8266.

Les exemples fournis avec la bibliothèque  (GraphicsTest ou HelloWorld, par exemple) permettent de vérifier rapidement que l'écran Nokia est fonctionnel et correctement branché.  Parmi l'interminable liste de constructeurs proposée au début de chaque exemple, il faut choisir "U8G2_PCD8544_84X48_F_4W_HW_SPI" et modifier la numérotation des broches pour qu'elle corresponde à nos branchements:

U8G2_PCD8544_84X48_F_4W_HW_SPI u8g2(U8G2_R0, 15, 2,  4);

Un exemple de sketch

Je vous présente ci-dessous un sketch qui permet de choisir à distance, par l'entremise d'une page web, l'illustration affichée par l'écran Nokia.

Au démarrage, l'écran affiche l'adresse IP du serveur web:


Lorsqu'on accède à cette adresse au moyen d'un navigateur web, on nous propose une liste de 4 fruits.


Suite au clic sur le bouton "Appliquer", l'image choisie s'affiche sur l'écran.


-
-

Pour produire les données bitmap

Pour obtenir les données qui définissent chacune des 4 illustrations, j'ai ouvert chaque image (qui était, au départ, un fichier de type .png) au moyen du logiciel GIMP. Puisque la résolution de l'écran est de 84 X 48 pixels, je les ai redimensionnées au format 48 X 48 pixels (menu Image / Échelle et taille de l'image...) avant de les exporter en format .xbm (menu Fichier / Exporter sous...).

J'ai ensuite ouvert le fichier .xbm au moyen d'un éditeur de texte, et recopié les données dans mon sketch.



À lire également

Quelques tutos expliquent comment utiliser d'autres types d'afficheurs avec un ESP32 ou un ESP8266: écran couleur SPI ST7735, écran OLED i2c SH1106 , afficheur LCD 16 X 2 et afficheur 7 segments à base de TM1638.

Quant à l'écran Nokia 5110, voyez comment l'utiliser avec un Raspberry Pi, avec un Arduino ou encore avec un MSP430 Launchpad,

Yves Pelletier   (TwitterFacebook)

2 commentaires:

  1. Bonjour,
    J'ai bien compris que tu "charge" l'esp8266 via un ARDUINO. Je ne trouve pas quoi faire de la lib "la bibliothèque u8g2" ?
    Je présume qu'il s'agit d'une librairie a installer dans l'IDE Arduino.
    Je débute !
    Merci d'avance

    RépondreSupprimer
    Réponses
    1. Bonjour,
      L'ESP8266 est programmé au moyen de l'IDE Arduino (le logiciel), et non par l'entremise d'une carte Arduino. u8g2 est effectivement une bibliothèque qu'il faut installer dans l'IDE Arduino pour faciliter le contrôle de l'écran.

      Supprimer