Cómo reciclar un receptor infrarrojo rescatado de un viejo equipo y usarlo con un ESP32


¿Tienes un mando a distancia y un receptor de infrarrojos rescatado de algún aparato viejo, pero no sabes cómo conectarlo al ESP32? No te preocupes: aunque no se vea el modelo o fabricante, es posible identificar los pines con un poco de observación y unas mediciones básicas. Solo eso sí: no conectes nada al azar o podrías quemarlo. Vamos paso a paso.

1. Empezar con una suposición razonable

En la mayoría de receptores IR tipo TSOP de 3 pines, mirando la cápsula de frente (el lado plano hacia ti y las patillas hacia abajo), el orden más común es:

  • Izquierda: OUT (señal)
  • Centro: GND (masa)
  • Derecha: VCC (alimentación, normalmente 5 V o 3,3 V)

No obstante, hay versiones que cambian este orden, así que tómalo solo como hipótesis inicial, no como regla fija.

2. Identificar primero la masa (GND)

Es el paso más seguro. Si el receptor tiene carcasa metálica, muchas veces está unida eléctricamente al pin de masa. También puedes comprobarlo con un multímetro en modo continuidad: si un pin tiene conexión directa al negativo del conector de alimentación, ése es tu GND. Cuando lo tengas localizado, márcalo para no confundirlo después.

3. Determinar cuál es VCC y cuál es la salida

Con GND ya identificado, quedan dos pines por probar. Usa una fuente regulada con limitador de corriente (por ejemplo 5 V y 20 mA). Conecta masa al pin central y selecciona uno de los otros dos como VCC. Añade una resistencia en serie de unos 100–220 Ω por seguridad.

Mide el tercer pin respecto a GND:

  • Si en reposo ves algo cercano a VCC (por ejemplo 4–5 V) que cae momentáneamente a 0 V cuando apuntas un mando IR y pulsas botones, ese pin es la salida (OUT).
  • Si no pasa nada, cambia el pin de VCC al otro extremo y repite.

Estos receptores suelen tener salida activa en bajo, es decir, la salida está “en alto” con pull‑up y baja cuando detecta una señal IR.

4. Algunas pistas visuales

Aunque no veas el modelo, ciertos detalles ayudan:

  • El lado plano del encapsulado suele marcar la orientación y el pin 1.
  • Muchos modelos (TSOP1738, TSOP4838, etc.) comparten el patrón OUT–GND–VCC.

Comparar tu receptor con imágenes puede aclararte mucho.

5. Montaje de prueba visual

Si quieres confirmar el pinout de forma sencilla, monta un pequeño circuito: VCC, GND y un LED con resistencia (1 kΩ) conectado a la probable salida. Si el LED parpadea o se enciende al pulsar un botón del mando, habrás identificado correctamente la salida.

Caso práctico: comprobando con resistencias

Supón que ya has identificado que el pin central es GND (porque está unido a la carcasa) y mides los otros dos con un comprobador de componentes o un polímetro en escala de ohmios:

  • Un pin da unos 35 kΩ en ambos sentidos → comportamiento casi simétrico, típico de la salida (OUT).
  • El otro muestra 5 kΩ en un sentido e infinito en el otro → comportamiento asimétrico, típico del pin de VCC, por las protecciones internas contra polaridad invertida.

Así, mirando la cápsula de frente (lado plano hacia ti, patillas hacia abajo):

PosiciónFunción
IzquierdaOUT (salida)
CentroGND (masa)
DerechaVCC (3–5 V)

Verificación final

Conecta VCC (derecha) a 5 V o 3,3 V y GND (centro) a masa.
Pon una resistencia de 10 kΩ entre VCC y OUT (izquierda) como pull‑up.
Mide el pin de salida con un multímetro:

  • En reposo: tensión cercana a VCC.
  • Al recibir señal del mando: caídas rápidas o parpadeos de voltaje.

