ESP32 - Clavier

Ce tutoriel vous explique comment utiliser un ESP32 avec un clavier. En détail, nous apprendrons :

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Keypad 3x4 and 4x4 Kit
1×(Alternative) Keypad 3x4
1×(Alternative) Keypad 4x4
1×(Optional) DC Power Jack
1×Breadboard
1×Jumper Wires
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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.

À propos du clavier

Clavier

Le clavier est composé d'un ensemble de boutons disposés en matrice (lignes et colonnes). Un bouton représente une touche. Il existe de nombreux types de claviers. Les claviers 3x4 (12 touches) et 4x4 (16 touches) sont les deux types les plus couramment utilisés dans les projets DIY.

Brochage du clavier à touches

Les broches du clavier sont classées en deux groupes : rangée et colonne.

  • Le clavier 3x4 comprend 7 broches :
    • R1, R2, R3, R4 : broches de ligne
    • C1, C2, C3 : broches de colonne
  • Le clavier 4x4 comprend 8 broches :
    • R1, R2, R3, R4 : broches de ligne
    • C1, C2, C3, C4 : broches de colonne
    Disposition des broches du clavier

    Comment fonctionne le clavier

    Voir comment fonctionne le clavier

Schéma de câblage entre le clavier et l'ESP32

  • Schéma de câblage du clavier 3x4 ESP32
Schéma de câblage du clavier 3x4 ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

  • Schéma de câblage du clavier 4x4 ESP32
Schéma de câblage du clavier 4x4 ESP32

This image is created using Fritzing. Click to enlarge image

Code ESP32

Clavier 3x4

#include <Keypad.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] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16 connect to the row pins byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Clavier 4x4

#include <Keypad.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] = {19, 18, 5, 17}; // GPIO19, GPIO18, GPIO5, GPIO17 connect to the row pins byte pin_column[COLUMN_NUM] = {16, 4, 0, 2}; // GPIO16, GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Étapes rapides

  • Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
  • Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  • Tapez keypad dans la boîte de recherche, puis recherchez la bibliothèque de clavier par Mark Stanley, Alexander Brevig
  • Cliquez sur le bouton Install pour installer la bibliothèque keypad.
Bibliothèque de clavier ESP32
  • Copiez le code ci-dessus et collez-le dans l'IDE Arduino.
  • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload de l'IDE Arduino.
  • Ouvrez le moniteur série sur l'IDE Arduino.
Comment ouvrir le moniteur série sur Arduino IDE
  • Appuyez sur quelques touches du pavé numérique
  • Voir le résultat dans le moniteur série
COM6
Send
1 2 3 4 * #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Clavier et mot de passe

Le clavier est largement utilisé pour authentifier une personne par mot de passe. Dans ces tutoriels, un mot de passe valide est prédéfini dans le code. Lorsqu'un utilisateur saisit le mot de passe depuis le clavier, il est comparé au mot de passe prédéfini :

  • Si cela correspond, l'accès est accordé.
  • Sinon, l'accès est refusé.

Pour utiliser un mot de passe avec un clavier, nous spécifions deux touches spéciales :

  • Une touche pour commencer à saisir le mot de passe. Par exemple, la touche "*"
  • Une touche pour terminer la saisie du mot de passe. Par exemple, la touche "#"

Le mot de passe saisi par un utilisateur sera stocké dans une chaîne, appelée chaîne de mot de passe saisie. Lorsqu'une touche est pressée :

  • Si une touche saisie est "*", effacez la chaîne de mot de passe saisie pour commencer un nouveau mot de passe.
  • Si une touche saisie n'est ni "*" ni "#", ajoutez la touche à la chaîne de mot de passe saisie.
  • Si une touche saisie est "#", comparez la chaîne de mot de passe saisie avec le mot de passe prédéfini.

Clavier - Code de mot de passe

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32-keypad */ #include <Keypad.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] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16 connect to the row pins byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "7890"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // clear input password } else if (key == '#') { if (password == input_password) { Serial.println("The password is correct, ACCESS GRANTED!"); // DO YOUR WORK HERE } else { Serial.println("The password is incorrect, ACCESS DENIED!"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }
  • Exécutez le code ci-dessus
  • Ouvrez le moniteur série sur l'IDE Arduino
Comment ouvrir le moniteur série sur Arduino IDE
  • Appuyez sur les touches "123456" et appuyez sur "#"
  • Appuyez sur les touches "7890" et appuyez sur "#"
  • Voir le résultat sur le moniteur série. Il ressemble à ce qui suit :
COM6
Send
The password is incorrect, ACCESS DENIED! The password is correct, ACCESS GRANTED!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!