Construye un Coche Robot 4WD Controlado por IR con Arduino
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Kit módulo sensor IR receptor inalámbrico WINGONEER para Arduino | 1 |
| Driver de motor dual H-Bridge L298N SainSmart | 1 |
| Kit chasis coche robot 4WD | 1 |
| Arduino UNO | 1 |
Herramientas y máquinas necesarias
- Soldador (genérico)
Sobre el proyecto
Encontré el diseño original en Instructables y construí una versión del mismo. El original era un vehículo de orugas y este es 4WD. El ajuste al diseño original viene en la configuración del IR. El diseño original sufría de retroalimentación cuando los motores funcionaban, interfiriendo con el receptor IR. Los motores actuaban como generadores donde se encontraban los cables de tierra. Cambié los pines y asignaciones para el IR.
Ensambla la base del coche usando las instrucciones proporcionadas si usas el kit rover SAINSMART.

Receptor IR:
int receiver_pin = 4; // Conectar pin de salida 4 del controlador a IR receptor Y
int vcc = 5; // Conectar pin de salida 5 del controlador a IR receptor V
int gnd = 6; // Conectar pin de salida 6 del controlador a IR receptor G

Módulo driver de motor L298N:
// Motor A
int enA = 8;
int in1 = 12;
int in2 = 11;
// Motor B
int enB = 7;
int in3 = 10;
int in4 = 9;
GND del módulo L298N a GND del controlador

Módulo L298N a motores:
// Juego de motores A lado derecho
Conectar el lado "+" (Rojo) de los motores a Out 4
Conectar el lado "-" (Negro) de los motores a Out 3
// Juego de motores B lado izquierdo
Conectar el lado "+" (Rojo) de los motores a Out 2
Conectar el lado "-" (Negro) de los motores a Out 1
Conectar batería al módulo L298N "+" (Rojo) a VCC y "-" (Negro) a GND
Diagrama completo


Código
Control remoto IR para coche (C#)
#include <IRremote.h>
char command;
int receiver_pin = 4;
int vcc = 5;
int gnd = 6;
int statusled = 13;
IRrecv irrecv(receiver_pin);
decode_results results;
// Pines control motor
// Motor A
int enA = 8; int in1 = 12; int in2 = 11;
// Motor B
int enB = 7; int in3 = 10; int in4 = 9;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(statusled, OUTPUT);
digitalWrite(statusled, LOW);
pinMode(enA, OUTPUT); pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT); pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT); pinMode(in4, OUTPUT);
pinMode(vcc, OUTPUT); pinMode(gnd, OUTPUT);
digitalWrite(vcc, HIGH);
}
void loop() {
if (irrecv.decode(&results)) {
digitalWrite(statusled, LOW);
irrecv.resume();
if (results.value == 0xFF18E7) { // Botón 2 - Adelante
Serial.println("Button 2");
digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 100);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100);
} else if (results.value == 0xFF10EF) { // Botón 4 - Izquierda
Serial.println("Button 4");
digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 100);
digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enB, 100);
} else if (results.value == 0xFF30CF) { // Botón 1 - Girar derecha
Serial.println("Button Turn Right");
digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 100);
digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, 100);
} else if (results.value == 0xFF5AA5) { // Botón 6 - Girar izquierda
Serial.println("Button Turn Left");
digitalWrite(in1, LOW); digitalWrite(in2, LOW); analogWrite(enA, 100);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100);
} else if (results.value == 0xFF7A85) { // Botón 3 - Girar derecha (otro modo)
digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(enA, 100);
digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100);
} else if (results.value == 0xFF4AB5) { // Botón 8 - Atrás
Serial.println("Button 8");
digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(enA, 100);
digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, 100);
} else if (results.value == 0xFF38C7) { // Botón 5 - Parar
Serial.println("Button 5");
digitalWrite(in1, LOW); digitalWrite(in2, LOW); analogWrite(enA, 100);
digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enB, 100);
}
}
}
Esquemáticos
Proceso de manufactura
- Pastillas Anticonceptivas: Historia, Beneficios, Riesgos y Producción
- Construya un Mando Universal Profesional para Raspberry Pi con LIRC
- Sistema Automatizado de Llenado y Monitorización de Piscina
- Sistema de Monitorización Remota de Frecuencia Cardíaca con Alertas AWS IoT
- Controla tu Raspberry Pi con un Mando IR Reciclado: Apagado y Reinicio vía LIRC
- Circuitos de Control: Fundamentos, Aplicaciones y Mejores Prácticas
- Monitorización en la nube: Sistema de control remoto para gestión de activos en tiempo real
- 5 Beneficios clave del control remoto de producción para la industria moderna
- Control remoto de puente grúa: impulsa seguridad y eficiencia en tu almacén
- Vulnerabilidad en enteliBUS de Delta Controls: Control remoto de sistemas de edificios expuesto
- Constructores en C#: Tipos, ejemplos y patrones avanzados