Si todo coincide y el consumo es bajo (0,5–5 mA), ¡ya has identificado correctamente tu receptor y puedes usarlo directamente con un pin digital del ESP32!

Prueba final con código

Una vez tenemos el montaje , lo ideal es hacer la prueba con nuestro microcontrolador. En este caso concreto usaremos un ESP32, pero el siguiente código debería funcionar con caquier variante Arduino ya que se usa una librería genérica.

Respecto al mando a emplear podemos usar cualquier mando de algun equipo que ya no usemos y tengamos olvidado. Es fundamental comprobar con una cámara que el diodo de infrarrojo del mando emite luz infraroja al pulsar cualquier botón del mando.

Bien, una vez montado el receptor de infrarojos con la toma de GND al pin central , el terminal de la izquierda a un GPIO ( en nuestro caso C23) y el terminal de la derecha a 3.3v , es momento de probar su salida , para lo cual podemos usar el siguiente código:

#include <IRremote.hpp>
IR_PIN 23
uint32_t ultimoCodigo = 0;
unsigned long ultimoTiempo = 0;
void setup() {
Serial.begin(115200);
IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);
Serial.println("✅ IR ANTI-RUIDO FINAL - Pulsa MANDO TV");
}
void loop() {
if (IrReceiver.decode()) {
uint32_t codigo = IrReceiver.decodedIRData.decodedRawData;
uint8_t bits = IrReceiver.decodedIRData.numberOfBits;
// ANTI-RUIDO: 30+ bits, código nuevo
if (bits >= 30 && codigo != 0 &&
(codigo != ultimoCodigo || millis() - ultimoTiempo > 400)) {
Serial.print("🎮 0x");
Serial.print(codigo, HEX);
Serial.print(" (");
Serial.print(bits);
Serial.println(" bits)");
ultimoCodigo = codigo;
ultimoTiempo = millis();
}
IrReceiver.resume();
}
delay(150);
}
//ejemplo de energy system
//play 0xFF00BF00 (32 bits)
//ch- 0xFE01BF00 (32 bits)
//ch+ 0xFD02BF00 (32 bits)

Obviamente si «pasa esta prueba», podemos usar librerías mas específicas según el microcontrolador porque existen librerías especificas para ESP8266 o ESP32.

Algunos de los receptores mas habituales en electrónica de consumo

Por el comportamiento de detectar 38 kHz, ruido ambiental, pinout OUT-GND-VCC, los  receptores TSOP son lo mas estándar de Vishay.

Modelos exactos (o equivalentes)

TIPOSModelo probableEspecificaciones 
tipo 1TSOP4838 o TSOP173838 kHz, 2.7-5.5V, OUT-GND-VCC 
tipo 2TSOP4838TT1 o VS1838BIgual, encapsulado plano negro típico AliExpress 

Ambos son idénticos funcionalmente:

  • Frecuencia: 38 kHz (estándar mandos TV/DVD).
  • Pinout: 1=OUT, 2=GND, 3=VCC (frontal ventana hacia ti).
  • Salida: Baja al detectar (activo LOW).
  • Sensibilidad: 10-15m con buen mando.

Datasheet recomendado

Descarga TSOP48xx Vishay:

  • Confirma tu pinout exacto (figura 1).
  • Rangos voltaje/temperatura.
  • Curvas sensibilidad.

Equivalentes genéricos (AliExpress/Amazon)

  • TSOP1738 / TSOP1838: Mismo pinout, 38 kHz.
  • VS1838B: Clon chino idéntico, 0,20€ unidad.
  • HX1838: Módulo con resistencia incluida (no suelto).

Conexión rápida de una pantalla OLED a un ESP32


Conectar una pantalla TFT pequeña a un ESP32 parece, sobre el papel, una tarea sencilla: cuatro cables SPI, una librería y listo. La realidad, como suele pasar en electrónica, es bastante distinta. En este artículo quiero contar el proceso completo, incluyendo los errores, las dudas y la solución final estable, porque estoy seguro de que le ahorrará tiempo a más de uno.

