ESP32 - Teclado

Este tutorial ensina você a usar o ESP32 com um teclado. Em detalhes, vamos aprender:

Sobre o Teclado

Teclado

O teclado é composto por um grupo de botões organizados em uma matriz (linhas e colunas). Cada botão representa uma tecla. Existem muitos tipos de teclado. O teclado 3x4 (12 teclas) e o teclado 4x4 (16 teclas) são os dois mais usados em projetos DIY.

Pinagem do Teclado

Os pinos do teclado são divididos em dois grupos: linha e coluna.

  • O teclado 3x4 tem 7 pinos:
    • R1, R2, R3, R4: pinos de linha
    • C1, C2, C3: pinos de coluna
  • O teclado 4x4 tem 8 pinos:
    • R1, R2, R3, R4: pinos de linha
    • C1, C2, C3, C4: pinos de coluna
    Pinagem do Teclado

    Como o Teclado Funciona

    Veja como o teclado funciona

Diagrama de Ligação entre o Teclado e o ESP32

ESP32 - Diagrama de ligação do teclado 3x4

  • Como conectar o ESP32 e o teclado 3x4 usando protoboard
Diagrama de Ligação do ESP32 com Teclado 3x4

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como conectar o ESP32 e o teclado 3x4

ESP32 - Diagrama de ligação do teclado 4x4

  • Como conectar o ESP32 e o teclado 4x4 usando protoboard
Diagrama de Ligação do ESP32 com Teclado 4x4

This image is created using Fritzing. Click to enlarge image

Como conectar o ESP32 e o teclado 4x4

Código ESP32

Teclado 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); } }

Teclado 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); } }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Clique no ícone Libraries na barra esquerda da Arduino IDE.
  • Digite keypad na caixa de pesquisa e procure a biblioteca keypad de Mark Stanley, Alexander Brevig
  • Clique no botão Install para instalar a biblioteca keypad.
Biblioteca keypad para ESP32
  • Copie o código acima e cole-o na Arduino IDE.
  • Compile e carregue o código na placa ESP32 clicando no botão Upload na Arduino IDE
  • Abra o Serial Monitor na Arduino IDE
Como abrir o Serial Monitor na Arduino IDE
  • Pressione algumas teclas do teclado
  • Veja o resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
1 2 3 4 * #
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Teclado e Senha

O teclado é muito usado para autenticar alguém por meio de senha. Neste tutorial, uma senha válida é pré-definida no código. Quando um usuário digita a senha no teclado, ela é comparada com a senha pré-definida:

  • Se corresponder, o acesso é concedido.
  • Se não, o acesso é negado.

Para usar senha com o teclado, especificamos duas teclas especiais:

  • Uma tecla para começar a digitar a senha. Por exemplo, a tecla "*"
  • Uma tecla para terminar de digitar a senha. Por exemplo, a tecla "#"

A senha digitada pelo usuário será armazenada em uma string, chamada de string da senha digitada. Quando uma tecla é pressionada:

  • Se a tecla digitada for "*", limpe a string da senha digitada para começar uma nova senha
  • Se a tecla digitada NÃO for "*" nem "#", adicione a tecla à string da senha digitada.
  • Se a tecla digitada for "#", compare a string da senha digitada com a senha pré-definida.

Teclado - Código de Senha

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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 } } }
  • Execute o código acima
  • Abra o Serial Monitor na Arduino IDE
Como abrir o Serial Monitor na Arduino IDE
  • Pressione as teclas "123456" e pressione "#"
  • Pressione as teclas "7890" e pressione "#"
  • Veja o resultado no Serial Monitor. Ele fica parecido com o abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The password is incorrect, ACCESS DENIED! The password is correct, ACCESS GRANTED!
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!