ESP32 S3 - Clavier - LCD

Un clavier associé à un écran LCD I2C donne à l'ESP32 S3 une boucle d'interface humaine complète — l'utilisateur appuie sur une touche et la carte affiche le résultat sur l'écran sans avoir besoin d'un ordinateur portable ni du moniteur série. Ce tutoriel vous montre comment connecter les deux composants à l'ESP32 S3 et écrire le code Arduino qui capture chaque pression de touche et l'affiche en direct sur le LCD.

Ce que vous allez construire :

  1. Un circuit reliant un clavier matriciel 3x4 ou 4x4 et un écran LCD I2C à l'ESP32 S3
  2. Un croquis qui détecte chaque pression de touche et met immédiatement à jour le LCD avec le caractère pressé
  3. Un affichage de saisie autonome qui fonctionne indépendamment d'un ordinateur une fois téléversé
  4. Une base réutilisable pour des panneaux de saisie de code PIN, des systèmes de menu et des interfaces de saisie interactives

Matériel requis

1×ESP32 S3 WROOM N16R8
1×Alternativement: ESP32 S3 SuperMini Dev Module
1×Alternativement: ESP32 S3 Uno-form Board
1×Alternativement: ESP32 S3 Camera Board
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×LCD I2C Display 3.3V
1×Alternativement: LCD I2C 20x4
1×Clavier 3x4 and 4x4 Kit
1×Alternativement: Clavier 3x4
1×Alternativement: Clavier 4x4
1×Plaque d'essai
1×Fils de connexion
1×Optionnel: Connecteur d'alimentation DC
1×Recommandé: Screw Terminal Expansion Board for ESP32 S3
1×Recommandé: Breakout Expansion Board for ESP32 S3
1×Recommandé: Power Splitter for ESP32 S3

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Note d'achat: La plupart des écrans LCD I2C du marché sont des modèles 5V. Ils peuvent fonctionner avec cette carte, mais ce n'est pas sûr et cela risque d'endommager la carte. Nous recommandons vivement d'utiliser l'écran LCD I2C 3.3V recommandé ci-dessus.

À propos du clavier et de l'écran LCD

Un clavier matriciel encode les pressions de bouton en balayant les lignes et les colonnes, de sorte que de nombreuses touches peuvent être lues avec seulement une poignée de broches GPIO, ce qui en fait un moyen efficace d'ajouter une saisie physique à n'importe quel projet ESP32 S3. L'associer à un écran LCD I2C referme la boucle de rétroaction en donnant à l'utilisateur une confirmation instantanée et visible de ce qui a été saisi — sans besoin d'une fenêtre du moniteur série.

Caractéristiques principales

Nous avons des tutoriels dédiés qui couvrent chaque composant en détail. Chaque tutoriel contient des informations détaillées et des instructions pas à pas sur le brochage matériel, le principe de fonctionnement, la connexion de câblage à l'ESP32 S3 et le code Arduino. Apprenez-en plus via les liens suivants :

Schéma de câblage

Connectez les broches de lignes et de colonnes du clavier aux GPIO de l'ESP32 S3 et câblez le module LCD I2C au bus I2C de la carte avant de mettre quoi que ce soit sous tension. Vérifiez deux fois chaque connexion par rapport aux schémas ci-dessous, en faisant particulièrement attention au fil VCC du LCD — il doit aller sur le rail 5V, et non 3,3V, pour que l'affichage fonctionne correctement.

  • Schéma de câblage entre l'ESP32 S3 et le clavier 3x4
Schéma de câblage clavier 3x4 et LCD ESP32 S3

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Vous voulez une connexion plus solide que des fils de connexion ? Essayez une carte à bornier à vis pour ESP32 S3 : la carte ESP32 S3 se place dessus et chaque broche a son propre bornier à vis. Voici le schéma de câblage avec la carte à bornier à vis.

Schéma de câblage clavier 3x4 et LCD ESP32 S3 (Screw Terminal)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Une carte d'extension GPIO pour ESP32 S3 convient aussi. En plus des broches S, 3,3V et GND de chaque GPIO, elle a des broches 3,3V et 5V supplémentaires :

Schéma de câblage clavier 3x4 et LCD ESP32 S3 (GPIO Breakout Board)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

  • Schéma de câblage entre l'ESP32 S3 et le clavier 4x4
Schéma de câblage clavier et LCD ESP32 S3

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Un bornier à vis maintient chaque fil bien serré, même quand la carte bouge. Pour cela, montez la carte ESP32 S3 sur une carte à bornier à vis pour ESP32 S3. Voici le montage avec la carte à bornier à vis :

Schéma de câblage clavier et LCD ESP32 S3 (Screw Terminal)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Une carte d'extension GPIO pour ESP32 S3 convient aussi. En plus des broches S, 3,3V et GND de chaque GPIO, elle a des broches 3,3V et 5V supplémentaires :