La pantalla en cuestión es una TFT IPS de 0,96 pulgadas, resolución 80×160, (exactamente este modelo https://amzn.to/4p0DjKF ) basada en el controlador ST7735S, muy similar (y compatible) con la conocida Adafruit Mini TFT 0.96″ 160×80. El microcontrolador es un ESP32 DevKit con módulo ESP-WROOM-32.

1. El hardware de partida

El montaje inicial estaba compuesto por:

  • ESP32 DevKit (ESP-WROOM-32)–> comprado en Amazon por unos 11.99€
  • Pantalla TFT IPS 0,96” 80×160 SPI (ST7735S)–>comprada en Amazon por unos 6.99€
  • Comunicación SPI
  • Alimentación desde el propio ESP32

Un punto importante: aunque el módulo TFT permite alimentación a 5 V porque incorpora un regulador en la propia placa, finalmente decidí alimentarlo a 3,3 V directamente desde el ESP32. Es más limpio, más seguro y suficiente para un funcionamiento correcto.

2. Primer obstáculo: el ESP32 no programaba

Antes incluso de ver algo en pantalla, apareció el primer problema serio:el ESP32 no se dejaba programar. El Arduino IDE devolvía errores del tipo:

Failed to connect / no serial data received / exit status 2

En Windows, el chip CP2102 aparecía con el clásico triángulo amarillo en el Administrador de dispositivos. La solución fue sencilla, pero nada obvia para quien empieza con un PC sin todo bien configurado:

  • Instalar el driver oficial CP210x USB-to-UART de Silicon Labs
  • Seleccionar el puerto COM correcto en el Arduino IDE
  • Bajar la velocidad de carga a 115200 baudios
  • Desconectar cualquier periférico hasta conseguir un programa mínimo estable (un Blink)

Una vez superado esto, el ESP32 empezó a comportarse como debía.

3. Pantalla encendida… pero en negro

El siguiente síntoma fue frustrante: la pantalla encendía la retroiluminación, pero no mostraba absolutamente nada.

El primer intento fue con la popular librería TFT_eSPI, que suele funcionar muy bien con ESP32. Sin embargo, aquí empezaron los problemas:

  • El archivo User_Setup_Select.h estaba prácticamente todo comentado
  • No había un controlador ST7735 correctamente definido
  • Los pines SPI no coincidían con los que estaba usando

Incluso después de configurar explícitamente ST7735 y definir pines personalizados (MOSI, SCLK, CS, DC, RST), ningún ejemplo funcionaba, ni siquiera los más básicos.

4. ¿La habré dañado alimentándola a 5 V?

En ese punto surgió la duda clásica:“¿Habré quemado la pantalla?”

Investigando el modelo exacto, encontré que este tipo de módulos incluye un regulador de tensión, exactamente igual que los de Adafruit, diseñados para:

  • VCC = 5 V
  • Lógica SPI a 3,3 V

Conclusión: la probabilidad de daño era baja. El problema no era eléctrico, sino de driver y configuración.

5. El verdadero lío: los buses SPI del ESP32

Aquí estaba una de las claves del problema.

El ESP32 dispone de dos buses SPI por hardware:

  • VSPI (por defecto):
    • SCK = GPIO18
    • MOSI = GPIO23
    • MISO = GPIO19
  • HSPI (alternativo):
    • SCK = GPIO14
    • MOSI = GPIO13
    • MISO = GPIO12 / 19 (configurable)

Yo ya tenía un lector de tarjeta SD funcionando en VSPI, y no quería tocarlo. Intentar colgar la TFT del mismo bus solo complicaba la configuración.

La solución fue clara: 👉 dedicar HSPI exclusivamente a la pantalla TFT.

6. Cambio de estrategia: librerías de Adafruit

La pista definitiva llegó revisando una reseña del propio módulo TFT, donde alguien lo hacía funcionar como si fuera una Adafruit Mini TFT 0.96″ 160×80.

Eso implicaba dos cosas importantes:

  • Usar las librerías:
    • Adafruit_GFX
    • Adafruit_ST7735
  • Inicializar la pantalla con: tft.initR(INITR_MINI160x80);

Este detalle es crítico: no todas las pantallas ST7735 se inicializan igual.

Tras instalar ambas librerías desde el gestor del Arduino IDE, todo empezó a encajar.

7. Conexión definitiva de la pantalla al ESP32

Separando claramente los buses SPI, el esquema final quedó así:

SPI

  • VSPI → Tarjeta SD
  • HSPI → Pantalla TFT

Conexiones TFT → ESP32

  • GND → GND
  • VCC → 3V3
  • SCL (SCK) → GPIO14
  • SDA (MOSI) → GPIO13
  • CS → GPIO26
  • DC → GPIO27
  • RES → GPIO12
  • BLK → 3V3 (retroiluminación permanente)

De este modo, una TFT y un futuro lector/grabador de SD pueden funcionar simultáneamente sin interferencias.

8. Código final que funciona (por fin)

Una prueba basica una vez instaladas desde el propio IDE de Arduino las librerías de Adafruit (Adafruit_GFX.h y Adafruit_ST7735) es el siguiente código funcional:

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

#define TFT_CS   26
#define TFT_DC   27
#define TFT_RST  12

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  // Usar HSPI con 14 (SCK) y 13 (MOSI)
  SPI.begin(14, 19, 13);  // SCK=14, MISO=19 (no usado), MOSI=13

  tft.initR(INITR_MINI160x80);  // 0.96" 160x80
  tft.setRotation(3);

  tft.fillScreen(ST77XX_RED);
  delay(1000);
  tft.fillScreen(ST77XX_GREEN);
  delay(1000);
  tft.fillScreen(ST77XX_BLUE);
  delay(1000);
  tft.fillScreen(ST77XX_BLACK);
  tft.setTextColor(ST77XX_WHITE);
  tft.setCursor(0, 0);
  tft.println("Hola");
}

