dimanche 16 mai 2021

Utilisation d'un écran tactile TFT SPI 240 X 320 (ILI9341) avec un ESP32

Dans ce tuto, nous branchons à un ESP32 un écran tactile SPI 240 X 320 comportant le contrôleur ILI9341. L'ESP32 sera programmé au moyen de l'IDE Arduino.


Connexions de l'écran à l'ESP32

Mon écran est muni d'un lecteur de carte SD que je n'utiliserai pas pour l'instant. Ça nous laisse tout de même 18 broches qui servent à l'alimentation, à l'affichage et au capteur tactile.


Voici comment j'ai branché l'écran à mon module ESP32:

  • Broche VCC de l'écran: sortie 3,3 V de l'ESP32
  • Broche GND de l'écran: broche GND de l'ESP32
  • Broche CS de l'écran: broche D15 de l'ESP32
  • Broche Reset de l'écran: broche D4 de l'ESP32
  • Broche DC de l'écran: broche D5 de l'ESP32
  • Broche SDI (MOSI) de l'écran: broche D23 de l'ESP32
  • Broche SCK de l'écran: broche D18 de l'ESP32
  • Broche LED de l'écran: sortie 3,3 V de l'ESP32
  • Broche CDCK (MISO) de l'écran: broche D19 de l'ESP32
  • Broche T_CLK de l'écran: broche D18 de l'ESP32
  • Broche T_CS de l'écran: broche D21 de l'ESP32
  • Broche T_DIN de l'écran: broche D23 de l'ESP32
  • Broche T_DO de l'écran: broche D19 de l'ESP32
  • Broche T_IRQ de l'écran: pas branchée

Installation de la bibliothèque TFT_eSPI

La bibliothèque TFT_eSPI de Bodmer peut être installée au moyen du gestionnaire de bibliothèques de l'IDE Arduino.


Configuration de la bibliothèque TFT_eSPI (fichier User_Setup)

Puisque la bibliothèque TFT_eSPI est compatible avec un grand nombre d'écrans TFT et avec plusieurs microcontrôleurs, il est nécessaire de régler certaines informations dans un fichier de démarrage avant de pouvoir l'utiliser.  Un grand nombre de fichiers prêts à l'emploi se trouvent dans le dossier "User_Setups", qui se trouve lui-même à l'intérieur du dossier de la bibliothèque TFT_eSPI (dans votre Sketchbook Arduino). 

Malheureusement, le dossier ne comporte pas de fichier conçu pour l'utilisation d'un ILI9341 avec un ESP32, et j'en ai donc écrit un (voir ci-dessous). Ce fichier devrait être enregistré dans le dossier User_Setups sous le nom "Setup_ILI9341_ESP32.h"

-
-

Après avoir copié le fichier ci-dessous dans le dossier User_Setups sous le nom "Setup_ILI9341_ESP32.h" , il faut également ouvrir le fichier User_Setup_Select.h, commenter la ligne 22 (pour la désactiver), et ajouter cette directive:

#include <User_Setup/Setup_ILI9341_ESP32.h>


Si plus tard vous désirez utiliser la bibliothèque TFT_eSPI avec un autre écran ou avec un autre microcontrôleur, il s'agira d'utiliser un fichier de configuration différent.

Sketch #1: Deux boutons

Je vous présente ici les deux mêmes sketches que j'avais utilisés avec un ESP8266 et un STM32. Dans ce premier exemple, l'écran affiche deux boutons: un premier bouton fait apparaître un rectangle, alors que l'autre fait apparaître un cercle. En  plus d'illustrer la gestion des boutons, cet exemple montre comment tracer à l'écran des formes géométriques simples.


-
-

Sketch #2: Bouton coulissant

Dans ce deuxième exemple, l'écran affiche un bouton coulissant qui contrôle une valeur numérique située entre 0 et 100. Ça pourrait être utilisé pour contrôler la vitesse d'un moteur, la luminosité d'une LED, etc.


-
-

Bien entendu, de nombreux autres exemples sont inclus avec la bibliothèque TFT_eSPI.


À lire également

Yves Pelletier (Facebook)


5 commentaires:

  1. Merci pour ce tutoriel. J'avais quelques soucis avec la partie tactile. J'ai modifié dans le User Setup
    TOUCH_CS 21 et non pas 19 (19 c'est MISO)
    puis car ça ne fonctionnait toujours pas
    #define SPI_FREQUENCY 5000000
    #define SPI_READ_FREQUENCY 5000000

    5000000 au lieu de 40000000
    Maintenant ça fonctionne en tout cas sur ESP-WROOM-32

    RépondreSupprimer
  2. class TFT_eSPI' has no member named 'getTouch. Des messages en cascade s'enchaînent. Il serait peut-être utile de détailler la manipulation de la modification de la bibliothèque.

    RépondreSupprimer
  3. Bonjour, j'ai un lecteur TFT SPFD5408 qui est similaire au votre mais je ne sais pas comment le câbler au ESP32 car les branches n'ont simplement pas le même nom. Pouvez vous m'aider ? Si vous ne voyez pas bien à quoi il ressemble voici une ref :https://www.azde.ly/fr/products/2-4-tft-lcd-touch-display

    RépondreSupprimer
    Réponses
    1. slt j'ai le même probleme j'essai de relier mon ecrans au esp32 flasher avec marauder pour mon flipper zero, mais les broches n'ont pas toutes le même nom, mais si on va dans la logique, tu remplace LED (du tuto) par BL_EN (sur le tiens) et SCK par SCL
      moi c'est comme ca... mais je ne parviens tout de même pas a afficher le programme dedans (marauder)

      Supprimer
  4. Bonjour, comment commander par les boutons le Brightness du ILI9341 ? Merci pour votre reponse

    RépondreSupprimer