PAWS — Guía de instalación, armado y calibración
PAWS — Guía de instalación, armado y calibración
Última actualización: 11 de agosto de 2026
This page is also available in English.
Qué es esto
PAWS es un robot educativo controlado por Bluetooth desde la app Android PAWS. Nosotros proveemos el firmware ya compilado (listo para flashear) para la placa ESP32.
Una vez flasheado, el ESP32 se anuncia por Bluetooth como PAWS-ESP32 y ya puedes emparejarlo y controlarlo desde la app.
Placa soportada: cualquier módulo genérico esp32dev (ESP32-WROOM-32 y compatibles), 4 MB de flash o más.
Descargar el firmware
⬇ Descargar paws-esp32-firmware.zip
Un solo archivo .zip que contiene:
| Archivo (dentro del .zip) | Offset de flasheo | Descripción |
|---|---|---|
paws-esp32.bin | 0x10000 | Firmware de PAWS — el único que normalmente necesitas |
bootloader.bin | 0x1000 | Bootloader de segunda etapa (solo si el flasheo simple falla) |
partitions.bin | 0x8000 | Tabla de particiones (solo si el flasheo simple falla) |
boot_app0.bin | 0xe000 | Selector de partición OTA (solo si el flasheo simple falla) |
Descomprime el .zip antes de flashear.
En la mayoría de los casos solo necesitas paws-esp32.bin. Los otros tres archivos son un respaldo, para el caso en que el flasheo simple no funcione.
Instalación — ESPHome Web (único método soportado)
Todo ocurre en el navegador, sin instalar nada. Necesitas Chrome o Edge en una computadora (WebSerial no funciona en Firefox, Safari, ni en celulares).
- Conecta el ESP32 a tu computadora por USB.
- Abre https://web.esphome.io/ en Chrome o Edge.
- Haz clic en CONNECT y selecciona el puerto serial del ESP32 en el diálogo del navegador.
- Haz clic en INSTALL y elige el archivo
paws-esp32.bin. - Espera a que termine la instalación (aparecerá una barra de progreso).
- Presiona el botón RESET (o EN) del ESP32 al finalizar.
Con esto ya deberías ver PAWS-ESP32 por Bluetooth.
Si el flasheo simple falla
Si después de flashear solo paws-esp32.bin la placa no arranca, se reinicia en bucle, o no aparece por Bluetooth, tu placa probablemente no trae un bootloader/tabla de particiones válidos. En ese caso repite el proceso en web.esphome.io pero cargando los 4 archivos en sus offsets exactos:
0x1000→bootloader.bin0x8000→partitions.bin0xe000→boot_app0.bin0x10000→paws-esp32.bin
Luego presiona RESET y vuelve a verificar.
Si el navegador no detecta el puerto, revisa que tengas instalado el driver USB-a-serial de tu placa (CP2102 o CH340, según el fabricante) — ver drivers de puerto serie más abajo.
Si se queda en
Connecting...o falla la conexión, mantén presionado el botón BOOT (a veces marcadoIO0) de la placa mientras inicia el flasheo, y suéltalo apenas empiece a escribir.
Driver USB-serial (si tu placa no aparece)
La mayoría de placas ESP32 usan uno de estos dos chips USB-a-serial. Si tu sistema operativo no reconoce el puerto al conectar la placa, instala el driver correspondiente:
- CP210x (Silicon Labs) — descargar driver
- CH340 / CH341 (WCH) — búscalo como “CH340 driver” para tu sistema operativo
En Linux, generalmente no necesitas instalar nada adicional: el driver ya está en el kernel.
Armar el robot (ESP32 + L298N + 2 motores)
La forma más sencilla de un PAWS es un chasis de dos ruedas con:
- Una placa ESP32 (
esp32dev). - Un driver de motores L298N.
- Dos motores DC (los típicos amarillos con caja reductora, 3–6 V).
- Una batería para los motores: 6–12 V. Un portapilas de 6 × AA (9 V) o un pack de 2 celdas Li-ion 18650 (7,4 V) funcionan bien.
- Una rueda loca (rueda boba) delante o detrás, para apoyar el chasis.
Regla de oro: todas las tierras — GND del ESP32, GND del L298N y el negativo de la batería — deben estar unidas. Sin GND común nada funciona de forma fiable, y es la causa número uno de robots que “a veces sí, a veces no”.
Cableado ESP32 → L298N
Estos son los pines por defecto que trae el firmware. Si los respetas, no tienes que configurar nada en la app.
| Señal L298N | Motor | Pin del ESP32 |
|---|---|---|
ENA | A (izquierdo) | GPIO 25 |
IN1 | A (izquierdo) | GPIO 26 |
IN2 | A (izquierdo) | GPIO 27 |
ENB | B (derecho) | GPIO 4 |
IN3 | B (derecho) | GPIO 16 |
IN4 | B (derecho) | GPIO 17 |
- Quita los jumpers de
ENAyENBdel L298N. Si los dejas puestos, los motores solo van a máxima velocidad y la regulación de velocidad de la app no hace nada. - Motor A va a las salidas
OUT1/OUT2del L298N; Motor B aOUT3/OUT4. Cada motor son dos cables, sin polaridad crítica: si uno gira al revés, basta con invertir sus dos cables (o cambiar el signo en la calibración, más abajo).
Si prefieres otro cableado, puedes cambiar los pines desde la app en Ajustes (se guardan en el robot y se aplican al reiniciarlo) — ver Usar la app: pines y calibración.
Alimentación
Esta es la parte donde más fácil se rompe algo. Dos reglas:
- Los motores nunca se alimentan desde el ESP32. Van siempre desde la batería, a través del L298N.
- La batería de motores va al L298N, no a la placa ESP32.
Conexiones de potencia:
| Desde | Hacia |
|---|---|
| + de la batería (6–12 V) | Borne +12V (o VCC) del L298N |
| − de la batería | Borne GND del L298N |
GND del L298N | GND del ESP32 |
Para alimentar el ESP32 tienes dos opciones:
- Lo más simple y seguro (recomendado para empezar): aliméntalo aparte por su puerto USB (un power bank pequeño sirve). El L298N solo mueve motores.
- Desde el L298N: con el jumper de 5 V puesto y una batería de 7–12 V, el L298N entrega 5 V por su borne
+5V. Lleva ese+5Val pinVINdel ESP32 (no al3V3). Con menos de 7 V el regulador no da los 5 V estables, y con más de 12 V se calienta de más.
No conectes nunca los 5 V del L298N al pin
3V3del ESP32: lo dañas.
Si al arrancar los motores el ESP32 se reinicia solo, la batería no da suficiente corriente o falta GND común. Prueba primero con el ESP32 alimentado por USB, aparte.
Orden de armado
- Monta los dos motores y la rueda loca en el chasis.
- Cablea los seis pines del ESP32 al L298N según la tabla, y las tierras.
- Conecta los motores a
OUT1/OUT2yOUT3/OUT4. - Conecta la batería al L298N (déjala apagada o desconectada hasta el final).
- Flashea el firmware siguiendo los pasos de arriba.
- Enciende: primero el ESP32, luego la batería de motores.
- Empareja
PAWS-ESP32por Bluetooth y calibra desde la app.
Prueba el robot con las ruedas en el aire la primera vez. Si un motor gira al revés, lo corriges invirtiendo sus cables o cambiando el signo de la velocidad en las Variables de la app.
Verificar que funcionó
- Desde tu celular, busca dispositivos Bluetooth cercanos: debe aparecer
PAWS-ESP32. Empareja y abre la app PAWS para continuar. - Opcionalmente, en web.esphome.io puedes hacer clic en LOGS después de conectar la placa para ver el arranque del firmware.
- Es normal ver un mensaje de
HEARTBEAT LOST -> STOPjusto después de arrancar — desaparece en cuanto la app se conecta.
Para el cableado de motores y otros periféricos, consulta la guía de conexión que se muestra dentro de la app.
Usar la app: pines y calibración
La app PAWS tiene dos ajustes distintos, y conviene no confundirlos:
| Ajuste | Dónde se edita | Dónde se guarda | Cuándo se aplica |
|---|---|---|---|
| Pines (GPIO) de cada periférico | Menú → Ajustes | En el robot (NVS del ESP32) | Solo después de Reiniciar el robot |
| Variables de movimiento (calibración) | Hat Variables del editor | En el celular | Al instante, en la siguiente ejecución |
1. Configurar los pines de los motores
Los pines viven en el robot, no en la app. Al conectarte, la app le pregunta al ESP32 qué periféricos tiene y con qué GPIO; el estado se muestra en Ajustes:
- Todavía no se le han pedido al robot — aún no ha respondido; usa Volver a preguntar al robot.
- Los pines mostrados son los que el robot usa ahora — todo en orden.
- Hay cambios sin enviar al robot — editaste, falta guardar.
- Guardado. Reinicia el robot para que se apliquen. — pulsa Reiniciar.
Cada periférico aparece con una etiqueta neutra tipo 0x21 · 0 (0x21 es la clase motor, y el número es el índice: 0x21 · 0 es el motor A y 0x21 · 1 el motor B). Los GPIO válidos van de 0 a 39; un pin fuera de rango o no utilizable como salida hace que el robot responda con error. La app avisa además cuando eliges un pin delicado (pines de strapping, que se leen al arrancar, o los del puerto serie, que te dejan sin consola de depuración).
Un pin sin configurar se muestra como —, que no es lo mismo que el GPIO 0.
2. Calibrar el movimiento (hat “Variables”)
En el editor de bloques, el programa cuelga del bloque inicial Variables (el hat con el logo del ESP32). Toca ese logo y se despliega el panel de calibración: una sección por cada pieza de movimiento — Adelante, Atrás, Izquierda, Derecha — cada una con tres valores:
| Variable | Qué es | Rango | Paso de los botones −/+ |
|---|---|---|---|
| Motor A | Velocidad del motor A, en porcentaje con signo (el signo es el sentido de giro) | −100 … 100 | 5 |
| Motor B | Velocidad del motor B, igual que A | −100 … 100 | 5 |
| Duración | Cuánto dura la maniobra, en milisegundos | 100 … 5000 ms | 100 |
Valores de fábrica (chasis de dos ruedas):
| Pieza | Motor A | Motor B | Duración |
|---|---|---|---|
| Adelante | 60 % | 60 % | 1000 ms |
| Atrás | −60 % | −60 % | 1000 ms |
| Izquierda | −50 % | 50 % | 500 ms |
| Derecha | 50 % | −50 % | 500 ms |
Fíjate en el patrón: para avanzar, ambos motores van al mismo signo; para girar, van en signos opuestos.
Cómo calibrar, paso a paso
- Pon el robot en el suelo, con espacio libre por delante, y conéctalo (el punto junto al logo del ESP32 debe estar verde).
- Arma un programa con una sola pieza Adelante y ejecútalo.
- Si se va de lado: baja en pasos de 5 % la velocidad del motor que tira más. Si se desvía a la derecha, el motor izquierdo empuja más; bájalo hasta que la trayectoria salga recta. No hace falta ninguna compensación aparte: la corrección es la variable.
- Si va hacia atrás cuando debería ir adelante: un motor está cableado al revés. Invierte el signo de esa velocidad (por ejemplo
60→−60). - Repite con Atrás, y luego con Izquierda y Derecha: ahí lo que se ajusta es la Duración, hasta que un giro quede en el ángulo que quieres (típicamente 90°).
- Ajusta la Duración de Adelante según la distancia que quieras por bloque.
Ajusta poco y prueba: la calibración es “prueba, ajusta un poco, repite”. Por eso el panel usa botones −/+ y no un deslizador — importa el número exacto.
Dónde queda guardada
La calibración se guarda en el celular, no en el robot: el ESP32 solo almacena el pinout. Sobrevive a cerrar la app, así que se calibra una vez y no en cada clase — pero si cambias de celular, o cambias el robot (motores, ruedas, superficie), toca recalibrar.
Soporte
Si el flasheo falla repetidamente o el dispositivo no aparece por Bluetooth después de un flasheo exitoso, contáctanos:
PAWS Email: [email protected]
Ver también: Política de Privacidad · Términos de Servicio