Skip to Content

Interface Arduino Uno avec écran TFT ST7735 en utilisant un convertisseur de niveau

Interface Arduino Uno avec écran TFT ST7735 en utilisant un convertisseur de niveau

Dans ce tutoriel, vous apprendrez comment interfacer un écran TFT 1,8 pouce 128×160 avec un driver ST7735 avec un Arduino Uno en utilisant un convertisseur de niveau logique TXS0108E.

L’Arduino Uno et de nombreuses autres cartes Arduino fonctionnent avec une logique 5V, tandis que beaucoup d’écrans TFT, capteurs et autres appareils fonctionnent avec une logique 3,3V. Vous ne pouvez donc souvent pas connecter directement ces appareils à un Arduino sans utiliser un convertisseur de niveau logique qui convertit entre les niveaux 5V et 3,3V.

Les instructions et le code de ce tutoriel fonctionneront avec quelques modifications mineures pour d’autres Arduino et écrans TFT. Les seules exigences sont d’avoir un Arduino avec une logique 5V, un écran TFT avec une logique 3,3V et que l’écran utilise le driver ST7735.

Pièces requises

Pour ce tutoriel, j’ai utilisé un Arduino Uno, un module convertisseur de niveau logique TXS0108E et un écran TFT 1,8 pouce avec une résolution de 128×160 pixels et un circuit driver ST7735. Quelques câbles et une breadboard peuvent aussi être utiles.

Écran TFT 1,8″ ST7735

Convertisseur de niveau logique TXS0108E

Arduino

Arduino Uno

USB Data Sync cable Arduino

Câble USB pour Arduino UNO

Dupont wire set

Jeu de fils Dupont

Half_breadboard56a

Breadboard

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Module d’écran TFT 1,8″ ST7735

Le module d’écran TFT 1,8″ que nous allons utiliser ici a une résolution de 128×160 pixels avec 65K couleurs RGB. L’image ci-dessous montre le devant et le dos du module d’écran :

Front and Back of 1.8" TFT ST7735 Display Module
Devant et dos du module d’écran TFT 1,8″ ST7735 (source)

Le module utilise le circuit driver ST7735S et est contrôlé via une interface SPI 4 fils. La tension de fonctionnement est de 3,3V et l’écran consomme environ 30mA au maximum.

Notez qu’il existe de nombreuses versions différentes de ce type d’écran TFT. Certains ont un SD card supplémentaire ou un touch display.

Certains intègrent un convertisseur logic level qui permet de connecter le module d’écran à un Arduino fonctionnant en 5V. Celui-ci n’en possède pas, ce qui signifie que nous devons utiliser un convertisseur de niveau logique, sinon vous risquez d’endommager le circuit driver de l’écran.

Il existe des écrans similaires qui utilisent le circuit driver ST7789 au lieu du ST7735S. Le code de ce tutoriel est destiné aux écrans avec le circuit driver ST7735S et ne fonctionnera pas avec d’autres.

Le module convertisseur de niveau logique TXS0108E

Le TXS0108E est un convertisseur de niveau logique bidirectionnel à 8 canaux. Il convertit entre différents niveaux de tension, typiquement 3,3V et 5V. L’image ci-dessous montre une carte breakout typique avec la puce TXS0108E au centre.

Breakout board for TXS0108E Logic Level Shifter
Carte breakout pour convertisseur de niveau logique TXS0108E

Vous pouvez voir les 8 canaux (A1A8, B1B8) étiquetés sur la carte. Vous connectez un signal logique 5V à l’un des canaux B et il est converti en niveau logique 3,3V sur le canal A correspondant, par exemple A1 <-> B1.

Le TXS0108E est bidirectionnel, ce qui signifie que A peut être une entrée et B une sortie ou inversement. De plus, il supporte les communications SCM, I²C et SPI, et nous aurons besoin de SPI pour interfacer l’Arduino avec l’écran TFT.

Pour plus d’informations détaillées, consultez la fiche technique du TXS0108E liée ci-dessous :

Comment câbler le convertisseur de niveau logique TXS0108E

Connecter le TXS0108E est simple. Vous devez fournir la tension plus élevée de 5V à la broche VB du côté des canaux B et la tension plus basse de 3,3V à la broche VA du côté des canaux A. Voir le schéma de câblage ci-dessous :

La masse va à GND et il y a une broche OE pour « Output Enable » que vous devez connecter à 3,3V pour activer les canaux.

Comme mentionné précédemment, tous les signaux 5V doivent être connectés aux canaux B et tous les signaux 3,3V aux canaux A. Vous n’avez pas besoin d’utiliser tous les canaux et dans la section suivante, nous connectons l’écran TFT à l’Arduino en utilisant 6 canaux.

Connexion de l’écran TFT 1,8″ ST7735 avec convertisseur de niveau et Arduino Uno

Connecter l’écran TFT à un Arduino Uno via le convertisseur de niveau logique nécessite pas mal de fils et il est facile de faire une erreur. Prenez donc votre temps et faites attention aux bonnes connexions.

