Construir un robot con Arduino es uno de los proyectos más gratificantes en electrónica. El Arduino Uno actúa como el cerebro: recibe señales de sensores, las procesa y controla los motores. Esta guía te dará la lista completa de componentes y el código básico para comenzar.
Lista Completa de Componentes
| Componente | Para qué sirve |
|---|---|
| Arduino Uno R3 | El cerebro del robot, ejecuta el código |
| Driver L298N | Controla 2 motores DC (Arduino no puede alimentarlos directamente) |
| 2x Motores DC con Caja Reductora | Las ruedas motrices del robot |
| Chasis de acrílico o 3D | Estructura física del robot |
| Sensor KY-032 | Detecta obstáculos a 2-40cm |
| Batería 9V o pack 6xAA | Alimentación del sistema |
| Cables y protoboard | Conexiones del circuito |
¿Por qué Necesito el Driver L298N?
Este es el error más común de los principiantes: el Arduino NO puede alimentar motores DC directamente desde sus pines. Los pines del Arduino aguantan máximo 40mA, pero los motores DC consumen entre 200mA y 1A. Conectar un motor directamente quemará el microcontrolador.
El driver L298N actúa como intermediario: recibe señales de control de bajo voltaje del Arduino (5V, pocos mA) y entrega la corriente necesaria a los motores desde la batería. Puede controlar 2 motores DC independientemente, incluyendo dirección (adelante/atrás) y velocidad (via PWM).
Conexiones del Driver L298N con Arduino
| Pin L298N | Conectar a |
|---|---|
| IN1 | Pin 2 (Arduino) |
| IN2 | Pin 3 (Arduino) |
| IN3 | Pin 4 (Arduino) |
| IN4 | Pin 5 (Arduino) |
| ENA | Pin 9 PWM (velocidad motor A) |
| ENB | Pin 10 PWM (velocidad motor B) |
| 12V | Batería positivo (7-12V) |
| GND | Batería negativo + GND Arduino |
Código Básico: Movimiento y Esquiva Obstáculos
#include <NewPing.h>
// Pines del motor
const int IN1=2, IN2=3, IN3=4, IN4=5;
const int ENA=9, ENB=10;
// Sensor de obstáculos KY-032
const int SENSOR = 7;
void setup() {
pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT);
pinMode(SENSOR, INPUT);
}
void adelante(int velocidad) {
analogWrite(ENA, velocidad); analogWrite(ENB, velocidad);
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}
void girar_derecha() {
analogWrite(ENA, 180); analogWrite(ENB, 180);
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}
void detener() {
analogWrite(ENA, 0); analogWrite(ENB, 0);
}
void loop() {
int obstaculo = digitalRead(SENSOR);
if (obstaculo == LOW) { // KY-032 activo en LOW
detener();
delay(200);
girar_derecha();
delay(500);
} else {
adelante(200);
}
}
El Chasis: ¿Armado o 3D Impreso?
Para principiantes, recomendamos un chasis comercial de acrílico ya armado. Los chasis 3D impresos son atractivos pero agregan complejidad innecesaria cuando estás aprendiendo. Busca kits de chasis de 2 ruedas o 4 ruedas según tu presupuesto.
Mejoras para tu Robot
- Agregar sensores KY-033 para hacer que siga líneas
- Añadir control remoto con el receptor IR KY-022
- Incorporar el joystick KY-023 para control manual
- Migrar al ESP32 para control por WiFi o Bluetooth desde el teléfono
Encuentra todos los componentes para tu robot en Especificar.cl. Ver también: Proyectos con Arduino y Cómo Elegir Sensores.