ESP32 - Controla el coche a través de la web
Esta guía muestra cómo usar el ESP32 para controlar de forma inalámbrica un coche robot desde un navegador web en tu teléfono inteligente o PC mediante WiFi. El control se facilita a través de una interfaz gráfica de usuario web que utiliza algo llamado WebSocket, lo que permite un control suave y dinámico del coche.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del coche RC con tracción en dos ruedas y WebSocket
Ahora, ¿por qué optar por WebSocket? Aquí tienes lo esencial:
- Sin WebSocket, cambiar la dirección del coche requeriría recargar la página cada vez. ¡No es ideal!
- Sin embargo, con WebSocket, establecemos una conexión especial entre la página web y el ESP32. Esto permite enviar comandos al ESP32 en segundo plano, sin necesidad de recargar la página. ¿El resultado? El coche robot se mueve de forma fluida y en tiempo real. ¿No es genial, verdad?
En pocas palabras, la conexión WebSocket permite el control fluido y en tiempo real del robot.
Tenemos tutoriales específicos sobre un coche RC de dos ruedas motrices (2WD) y WebSocket. Cada tutorial contiene información detallada e instrucciones paso a paso sobre la disposición de pines de hardware, el principio de funcionamiento, la conexión de cableado al ESP32, código para ESP32... Aprende más sobre ellos en los siguientes enlaces:
- ESP32 - 2WD RC Car tutorial
- ESP32 - WebSocket tutorial
Cómo funciona
El código del ESP32 crea tanto un servidor web como un servidor WebSocket. Así es como funciona:
- Cuando ingresas la dirección IP del ESP32 en un navegador web, éste solicita la página web (Interfaz de Usuario) al ESP32.
- El servidor web del ESP32 responde enviando el contenido de la página (HTML, CSS, JavaScript).
- Tu navegador web muestra la página.
- El código JavaScript dentro de la página establece una conexión WebSocket con el servidor WebSocket del ESP32.
- Una vez que esta conexión WebSocket está establecida, si pulsas y sueltas los botones de la página web, el código JavaScript envía en segundo plano los comandos al ESP32 a través de esta conexión WebSocket.
- El servidor WebSocket en el ESP32, al recibir los comandos, controla el coche robot en consecuencia.
La tabla de abajo muestra la lista de comandos que la página web envía al ESP32 según las acciones del usuario:
| User's Action | Button | Command | Car Action |
|---|---|---|---|
| PRESS | UP | 1 | MOVE FORWARD |
| PRESS | DOWN | 2 | MOVE BACKWARD |
| PRESS | LEFT | 4 | TURN LEFT |
| PRESS | RIGHT | 8 | TURN RIGHT |
| PRESS | STOP | 0 | STOP |
| RELEASE | UP | 0 | STOP |
| RELEASE | DOWN | 0 | STOP |
| RELEASE | LEFT | 0 | STOP |
| RELEASE | RIGHT | 0 | STOP |
| RELEASE | STOP | 0 | STOP |
Diagrama de cableado entre un coche RC de dos ruedas motrices y ESP32
El siguiente diagrama muestra cómo conectar el ESP32, el controlador de motor L9110S y los dos motores DC, usando una placa de pruebas para compartir las líneas comunes de alimentación y tierra:

This image is created using Fritzing. Click to enlarge image
Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.
Nota: El diagrama anterior muestra el cableado correcto. En la práctica, conectar varios cables (como las líneas compartidas de VCC y GND) en el mismo orificio del conector de pines del ESP32 no es fácil. Una solución conveniente es usar una placa de expansión con bloque de terminales de tornillo para ESP32 — se pueden asegurar varios cables en el mismo terminal de tornillo, o un cable en el tornillo y otro en el pin del conector adyacente.