Schéma de câblage clavier et LCD ESP32 S3 (GPIO Breakout Board)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Consignes de sécurité

Connectez toujours la broche VCC du LCD I2C au rail 5V (VBUS) plutôt qu'au rail 3,3V — le rétroéclairage et le circuit pilote du LCD nécessitent 5V et produiront un affichage faible ou nul à des tensions plus basses. Les lignes de signal du clavier fonctionnent en logique 3,3V, que les GPIO de l'ESP32 S3 gèrent nativement, donc aucune adaptation de niveau n'est nécessaire entre le clavier et la carte.

Composant Broche Broche ESP32 S3
Clavier 3x4 Ligne 1 GPIO1
Clavier 3x4 Ligne 2 GPIO2
Clavier 3x4 Ligne 3 GPIO42
Clavier 3x4 Ligne 4 GPIO41
Clavier 3x4 Colonne 1 GPIO40
Clavier 3x4 Colonne 2 GPIO39
Clavier 3x4 Colonne 3 GPIO38
LCD I2C VCC 5V
LCD I2C GND GND
LCD I2C SCL GPIO9 (horloge I2C)
LCD I2C SDA GPIO8 (données I2C)

Code ESP32 S3 - Clavier 3x4 - LCD I2C

Le code suivant initialise le clavier 3x4 et l'écran LCD I2C, puis entre dans une boucle qui interroge le clavier pour une touche pressée et l'affiche sur le LCD en temps réel. Il utilise la bibliothèque de clavier de Mark Stanley et Alexander Brevig pour gérer le balayage matriciel, et la bibliothèque DIYables LCD I2C pour réduire les mises à jour de l'affichage à un seul appel de fonction lisible.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-keypad-lcd */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-keypad-lcd */ #include <Keypad.h> #include <DIYables_LCD_I2C.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 3 // three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {1, 2, 42, 41}; // GPIO1, GPIO2, GPIO42, GPIO41 connect to the row pins byte pin_column[COLUMN_NUM] = {40, 39, 38}; // GPIO40, GPIO39, GPIO38 connect to the column pins Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows int cursorColumn = 0; void setup(){ lcd.init(); // initialize the lcd lcd.backlight(); } void loop(){ char key = keypad.getKey(); if (key) { lcd.setCursor(cursorColumn, 0); // move cursor to (cursorColumn, 0) lcd.print(key); // print key at (cursorColumn, 0) cursorColumn++; // move cursor to next position if(cursorColumn == 16) { // if reaching limit, clear LCD lcd.clear(); cursorColumn = 0; } } }

※ Note:

L'adresse I2C du LCD peut varier selon chaque fabricant. Dans le code, nous avons utilisé l'adresse 0x27 spécifiée par le fabricant DIYables. Si votre LCD n'affiche rien, essayez plutôt l'adresse 0x3F.

Étapes rapides

  1. Nouveau sur l'ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Câblez le clavier et le LCD I2C à l'ESP32 S3 en suivant le schéma de câblage ci-dessus.
  3. Connectez la carte ESP32 S3 à votre PC à l'aide d'un câble USB Type-C.
  4. Ouvrez Arduino IDE sur votre PC.
  5. Sélectionnez la bonne carte ESP32 S3 et le bon port COM dans le menu Tools.
  6. Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  7. Tapez "keypad" dans le champ de recherche, puis recherchez la bibliothèque de clavier par DIYables.
  8. Cliquez sur le bouton Install pour installer la bibliothèque de clavier.
  • Search for DIYables_Keypad created by DIYables.io and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
DIYables_Keypad by DIYables.io
The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima More info
1.0.1
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Tapez "DIYables LCD I2C" dans le champ de recherche, puis recherchez la bibliothèque DIYables_LCD_I2C par DIYables.
  2. Cliquez sur le bouton Install pour installer la bibliothèque DIYables_LCD_I2C.
  • Search for DIYables LCD I2C created by DIYables.io and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
DIYables LCD I2C by DIYables.io
This library is designed for HD44780-based I2C LCD displays. It provides LiquidCrystal-compatible API plus helper functions (text alignment, progress bars, predefined custom characters). Supports multiple I2C buses (Wire, Wire1, Wire2) for advanced boards like Arduino Giga, Due, and ESP32. Compatible with all Arduino-based platforms including Arduino Uno, Mega, Nano, ESP32, ESP8266, STM32, and Raspberry Pi Pico. More info
1.0.0
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Copiez le code ci-dessus et collez-le dans Arduino IDE.
  2. Cliquez sur le bouton Upload pour compiler et téléverser le code sur votre ESP32 S3.
Téléversement du code avec Arduino IDE
  1. Appuyez sur quelques touches du clavier.
  2. Observez les caractères pressés apparaître sur l'écran LCD.
  3. Astuce pro : Si le LCD n'affiche rien, ajustez le potentiomètre de contraste à l'arrière du module LCD et vérifiez que l'adresse I2C dans le code correspond à votre module (essayez 0x3F si 0x27 ne fonctionne pas). Consultez Dépannage du LCD I2C pour plus d'aide.