Notez aussi que l’étiquetage des broches sur l’écran TFT est un peu déroutant. Il montre des broches SDA et SCL mais comme l’écran utilise une interface SPI, ce ne sont pas les broches SDA et SCL pour I2C ! En fait, SDA correspond à MOSI et SCL à SCLK pour SPI.

Le schéma de câblage suivant vous montre comment connecter l’écran TFT 1,8″ ST7735 via le convertisseur de niveau logique TXS0108E à un Arduino Uno :

Connecting TFT ST7735 Display with TXS0108E and Arduino
Connexion de l’écran TFT ST7735 avec TXS0108E et Arduino

Pour simplifier, voici un tableau des connexions à réaliser :

Arduino UNOConvertisseur niveau BConvertisseur niveau AÉcran TFT
13 (SCLK)B1A1SCL
11 (MOSI)B2A2SDA
8 (RST)B3A3RES
9 (DC)B4A4DC
10 (CS)B5A5CS
7 (BLK)B6A6BL
5VVB
3.3VVAVCC
3.3VOE
GNDGNDGND

Code pour écran TFT ST7735 avec la bibliothèque Adafruit_ST7735

Dans cette section, nous allons utiliser la bibliothèque Adafruit-ST7735 pour écrire et dessiner sur l’écran TFT 1,8″ ST7735. Pour l’installer, ouvrez simplement le gestionnaire de bibliothèques, cherchez « Adafruit-ST7735 » et cliquez sur le bouton vert INSTALL :

Adafruit-ST7735 in Library Manager
Adafruit-ST7735 dans le gestionnaire de bibliothèques

L’installateur vous proposera probablement d’installer les dépendances également. Cliquez sur INSTALL ALL :

Install the dependencies for Adafruit-ST7735 Library
Installer les dépendances pour la bibliothèque Adafruit-ST7735

Une fois la bibliothèque installée, nous pouvons tester l’écran. Compilez et téléversez simplement le code suivant. Il affiche le texte « Makerguides » avec un cadre jaune sur l’écran :

#include <Adafruit_GFX.h>     
#include <Adafruit_ST7735.h>  

#define TFT_CS    10   
#define TFT_RST   8  
#define TFT_DC    9   
// #define TFT_MOSI  11  // SDA // HW MOSI
// #define TFT_SCLK  13  // SCL // HW SCLK
// #define TFT_MISO  12  // not used
#define TFT_BL    7   // LED back-light


Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);  // hardware SPI
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

void setup(void) {
  pinMode(TFT_BL, OUTPUT);
  digitalWrite(TFT_BL, HIGH); 

  //tft.initB();
  tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
  //tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab
  //tft.setSPISpeed(27000000);

  tft.setRotation(1);
  tft.fillScreen(ST77XX_BLACK);

  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(2);
  tft.setCursor(15, 50);
  tft.println("Makerguides");
  tft.drawRect(10, 40, 145, 40, ST77XX_YELLOW);
}

void loop() { }

Si vous utilisez le SPI matériel, vous n’aurez pas besoin des définitions des broches pour TFT_MOSI et TFT_SCLK. Dans le cas de l’Arduino, les broches pour le SPI matériel sont

  • SCLK -> 13
  • MISO -> 12
  • MOSI -> 11
  • SS/CS -> 10

Cependant, si vous utilisez le SPI logiciel, vous devrez les définir et les passer à l’autre constructeur de l’objet tft :

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

Si vous compilez et téléversez le code, vous devriez voir la sortie suivante sur votre écran :

Output on TFT with Adafruit_ST7735 Library
Affichage sur TFT avec la bibliothèque Adafruit_ST7735

Si vous ne voyez rien, ou si les couleurs sont incorrectes, ou si le texte présente des artefacts, essayez l’un des autres initialiseurs pour l’écran TFT dans le code :

  //tft.initB();
  tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
  //tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab

Les onglets noirs et onglets verts font référence aux onglets colorés attachés au film de protection de l’écran que ces écrans ont généralement. Par exemple, l’image ci-dessous montre un écran TFT avec un onglet vert :

Écran TFT avec onglet vert (source)

La couleur de l’onglet est importante car elle indique souvent le type de contrôleur d’écran utilisé. L’onglet vert est généralement pour des contrôleurs plus récents ou alternatifs comme ILI9341, ST7735, ou d’autres modèles spécifiques. L’onglet noir indique un contrôleur plus ancien ou différent, comme ST7735R ou des variantes similaires, qui ont des spécifications légèrement différentes.

Conclusions

Dans ce tutoriel, vous avez appris comment interfacer un écran TFT 1,8 pouce 128×160 avec un driver ST7735 avec un Arduino Uno en utilisant un convertisseur de niveau logique TXS0108E.

Si vous avez un microcontrôleur qui fonctionne avec une logique 3,3V, vous n’aurez pas besoin du convertisseur de niveau logique. Consultez le tutoriel Interface TFT ST7735 Display with ESP32, où nous connectons le même écran TFT à un ESP32.

Si votre écran utilise le driver ST7789 au lieu du ST7735, vous pouvez toujours utiliser le Adafruit-ST7735 Library pour contrôler l’écran avec seulement quelques petites modifications du code.

Si vous avez des commentaires, n’hésitez pas à les laisser dans la section commentaires.

Bon bricolage ; )