ESP8266 - Teclado

Este tutorial te enseña cómo usar ESP8266 con un teclado 3x4 y 4x4. En detalle, aprenderemos:

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Teclado 3x4 and 4x4 Kit
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del teclado numérico

Un teclado numérico es una colección de teclas que están organizadas en filas y columnas, y se conoce como una matriz. Cada botón se conoce como una tecla. Los teclados numéricos vienen en una variedad de estilos. Dos de los más comunes para proyectos de bricolaje son el teclado 3x4 (con 12 teclas) y el teclado 4x4 (con 16 teclas).

Pinout del teclado numérico

Los pines se clasifican en dos grupos: filas y columnas.

  • Un teclado numérico 3x4 tiene 7 pines: Cuatro pines para las filas (etiquetadas como R1, R2, R3 y R4) y cuatro pines para las columnas (etiquetadas como C1, C2 y C3).
  • Un teclado numérico 4x4 tiene 8 pines: Cuatro pines para las filas (etiquetadas como R1, R2, R3 y R4) y cuatro pines para las columnas (etiquetadas como C1, C2, C3 y C4).
Pinout del teclado numérico

Diagrama de Cableado

  • ESP8266 - diagrama de cableado del teclado 3x4
Diagrama de cableado del teclado ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

  • ESP8266 - diagrama de cableado del teclado 4x4
Diagrama de cableado del teclado ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

※ Nota:

Puedes cambiar los pines ESP8266 conectados a los pines del teclado. Sin embargo, debes evitar usar el pin D8 para el teclado. Si, no obstante, los pines ESP8266 no son suficientes, puedes usar el pin D8 para el teclado pero DEBES seguir las instrucciones a continuación:

  • NO utilices el pin D8 del ESP8266 para los pines de fila.
  • Al usar el pin D8 del ESP8266 para un pin de columna, DEBES modificar la biblioteca Keypad como sigue:
    • Localiza el archivo Arduino\libraries\Keypad\src\Keypad.cpp, ve a la línea 98, donde se ve así: pin_mode(columnPins[c], INPUT);
    • Comenta esta línea. Después de la modificación, el código en la línea 98 debe verse así: //pin_mode(columnPins[c], INPUT);

Código ESP8266

Código ESP8266 para teclado numérico 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 numérico 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); } }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en el IDE de Arduino si es la primera vez que usas ESP8266.
  • Conecta los componentes tal como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre el IDE de Arduino en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Haz clic en el icono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “keypad” y localiza la biblioteca keypad creada por Mark Stanley y Alexander Brevig.
  • Luego, haz clic en el botón Instalar para completar la instalación de la biblioteca keypad.
Biblioteca de teclado para ESP8266 NodeMCU
  • Copie el código anterior y ábralo en el IDE de Arduino.
  • Una vez abierto, haga clic en el botón Subir para subir el código al ESP8266.
  • Abra el Monitor Serie.
  • Presione algunas teclas en el teclado numérico.
  • Verifique el Monitor Serie para ver el resultado.
COM6
Send
3 6 9 4 * #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Teclado numérico y contraseña

Un uso común de un teclado numérico es para ingresar contraseñas. Normalmente designamos dos teclas específicas para este propósito:

  • Una tecla para iniciar o reiniciar el ingreso de la contraseña. Por ejemplo, la tecla '*'.
  • Una tecla para terminar el ingreso de la contraseña. Por ejemplo, la tecla '#'.

La contraseña consistirá en una cadena que incluye todas las demás claves, excepto dos claves especiales específicas.

Cuando se presiona una tecla:

  • Si la tecla no es '*' ni '#', añade la tecla a la cadena de contraseña introducida por el usuario.
  • Si la tecla es '#', compara la cadena de entrada del usuario con las contraseñas predefinidas para decidir si la contraseña introducida es correcta, y luego borra la cadena de contraseña introducida por el usuario.
  • Si la tecla es '*', borra la cadena de contraseña introducida por el usuario.

Teclado numérico - Código de contraseña

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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 } } }

Pasos R\u00e1pidos

  • Ejecuta el código anterior.
  • Abre el Monitor Serial.
  • Pulsa las teclas '123456' y luego pulsa '#'.
  • Después, pulsa las teclas '1234' y luego pulsa '#'.
  • Revisa el resultado en el Monitor Serial.
COM6
Send
password is incorrect, try again password is correct
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!