Sortie du moniteur série

La sortie du moniteur série suivante montre l'ESP32 S3 détectant les pressions de touches du clavier 3x4 et affichant chaque caractère pressé. Chaque ligne est horodatée afin que vous puissiez vérifier que chaque pression est capturée immédiatement et dans le bon ordre.

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 10:22:01] Key pressed: 1 [2026-06-16 10:22:03] Key pressed: 4 [2026-06-16 10:22:05] Key pressed: * [2026-06-16 10:22:07] Key pressed: #
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Code ESP32 S3 - Clavier 4x4 - LCD I2C

Le code suivant adapte le plan de touches et la configuration des broches pour un clavier matriciel 4x4 tout en conservant la même logique d'affichage LCD I2C. Passer d'un clavier 3x4 à un clavier 4x4 ajoute les lettres A, B, C et D, vous donnant un jeu de caractères plus riche pour des systèmes de menu ou des interfaces de contrôle d'accès.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-keypad-lcd */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-keypad-lcd */ #include <Keypad.h> #include <DIYables_LCD_I2C.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3', 'A'}, {'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} }; byte pin_rows[ROW_NUM] = {1, 2, 42, 41}; // GPIO1, GPIO2, GPIO42, GPIO41 connect to the row pins byte pin_column[COLUMN_NUM] = {40, 39, 38, 47}; // GPIO40, GPIO39, GPIO38, GPIO47 connect to the column pins Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows int cursorColumn = 0; void setup(){ lcd.init(); // initialize the lcd lcd.backlight(); } void loop(){ char key = keypad.getKey(); if (key) { lcd.setCursor(cursorColumn, 0); // move cursor to (cursorColumn, 0) lcd.print(key); // print key at (cursorColumn, 0) cursorColumn++; // move cursor to next position if(cursorColumn == 16) { // if reaching limit, clear LCD lcd.clear(); cursorColumn = 0; } } }

Applications et idées de projets

Une fois que vous pouvez capturer la saisie du clavier et l'afficher sur le LCD avec votre ESP32 S3, vous pouvez étendre ce projet à un large éventail d'applications pratiques pilotées par saisie.

  1. Verrouillage par code PIN : Collectez une séquence de touches pressées, comparez-la à un code PIN enregistré, et déverrouillez un relais ou un solénoïde lorsque les codes correspondent.
  2. Calculatrice : Analysez les touches numériques et les opérateurs saisis sur le clavier, évaluez l'expression, et affichez le résultat sur le LCD.
  3. Système de navigation par menu : Utilisez le clavier pour parcourir des options sur le LCD et sélectionner des actions comme basculer des sorties ou ajuster des paramètres.
  4. Terminal de contrôle d'accès : Enregistrez chaque touche pressée avec un horodatage sur une carte SD et affichez des messages d'accès accordé ou refusé sur le LCD.
  5. Panneau d'alarme simple : Laissez l'utilisateur armer ou désarmer une alarme en saisissant un code sur le clavier, avec des messages d'état affichés sur le LCD.
  6. Terminal de saisie de données : Utilisez le clavier pour saisir des valeurs numériques pour des points de consigne, des seuils ou des paramètres de configuration stockés en mémoire flash.

Vidéo tutoriel

Regardez ci-dessous la vidéo pas à pas de ce projet ESP32 S3.

Défiez-vous

Maintenant que les touches pressées apparaissent sur le LCD avec votre ESP32 S3, essayez ces défis progressivement plus difficiles pour approfondir votre compréhension et créer des interfaces de saisie plus performantes.

  1. Débutant : Modifiez le croquis pour effacer le LCD après chaque cinq touches pressées afin que l'affichage ne montre toujours que la saisie la plus récente.
  2. Débutant : Ajoutez une fonction de retour arrière — appuyer sur la touche étoile (*) supprime le dernier caractère de l'écran LCD.
  3. Intermédiaire : Mettez en œuvre une vérification simple de code PIN à quatre chiffres : collectez quatre touches pressées, comparez le résultat à un code PIN enregistré, et affichez "ACCESS GRANTED" ou "ACCESS DENIED" sur le LCD.
  4. Intermédiaire : Ajoutez un délai d'inactivité afin que le LCD s'efface automatiquement si aucune touche n'est pressée dans les dix secondes, aidant à protéger les saisies sensibles dans un environnement partagé.
  5. Avancé : Créez une calculatrice numérique qui évalue de simples expressions arithmétiques saisies sur le clavier et affiche le résultat sur la deuxième ligne du LCD.
  6. Avancé : Stockez un code PIN configurable par l'utilisateur dans la mémoire flash de l'ESP32 S3 afin qu'il survive aux cycles d'alimentation, et ajoutez un mode de configuration permettant à l'utilisateur de changer le code PIN via le clavier lui-même.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !