Avatar
Teclado Arduino todo Alfabeto con I2C
Mar 28th, 2020 | by: ELECTRONOOBS | Views 1041
Views 1041
PARTE 1 - Lo que necesitamos

La lista es muy corta. Todo lo que necesitamos es la PCB, que en mi caso hice usando los servicios de JLCPCB, y luego el microcontrolador ATmega328, el cristal de 16Mhz, algunos condensadores y resistencias y un LED. Finalmente necesitamos 41 de esos botones suaves de silicona. Estoy usando estos botones porque son más fáciles de presionar y no hacen "clic". La salida de la PCB será una salida en serie, y para eso solo necesitamos algunos cables delgados. Para programar el tablero, use el programador FTDI. Ver todas las partes a continuación.

Necesitamos:
PARTE 2 - Esquemático

El esquema de la PCB es más que simple. Todos los botones están en forma de matriz con 10 columnas y 4 filas y veremos por qué más adelante. También tenemos un botón adicional conectado para la entrada de envío. El chip ATmega328p necesita su configuración básica con el cristal de 16MHz, la resistencia pullup y el condensador DTR de 100nF. Necesitamos algunas resistencias y condensadores más, el LED conectado a un pin digital y todos los pads para los puertos UART e i2c.

 
 

 

Schematic
PARTE 3 - Cómo funciona

Vea la animación a continuación. Primero, en el paso "1" conectamos todas las columnas y filas a los botones. A un lado de los botones conectamos las columnas y al otro las filas, en nuestro caso 10 columnas y 4 filas. El microcontrolador, en el paso "2" aplicará constantemente pulsos altos a las filas en una secuencia y lo hará muy rápido. Ahora, la magia estará en el paso "3". Si presiono cualquier botón, habrá un circuito cerrado entre la fila y la columna, en este caso entre la fila 2 y la columna 7. Entonces, como puede ver en el paso "4", cuando el pulso alto llega a la fila 2, ese alto el pulso ahora pasará a la columna 7 y con eso el microcontrolador podría detectarlo. El microcontrolador también sabe qué fila era alta en ese momento y ahora sabe qué columna de columna también es alta, y con estas dos informaciones, pudimos detectar qué botón fue presionado. Fácil...

 

Matriz de teclado Arduino como funciona el circuito
PARTE 4 - Montar la PCB

Soldar la PCB es muy fácil. Obtenga la placa y primero soldemos el chip ATMega328 con la configuración básica: el cristal de 16MHz, las resistencias y el condensador DTR. Ese condensador debe ser de 100nF. Agregue algunas resistencias y condensadores más, el LED y la electrónica están listos. Luego necesitamos agregar 41 botones. Los botones tienen exactamente el tamaño de los agujeros en la PCB. Tan solo inserte todos los botones y luego suelde cada almohadilla. El teclado esta listo.

 
Ahora suelde 5 cables al puerto UART inferior para 5V y GND y también para RX, TX y el pin DTR. Conecte el módulo FTDI a esos cables y ahora podríamos cargar nuestro código. Por lo tanto, vaya a continuación, descargue el código del teclado y cárguelo en el tablero. La placa funcionará a 115200 baudios por segundo.
 
 

 

PARTE 5 - Código

Primero tenemos que subir el código al TECLADO y luego tendremos algunos otros códigos de prueba pequeños para el otro Arduino. Descargue el código de abajo y cárguelo al Arduino. Asegúrate de instalar Adafruit_Keypad.h también, así que en el siguiente enlace podrás descargarlo e instalarlo.

 
En el código necesitamos definir la cantidad de filas y columnas, en este caso 4 y 10. Luego definimos la configuración de nuestro teclado, donde estará cada carácter relacionado con cada botón. Finalmente definimos los pines para las columnas y para las filas y eso es todo. La resolución se realiza mediante la interrupción de la biblioteca del teclado.
 
Para la librería: "Descargue el archivo .zip a continuación. Abra Arduino IDE y vaya a Sketch, incluya la biblioteca, agregue la biblioteca .zip y abra el archivo .zip que acaba de descargar. Ahora se debe instalar la biblioteca Adafruit_Keypad.h."

const byte ROWS = 4;  // rows
const byte COLS = 10; // columns
//define the symbols on the buttons of the keypads
char keys[ROWS][COLS] = {
  {'1','2','3','4','5','6','7','8','9','0'},
  {'q','w','e','r','t','y',


PARTE 6.1 - Código Prueba Recibir

hora que el teclado tiene el código cargado, enviará un carácter cada vez que presionemos cualquier botón. Para eso necesitamos hacer una prueba. Usaré una pantalla LCD con puerto i2c para imprimir los valores recibidos, pero también podría usar el monitor en serie. Para la pantalla LCD también necesitará la biblioteca de cristal líquido i2c, así que desde el siguiente enlace, descárguela también e instálela en el IDE de Arduino. Suba el código de prueba al Arduino y luego conecte el teclado a los pines Rx y Tx.No conecte el teclado mientras carga el códigoSin embargo, el código no se cargará ya que el chip FTDI también está utilizando los pines Tx y Rx. Presione los botones y vea el carácter recibido en la pantalla.

 
Descarga la librería i2c para el LCD aquí: https://electronoobs.com/eng_arduino_liq_crystal.php

if(Serial.available() > 0)
  {
    char RECEIVED = Serial.read();   
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.write(RECEIVED);
  }


PARTE 6.2 - Código Prueba Texto Completo

El esquema es el mismo. Pero ahora en el código almacenamos hasta 32 caracteres y los imprimimos en la pantalla LCD y cuando presionamos el botón enviar, reiniciamos la pantalla LCD e imprimimos "ENVIADO" en la pantalla. Este es otro ejemplo simple solo para probar el PCB para mayúsculas, caracteres especiales, etc.

 
Una vez más, para la librería i2c del LCD, aquí: https://electronoobs.com/eng_arduino_liq_crystal.php

if(Serial.available() > 0)
  {
    char RECEIVED = Serial.read();

    if(RECEIVED == '{')
    {
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("SENT");
      delay(1000);
    .
    .
    .


PARTE 7 - Tutorial VIDEO

Mira el video para obtener más información y las opciones que tiene con esta PCB. Podría colocar esto en mi futura tienda en línea. Qué piensas ? Comenta abajo y ayuda a la comunidad. Considera apoyarme en PATREON .

1 Comment

Login or Sign Up to post comments on this tutorial.