void loop() {}

!Funciona !, ya se ven colores al prinicpio a pantalla completa y al final de la secuencia un texto, pero como inconveniente del código anterior es que el texto que se muestra es demasiado pequeño para poderse leer.

Esta claro que el codigo anterior se puede mejorar. Este es el sketch de prueba definitivo, limpio y funcional:

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

#define TFT_CS   26
#define TFT_DC   27
#define TFT_RST  12

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  // HSPI: SCK=14, MISO=19, MOSI=13
  SPI.begin(14, 19, 13);

  tft.initR(INITR_MINI160x80);
  tft.setRotation(3);
  tft.fillScreen(ST77XX_BLACK);
  tft.setTextSize(2);

  tft.setTextColor(ST77XX_RED, ST77XX_BLACK);
  tft.setCursor(5, 10);
  tft.print("0123456789");

  tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
  tft.setCursor(5, 35);
  tft.print("0123456789");

  tft.setTextColor(ST77XX_BLUE, ST77XX_BLACK);
  tft.setCursor(5, 60);
  tft.print("0123456789");
}

void loop() {
}

El resultado: imagen estable, colores correctos y orientación perfecta.

9. Conclusiones importantes

Si estás intentando conectar una pantalla TFT pequeña a un ESP32, quédate con estas ideas clave:

  • El ESP32 tiene dos buses SPI: aprovéchalos
  • No todas las pantallas ST7735 usan la misma inicialización
  • La librería Adafruit_ST7735 es a veces más fiable que TFT_eSPI
  • Que la pantalla se ilumine no significa que esté bien configurada
  • Alimentar a 3,3 V suele ser la opción más segura

En el próximo proyecto, esta TFT ya no será un problema… pero este “viaje” merecía ser contado.