ESP8266 - Controla el motor servo a través de la web
Este tutorial te enseña cómo usar el ESP8266 para controlar un servomotor a través de la web desde un navegador en tu teléfono inteligente o PC. Usaremos algo llamado WebSocket para controlar el servomotor de forma suave y dinámica mediante una interfaz gráfica de usuario web.

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 nada bueno!
- Pero con WebSocket, establecemos una conexión especial entre la página web y el ESP8266. Esto significa que podemos enviar el valor del ángulo al ESP8266 en segundo plano, sin recargar la página. Eso hace que el servo se mueva de forma suave y en tiempo real. ¿Bastante genial, eh?
¡Vamos!
Hardware Requerido
Or you can buy the following kits:
| 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 del hardware, el principio de funcionamiento, la conexión de cableado al ESP8266 y el código para ESP8266... Obtén más información sobre ellos en los siguientes enlaces:
- ESP8266 - Servo Motor tutorial
- ESP8266 - WebSocket tutorial
Cómo funciona
El código ESP8266 crea tanto un servidor web como un servidor WebSocket. Así es como funciona:
- Cuando ingresas la dirección IP del ESP8266 en un navegador web, éste solicita la página web (Interfaz de usuario) al ESP8266.
- El servidor web del ESP8266 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 ESP8266.
- Una vez que esta conexión WebSocket está establecida, si giras la manija en la página, el código JavaScript envía silenciosamente el valor del ángulo al ESP8266 a través de esta conexión WebSocket en segundo plano.
- El servidor WebSocket en el ESP8266, 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 ESP8266

This image is created using Fritzing. Click to enlarge image
Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.
Con el fin de simplificar, el diagrama de cableado anterior se utiliza para fines de prueba o aprendizaje y para un servomotor de par pequeño. En la práctica, recomendamos encarecidamente utilizar una fuente de alimentación externa para el servomotor. El diagrama de cableado que se muestra a continuación indica cómo conectar el servomotor a una fuente de alimentación externa.

This image is created using Fritzing. Click to enlarge image
Código ESP8266
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 que contiene código para ESP8266, 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
Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:
- Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
- Conecta los componentes tal como se muestran en el diagrama.
- Conecta la placa ESP8266 a tu computadora usando un cable USB.
- Abre Arduino IDE en tu computadora.
- Elige la placa ESP8266 correcta, por ejemplo (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
- Abre el Administrador de Bibliotecas haciendo clic en el icono Administrador de Bibliotecas en la barra de navegación izquierda de Arduino IDE.
- Busca “WebSockets”, luego encuentra la librería WebSockets creada por Markus Sattler.
- Haz clic en el botón Instalar para instalar la librería WebSockets.

- En Arduino IDE, crea un nuevo sketch, ponle un nombre, por ejemplo, newbiely.com.ino
- Copia el código de abajo y ábrelo con Arduino IDE
- Crea el archivo index.h en el IDE de Arduino haciendo:
- Haz clic en el botón justo debajo del icono del monitor serie y elige New Tab, o usa las teclas Ctrl+Shift+N.
- Indica 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 Subir en el IDE de Arduino para cargar el código al ESP8266
- 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 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 ESP8266.
- Ahora puedes controlar el ángulo del servomotor a través de la interfaz web.
- Si modificas el contenido HTML en el index.h y no tocas nada en el archivo newbiely.com.ino, cuando compiles y subas el código al ESP8266, 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 (p. ej., añade una línea en blanco o un comentario...).



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