ESP8266 - Teclado

Este tutorial ensina você a usar o ESP8266 com teclado 3x4 e 4x4. Em detalhes, vamos aprender:

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Teclado 3x4 and 4x4 Kit
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Teclado

Um teclado é um conjunto de teclas organizadas em linhas e colunas, chamado de matriz. Cada botão é conhecido como uma tecla. Os teclados vêm em vários estilos. Dois dos mais comuns em projetos DIY são o teclado 3x4 (com 12 teclas) e o teclado 4x4 (com 16 teclas).

A Pinagem do Teclado

Os pinos são divididos em dois grupos: linhas e colunas.

  • Um teclado 3x4 tem 7 pinos: quatro pinos para as linhas (rotulados R1, R2, R3 e R4) e quatro pinos para as colunas (rotulados C1, C2 e C3).
  • Um teclado 4x4 tem 8 pinos: quatro pinos para as linhas (rotulados R1, R2, R3 e R4) e quatro pinos para as colunas (rotulados C1, C2, C3 e C4).
Keypad pinout

Diagrama de Ligação

  • ESP8266 - Diagrama de ligação do teclado 3x4
The wiring diagram between ESP8266 NodeMCU and Keypad

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

  • ESP8266 - Diagrama de ligação do teclado 4x4
The wiring diagram between ESP8266 NodeMCU and Keypad

This image is created using Fritzing. Click to enlarge image

※ Nota:

Você pode alterar os pinos do ESP8266 conectados aos pinos do teclado. No entanto, evite usar o pino D8 para o teclado. Se, porém, os pinos do ESP8266 não forem suficientes, você pode usar o pino D8 para o teclado, mas DEVE seguir as instruções abaixo:

  • NÃO use o pino D8 do ESP8266 para os pinos das linhas.
  • Ao usar o pino D8 do ESP8266 para um pino de coluna, você DEVE modificar a biblioteca Keypad da seguinte forma:
    • Encontre o arquivo Arduino\libraries\Keypad\src\Keypad.cpp, vá até a linha 98, que se parece com isto: pin_mode(columnPins[c], INPUT);
    • Comente esta linha. Após a modificação, o código na linha 98 deve ficar assim: //pin_mode(columnPins[c], INPUT);

Código ESP8266

Código ESP8266 para Teclado 3x4

#include <Keypad.h> const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 3; // three columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); } }

Código ESP8266 para Teclado 4x4

#include <Keypad.h> const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 4; //four columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3', 'A'}, {'4','5','6', 'B'}, {'7','8','9', 'C'}, {'*','0','#', 'D'} }; byte pin_rows[ROW_NUM] = {D0, D1, D2, D3}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D4, D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), 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

Para começar com o ESP8266 na Arduino IDE, siga estes passos:

  • Veja o tutorial como configurar o ambiente para o ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes conforme mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Clique no ícone Libraries na barra à esquerda da Arduino IDE.
  • Pesquise por “keypad” e localize a biblioteca de teclado criada por Mark Stanley e Alexander Brevig.
  • Em seguida, clique no botão Install para concluir a instalação da biblioteca de teclado.
ESP8266 NodeMCU keypad library
  • Copie o código acima e abra-o na Arduino IDE.
  • Depois de aberto, clique no botão Upload para carregar o código no ESP8266.
  • Abra o Serial Monitor.
  • Pressione algumas teclas no teclado.
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
3 6 9 4 * #
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Teclado e Senha

Um uso comum de um teclado é a digitação de senhas. Normalmente designamos duas teclas específicas para essa finalidade:

  • Uma tecla para iniciar ou reiniciar a digitação da senha. Por exemplo, a tecla "*".
  • Uma tecla para encerrar a digitação da senha. Por exemplo, a tecla "#".

A senha será composta por uma string que inclui todas as outras teclas, exceto as duas teclas especiais.

Quando uma tecla é pressionada:

  • Se a tecla não for "*" nem "#", adicione a tecla à string da senha digitada pelo usuário.
  • Se a tecla for "#", compare a string digitada pelo usuário com as senhas predefinidas para decidir se a senha digitada está correta e, em seguida, apague a string da senha digitada pelo usuário.
  • Se a tecla for "*", apague a string da senha digitada pelo usuário.

Teclado - Código de Senha

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-keypad */ #include <Keypad.h> #define ROW_NUM 4 // 4 rows #define COLUMN_NUM 3 // 3 columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "1234"; // 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("password is correct"); // DO YOUR WORK HERE } else { Serial.println("password is incorrect, try again"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }

Passos Rápidos

  • Execute o código acima.
  • Abra o Serial Monitor.
  • Pressione as teclas "123456" e depois pressione "#".
  • Em seguida, pressione as teclas "1234" e depois pressione "#".
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
password is incorrect, try again password is correct
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E 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!