Construcción y Programación de un Robot Limpiador Autónomo con ESP32
Este tutorial práctico detalla el proceso completo para crear un robot de limpieza autónomo. Aprenderás a integrar sensores, motores DC, lógica de navegación básica y código en C++ con ESP32.
Introducción al Proyecto de Robótica de Limpieza 🧹
La robótica doméstica ha evolucionado enormemente en los últimos años, pasando de ser una curiosidad tecnológica a convertirse en un electrodoméstico indispensable. En este tutorial, abordaremos el diseño, ensamblaje y programación de un robot limpiador autónomo utilizando el potente y económico microcontrolador ESP32.
Este proyecto es ideal para entusiastas que desean dar el salto de los circuitos básicos a sistemas robóticos móviles con capacidad de toma de decisiones autónomas en entornos cerrados.
Materiales y Componentes Necesarios 🛠️
Para construir nuestro robot limpiador autónomo, necesitaremos reunir una serie de componentes electrónicos y mecánicos específicos. La siguiente tabla detalla la lista completa de materiales:
| Componente | Cantidad | Descripción | Propósito |
|---|---|---|---|
| --- | --- | --- | --- |
| ESP32 NodeMCU | 1 | Microcontrolador con Wi-Fi/Bluetooth | Cerebro del robot |
| Chasis 2WD para Robot | 1 | Base acrílica con 2 motores DC y ruedas | Estructura móvil |
| --- | --- | --- | --- |
| Driver L298N | 1 | Controlador de motores doble puente H | Control de velocidad y giro |
| Sensor Ultrasónico HC-SR04 | 1 | Sensor de distancia por ultrasonidos | Detección de obstáculos |
| --- | --- | --- | --- |
| Servomotor SG90 | 1 | Micro servo para rotar el sensor | Exploración lateral |
| Batería 18650 x2 | 1 soporte | Alimentación de 7.4V - 8.4V | Energía portátil |
| --- | --- | --- | --- |
| Mini bomba y manguera | Opcional | Sistema de rociado de agua básico | Función de fregado |
| Cables Dupont y Protoboard | Varios | Conexiones eléctricas | Cableado |
Arquitectura del Sistema Robótico 🧠
El sistema se divide en tres capas principales: la capa de percepción (sensores), la capa de control (ESP32) y la capa de actuación (motores y actuadores).
La lógica general consiste en que el robot avanza en línea recta mientras el sensor ultrasónico montado sobre el servomotor escanea continuamente el entorno en busca de obstáculos. Si detecta una pared o mueble a menos de 20 centímetros, se detiene, retrocede ligeramente, gira en una dirección aleatoria o predeterminada y continúa su marcha.
Ensamblaje Mecánico y Conexiones Eléctricas ⚙️
El montaje físico requiere paciencia y orden para evitar cortocircuitos debido a las vibraciones del movimiento.
Pasos para el Montaje:
Esquema de Conexiones del ESP32:
- ENA / ENB (L298N): Conectados a pines PWM del ESP32 para control de velocidad.
- IN1, IN2, IN3, IN4: Conectados a pines digitales del ESP32 para dirección de motores.
- Trigger (HC-SR04): Pin digital
GPIO 5. - Echo (HC-SR04): Pin digital
GPIO 18. - Control Servo SG90: Pin PWM
GPIO 19.
Programación del ESP32 💻
A continuación, presentamos el código base en C++ utilizando el entorno de Arduino IDE. Este programa implementa la lectura del sensor ultrasónico, el movimiento básico de los motores y una rutina simple de evitación de obstáculos.
#include <Servo.h>
// Definición de pines para el Driver L298N
const int enA = 13;
const int in1 = 12;
const int in2 = 14;
const int in3 = 27;
const int in4 = 26;
const int enB = 25;
// Definición de pines para el Sensor Ultrasónico
const int trigPin = 5;
const int echoPin = 18;
// Objeto Servo
Servo scannerServo;
void setup() {
Serial.begin(115200);
// Configurar pines de motores como salida
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// Configurar pines del sensor ultrasónico
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inicializar servomotor
scannerServo.attach(19);
scannerServo.write(90); // Posición frontal
// Velocidad inicial de los motores (0 - 255)
analogWrite(enA, 200);
analogWrite(enB, 200);
}
long medirDistancia() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duracion = pulseIn(echoPin, HIGH);
long distancia = duracion * 0.034 / 2;
return distancia;
}
void moverAdelante() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void detener() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void girarDerecha() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void loop() {
long distanciaActual = medirDistancia();
Serial.print("Distancia: ");
Serial.println(distanciaActual);
if (distanciaActual < 20 && distanciaActual > 0) {
detener();
delay(500);
girarDerecha();
delay(400);
} else {
moverAdelante();
}
delay(100);
}
Calibración y Pruebas en Terreno Real 🎯
Una vez cargado el código en el ESP32, es momento de realizar las pruebas de campo. Coloca el robot sobre una superficie lisa y sin desniveles pronunciados.
in1 e in2 o in3 e in4 en el código.Niveles de Dificultad del Proyecto:
- Nivel de Dificultad: Intermedio
- Progreso general de implementación:
Preguntas Frecuentes (FAQ) ❓
¿Puedo controlar este robot limpiador desde mi smartphone?
Sí, gracias a que el ESP32 cuenta con conectividad Wi-Fi integrada, puedes programar un servidor web local en el microcontrolador o utilizar protocolos como MQTT para enviar comandos de movimiento y limpieza desde tu teléfono móvil.¿Cuánto dura la batería con dos celdas 18650?
Con un uso continuo y dependiendo de la corriente consumida por los motores DC y la bomba de agua, la autonomía suele rondar entre los 45 y 60 minutos antes de requerir una recarga.Conclusión y Próximos Pasos ✨
¡Felicidades! Has construido con éxito la base de un robot limpiador autónomo utilizando tecnologías accesibles y potentes como el ESP32. A partir de este punto, puedes expandir las capacidades de tu robot integrando sistemas de mapeo por LiDAR, sensores de suciedad o algoritmos de navegación más avanzados como comportamientos basados en boids o lógica difusa.
Tutoriales relacionados
- Control Robótico con ROS: Construyendo un Sistema de Navegación Simple para Robots Móvilesintermediate25 min
- Construcción y Programación de un Robot Hexápodo con Cinemática Inversaadvanced12 min
- Robots Escaladores: Diseño y Construcción de un Robot Móvil que Trepa Superficies Verticalesintermediate18 min
- Robots de Enjambre: Coordinación y Comportamiento Colectivo para Exploración swarm-bots 🐜intermediate18 min
- Robótica Colaborativa: Integrando COBOTS en Entornos Industriales 🤖intermediate18 min
Comentarios (0)
Aún no hay comentarios. ¡Sé el primero!