Teclado USB con ESP32

Buenas tardes!!

En estos días estoy intentando conectar un teclado USB a un ESP32, basándome en el siguiente vídeo:

https://www.youtube.com/watch?v=DaKKZcx7Inw

Tengo un lío con los cables que salen del PS2: uno verde, uno rojo, uno negro y otro blanco. Intuyo que:

Rojo = VCC
Negro = GND
Blanco = CLK
Verde = Data

Si no me equivoco con la asignación de los colores, ¿a qué pines del ESP32 he de conectar cada cable? El VCC y GND están claros, pero el verde y el blanco, no tengo muy claro dónde van. Según la hoja de datos, el pin 18 es para el CLK pero para el data no sé bien cuál usar, si el MOSI, el MISO, o ninguno de ellos.

El diagrama de pines es el siguiente: https://crisalctime.com/wp-content/uploads/2021/07/azdelivery-1024x766.jpg

He intentado con el código de ejemplo de la librería PS2Keyboard.h y para el pin del MISO:

/*  PS2Keyboard library, International Keyboard Layout Example
    http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html

    keyboard.begin() accepts an optional 3rd parameter to
    configure the PS2 keyboard layout.  Uncomment the line for
    your keyboard.  If it doesn't exist, you can create it in
    PS2Keyboard.cpp and email paul@pjrc.com to have it included
    in future versions of this library.
*/
   
#include <PS2Keyboard.h>

const int DataPin = 19;
const int IRQpin =  18;

PS2Keyboard keyboard;

void setup() {
  //keyboard.begin(DataPin, IRQpin, PS2Keymap_US);
  keyboard.begin(DataPin, IRQpin, PS2Keymap_German);
  //keyboard.begin(DataPin, IRQpin, PS2Keymap_French);
  Serial.begin(115200);
  Serial.println("International Keyboard Test:");
}

void loop() {
  if (keyboard.available()) {
    char c = keyboard.read();
    Serial.print(c);
  }
}

Pero no me ha dado ningún resultado.

Si me pueden ayudar, estaría eternamente agradecido. Un saludo!!

En teoría en el ESP32 debería funcionar en cualquier pin que elijas.
Por el lado del conector el 1 es Data, el 5 es Clk, el 4 es Vcc y el 3 es Gnd; los colores pueden ser cualquiera, no te guíes por ellos.
Este esquema es para un mouse pero es lo mismo que para un teclado, para que te sirva para ver el tema de los pines del conector PS2

Saludos

1 Like

Gracias por responder!! Tiraré cables directamente del adaptador según el esquema que me muestras. La duda sigue siendo a qué pines conecto el pin 1 (Data) y el 5 (Clk). ¿No tendrían que ir a algún GPIO concreto del ESP32?

Y otra cosa, en:

keyboard.begin(DataPin, IRQpin, PS2Keymap_German);

¿Qué variables serían DataPin e IRQpin?

Un saludo y mil gracias!! Lo probaré esta tarde.

Ojo.. no alimentes con el ESP32 el VCC del teclado!!!
Usa una fuente externa. Los Expressif ESP8266/ESP32 no estan pensados para suministrar varios mA.
Asi que usa GND CLK y DATA a pines del ESP32 y alimenta con 5V de fuente externa. Nada de usar el mismo conector del ESP32. Menos los 3.3V disponibles.

1 Like

Genial!! Lo tendré en cuenta. Mil gracias!!

En cuanto los pines de Data y CLK del SP2, ¿no tendría que conectarlos a pines GPIO concretos del ESP32?

Gacias!!

Tienes un error de concepto.
Una cosa es un teclado USB y otra un teclado PS2.
Este que mencionas es PS2 o sea, tiene una conexion con un CLOCK (Reloj) y datos ademas de GND y Power que supongo será 5V.

Ahora, no edites el titulo, déjalo a pesar del error pero tenlo en cuenta para tu proyecto.

1 Like

¿Leíste mi comentario de #2?

¿Leíste el código que subiste?

const int DataPin = 19;
const int IRQpin =  18;

// ... y luego

keyboard.begin(DataPin, IRQpin, PS2Keymap_German);

Ahí tienes definidos los pines 18 y 19 pero puedes usar el que quieras, el más importante sería el IRQpin pero afortunadamente el ESP32 acepta interrupciones hardware en todos los GPIO (si fuese por ejemplo un UNO, solo podrías usar el 2 o 3 para el clk).

1 Like

@Surbyte está bien el título porque el "proyecto" usa un teclado USB con adaptador PS2.
Saludos

1 Like

Perfecto!! Mi duda iba más con el tema de los pines del PS2, que no sé si sólo podrían ser leídos por unos GPIOs concretos. Mil gracias!!! Usaré cualquier pin, a ver cómo va.

Como dice @anon90500195, se usa un adaptador USB a PS2, ya que en tema de librerías es más sencillo manipular el PS2. Un saludo y gracias!

Perdón pero costaba tanto indicarlo en el título?
Lectura de teclado USB usando adaptador PS2 me resulta mas claro que lo que pusiste. Es un resumen del proyecto.
El título es el que guía a todo el mundo que querrá hacer algo similar a lo tuyo.

Okay, enfoquémosnos en la idea. Puedes usar cualquier GPIO salvo aquellos que tienen comportamientos especiales durante el arranque. Siempre revisa eso para no tener problemas aunque tienes tiempo de sobra en el arranque para incluso no prestar atención a lo que te comento. En otros casos si es importante.

1 Like

En realidad, lo que se pretende es controlar un teclado USB con el ESP32. El cómo viene ya en el vídeo que se adjunta en el primer post, en el cual me he basado. Perdona si no ha quedado claro.

Utilizaré cualquier GPIO entonces.

Un saludo! Y mil gracias!!!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.