ESP32 - Controla un servomotor a través de la web
Este tutorial te enseña cómo usar el ESP32 para controlar un motor servo a través de la web desde un navegador en tu teléfono inteligente o PC. Usaremos algo llamado WebSocket para controlar el motor servo de manera suave y dinámica a través de una interfaz gráfica de usuario web.
El video de abajo es una demostración:
Ahora, ¿por qué usar WebSocket? Aquí está la idea:
- Sin WebSocket, cada vez que quieres cambiar el ángulo del servo, tienes que recargar la página. ¡No es genial!
- Pero con WebSocket, establecemos una conexión especial entre la página web y el ESP32. Esto significa que podemos enviar el valor del ángulo al ESP32 en segundo plano, sin recargar la página. Eso hace que el servo se mueva de forma suave y en tiempo real. ¿No es genial, verdad?
¡Comencemos!
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del servomotor y WebSocket
Tenemos tutoriales específicos sobre el servomotor y WebSocket. Cada tutorial contiene información detallada e instrucciones paso a paso sobre el pinout de hardware, el principio de funcionamiento, la conexión de cableado al ESP32, el código para ESP32... Obtenga más información sobre ellos en los siguientes enlaces:
- ESP32 - Servo Motor 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 web (HTML, CSS, JavaScript).
- Luego 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 en el ESP32.
- Una vez que se establece esta conexión WebSocket, si giras el control en la página, el código JavaScript envía en segundo plano el valor del ángulo al ESP32 a través de esta conexión WebSocket.
- El servidor WebSocket en el ESP32, al recibir el valor del ángulo, controla el servomotor en consecuencia.
En pocas palabras, la conexión WebSocket permite el control suave y en tiempo real del ángulo del servomotor.
Diagrama de cableado entre el servomotor y el ESP32

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.
Con el fin de simplificar, el diagrama de cableado anterior se utiliza para fines de prueba o aprendizaje, y para servomotores de par pequeño. En la práctica, recomendamos encarecidamente utilizar una fuente de alimentación externa para el servomotor. El diagrama de cableado a continuación muestra cómo conectar el servomotor a una fuente de alimentación externa.

This image is created using Fritzing. Click to enlarge image
A continuación se muestra un cableado real entre el motor servo y el ESP32.

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 un servomotor
- 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 en la imagen de arriba.
- 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 Administrador de Bibliotecas haciendo clic en el icono Administrador 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.

- Escribe ESP32Servo en la caja de búsqueda, luego busca la biblioteca de servomotores de Kevin Harrington, John K. Bennett.
- Haz clic en el botón Instalar para instalar la biblioteca de servomotores para ESP32.

- 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 con Arduino IDE
- Modifica la información de WiFi (SSID y contraseña) en el código para que coincida con tus credenciales de red.
- Crea el archivo index.h en Arduino IDE mediante:
- Haz clic en el botón justo debajo del icono 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 Aceptar.
- Copie el código que se muestra a continuación y péguelo en index.h.
- Ahora tienes el código en dos archivos: newbiely.com.ino y index.h
- Haz clic en el botón Subir en el IDE de Arduino para cargar el código al ESP32
- Abre el Monitor Serial
- Revisa el resultado en el Monitor Serial.
- Toma nota de la dirección IP que se muestra y escribe esta dirección en la barra de direcciones de un navegador web en tu teléfono móvil o 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 ángulo del servomotor a través de la interfaz web.
- Si modificas el contenido HTML en la index.h y no tocas nada en el archivo newbiely.com.ino, cuando compiles y cargues el código al ESP32, el IDE de Arduino no actualizará el contenido HTML.
- Para que el IDE de Arduino actualice el contenido HTML en este caso, realiza un cambio en el archivo newbiely.com.ino (por ejemplo, añadir una línea en blanco, añadir un comentario...).



Para ahorrar la memoria del ESP32, las imágenes del servomotor no se almacenan en el ESP32. En su lugar, se almacenan en Internet, por lo que tu teléfono o PC deben tener una 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 ESP32 anterior contiene una explicación línea por línea. ¡Por favor lea los comentarios del código!