Lección 21/31: Uso del control remoto infrarrojo con Arduino | SunFounder Robojax
Introducción
En esta lección, exploramos el fascinante mundo de la comunicación por infrarrojos (IR) construyendo un proyecto que decodifica señales de un control remoto estándar usando un Arduino. Este proyecto te permite detectar qué botón se presiona en un control remoto IR y activar acciones en consecuencia, como encender un zumbador. La capacidad de interactuar con controles remotos IR abre una amplia gama de aplicaciones prácticas, desde la automatización del hogar hasta sistemas de control personalizados.
Aquí tienes algunas ideas inspiradoras de lo que puedes construir con esta tecnología:
- Reemplazo de control remoto universal: Crea un control personalizado para tu TV, sistema de audio u otros dispositivos controlados por IR.
- Automatización del hogar: Controla luces, ventiladores u otros electrodomésticos presionando un botón en un control remoto estándar.
- Proyectos interactivos: Construye un sistema de seguridad que active una alarma cuando se presiona un botón específico.
- Control de robótica: Usa un control remoto IR para controlar de forma inalámbrica el movimiento y las acciones de un robot.
- Ayudas de accesibilidad: Desarrolla un control remoto simple con botones grandes para personas con movilidad limitada.
Hardware y componentes
Este proyecto se basa en unos pocos componentes simples, todos los cuales suelen incluirse en kits de inicio como el kit SunFounder 3 en 1. Necesitarás:
- Una placa Arduino (por ejemplo, Uno)
- Un módulo receptor IR (por ejemplo, TSOP38238 o similar)
- Un control remoto IR estándar (con una batería CR2025)
- Un zumbador pasivo
- Cables de conexión y una placa de pruebas
Guía de conexiones
Aquí está el diagrama de conexiones simple para este proyecto. El receptor IR es el componente clave. Cuando miras la superficie curva del receptor, la distribución de pines es la siguiente:
- Pin derecho: Conéctalo al pin de 5V del Arduino.
- Pin del medio: Conéctalo al pin GND del Arduino.
- Pin izquierdo (Señal): Conéctalo al pin digital 11 del Arduino.
Adicionalmente, para la parte de acción del proyecto, conecta el cable positivo (más largo) del zumbador al pin digital 2 y el otro cable a GND.
Explicación del código
Este proyecto depende de la librería IRremote para manejar la compleja tarea de decodificar las señales infrarrojas. El código está estructurado para primero aprender los códigos específicos de tu control remoto y luego usarlos para activar acciones. Vamos a desglosar las partes configurables por el usuario.
Primero, definimos el pin al que está conectado el cable de señal del receptor IR. Esta es una configuración crucial que debes hacer coincidir con tu conexión física.
const int IR_RECEIVE_PIN = 11; // Define el número de pin para el sensor IR
En la función setup(), el receptor IR se inicializa usando el pin que acabamos de definir. Esto le indica a la librería que comience a escuchar señales en ese pin.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Inicia el receptor IR
El núcleo de la lógica de acción está en el loop(). El código verifica si se ha presionado una tecla y la decodifica. La función decodeKeyValue() es una función personalizada que traduce el código hexadecimal crudo del control remoto a una cadena legible como "POWER" o "MUTE". Esta es la parte que modificarás para que coincida con tu control remoto específico. El código de ejemplo define un buzzerPin y lo enciende solo cuando se presiona el botón "POWER".
const int buzzerPin = 2; // Define el pin para el zumbador
// ... dentro del loop()
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // Enciende el zumbador
} else {
digitalWrite(buzzerPin, LOW); // Apaga el zumbador
}
Cómo usar: La función decodeKeyValue() es la clave para personalizar este proyecto. Para usarla con tu propio control remoto, primero debes ejecutar el código con el Monitor Serial abierto. Presiona cada botón de tu control remoto y anota el valor hexadecimal que se imprime para cada uno. Luego, actualiza la declaración switch en la función decodeKeyValue() para mapear esos valores a nombres significativos. Puedes usar estos nombres en tus declaraciones if para activar diferentes acciones, tal como hace el ejemplo con el botón "POWER".
Proyecto en vivo y demostración
Una vez que el código esté cargado, abre el Monitor Serial a una velocidad de baudios de 9600. Apunta tu control remoto al receptor IR y presiona un botón. El Monitor Serial mostrará el nombre de la tecla correspondiente (por ejemplo, "POWER", "MUTE"). Para ver la acción en efecto, presiona el botón "POWER". Escucharás que el zumbador se enciende. Presionar cualquier otro botón, como "MUTE", apagará el zumbador. Esto demuestra un concepto simple pero poderoso: usar un control remoto para activar salidas digitales en tu Arduino.
Capítulos
- [00:00] Introducción al Control Remoto por Infrarrojos con Arduino
- [01:25] Descripción general del Receptor y Transmisor IR
- [02:24] Comprensión del Módulo Receptor IR y el Cableado
- [03:31] Instalación de la Biblioteca IRremote
- [04:22] Apertura y Explicación del Código de Decodificación
- [07:29] Carga del Código y Prueba de las Teclas del Control Remoto
- [08:41] Añadiendo una Acción: Control de un Zumbador
- [10:37] Vista Previa de los Próximos Proyectos IR
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY
*/
#include <IRremote.h>
const int IR_RECEIVE_PIN = 11; // Define the pin number for the IR Sensor
String lastDecodedValue = ""; // Variable to store the last decoded value
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the IR receiver
}
void loop() {
if (IrReceiver.decode()) {
String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
if (decodedValue != "ERROR") {
Serial.println(decodedValue);
delay(100);
}
IrReceiver.resume(); // Enable receiving of the next value
}
}
String decodeKeyValue(long result)
{
switch(result){
case 0x16:
return "0";
case 0xC:
return "1";
case 0x18:
return "2";
case 0x5E:
return "3";
case 0x8:
return "4";
case 0x1C:
return "5";
case 0x5A:
return "6";
case 0x42:
return "7";
case 0x52:
return "8";
case 0x4A:
return "9";
case 0x9:
return "+";
case 0x15:
return "-";
case 0x7:
return "EQ";
case 0xD:
return "U/SD";
case 0x19:
return "CYCLE";
case 0x44:
return "PLAY/PAUSE";
case 0x43:
return "FORWARD";
case 0x40:
return "BACKWARD";
case 0x45:
return "POWER";
case 0x47:
return "MUTE";
case 0x46:
return "MODE";
case 0x0:
return "ERROR";
default :
return "ERROR";
}
}
Common Course Links
Common Course Files
Cosas que podrías necesitar
-
Amazonas
-
eBay
Recursos y referencias
Aún no hay recursos.
Archivos📁
Bibliotecas de Arduino (zip)
-
Código fuente del kit de aprendizaje para autos inteligentes 3 en 1 de SunFounder
3in1-kit-main-v2.zip12.80 MB