This image is created using Fritzing. Click to enlarge image
El módulo L9110S (controlador de motor) alimenta los motores directamente desde sus pines VCC y GND y no tiene un regulador de 5 V integrado. Esto te permite alimentar todo con una única fuente de energía: cuatro baterías de 1,5 V (un total de 6 V). Así es como:
- Conecta la batería de 6 V a los pines VCC y GND del módulo L9110S para alimentar los motores.
- Conecta la misma batería de 6 V a los pines Vin y GND del ESP32 para alimentar la placa.
- Asegúrate de que el módulo L9110S y el ESP32 compartan un GND común.
A diferencia del L298N, el L9110S no tiene puentes de habilitación ENA/ENB ni una terminal de tornillo de 12 V, por lo que el cableado es más sencillo.
Como el coche RC de dos ruedas motrices (2WD) tiene un interruptor de encendido/apagado, puedes conectar opcionalmente la batería a través del interruptor para encender o apagar la energía del coche. Si quieres simplificarlo, simplemente ignora el interruptor.
Código ESP32
El contenido de la página web (HTML, CSS, JavaScript) se almacena por separado en un archivo index.h. Por lo tanto, tendremos dos archivos de código en el IDE de Arduino:
- Un archivo .ino con código para ESP32, que crea un servidor web y un servidor WebSocket, y controla el coche
- Un archivo .h, que contiene el contenido de la página web
Pasos R\u00e1pidos
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
- Realiza el cableado como se muestra en la imagen anterior.
- Conecta la placa ESP32 a tu PC mediante un cable micro USB.
- Abre Arduino IDE en tu PC.
- Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
- Abre el Gestor de Bibliotecas haciendo clic en el icono Gestor de Bibliotecas en la barra de navegación izquierda de Arduino IDE.
- Busca “DIYables ESP32 WebServer”, luego encuentra la biblioteca Web Server creada por DIYables.
- Haz clic en el botón Instalar para instalar la biblioteca Web Server.

- En el IDE de Arduino, crea un nuevo sketch. Ponle un nombre, por ejemplo, newbiely.com.ino
- Copia el código de abajo y ábrelo en el IDE de Arduino
- Modifica la información de WiFi (SSID y contraseña) en el código para que coincida con las credenciales de tu propia red.
- Crea el archivo index.h en el IDE de Arduino de la siguiente manera:
- Haz clic en el botón justo debajo del ícono del monitor serie y elige Nueva pestaña, o usa las teclas Ctrl+Shift+N.
- Escribe el nombre del archivo index.h y haz clic en el botón OK
- Copia el código de abajo y pégalo en el index.h.
- Ahora tienes el código en dos archivos: newbiely.com.ino y index.h
- Haz clic en el botón Upload en el IDE de Arduino para cargar el código al ESP32
- Abre el Monitor Serial
- Consulta el resultado en el Monitor Serial.
- Toma nota de la dirección IP que se muestra y escribe esa dirección en la barra de direcciones de un navegador web en tu teléfono inteligente o en tu PC.
- Verás la página web como se muestra a continuación.
- El código JavaScript de la página web crea automáticamente la conexión WebSocket con el ESP32.
- Ahora puedes controlar el coche para girar a la izquierda o a la derecha, avanzar o retroceder a través de la interfaz web.
- Si modificas el contenido HTML en index.h y no tocas nada en el archivo newbiely.com.ino, cuando compiles y cargues el código al ESP32, Arduino IDE no actualizará el contenido HTML.
- Para hacer que Arduino IDE actualice el contenido HTML en este caso, haz un cambio en el archivo newbiely.com.ino (por ejemplo, agregar una línea en blanco, añadir un comentario...).



Para ahorrar la memoria del ESP32, las imágenes de los botones de control NO se almacenan en el ESP32. En su lugar, se almacenan en Internet, por lo que tu teléfono o PC necesitan tener conexión a Internet para cargar las imágenes de la página de control web.
※ Nota:
Explicación del código línea por línea
El código anterior de ESP32 contiene una explicación línea por línea. ¡Por favor lea los comentarios en el código!