ESP8266 - servomotor

Este tutorial te enseña cómo utilizar el ESP8266 para controlar un servomotor. En detalle, aprenderemos:

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Servomotor
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del servomotor

Un servomotor es un componente capaz de hacer girar su eje (normalmente dentro de un rango de 0 a 180 grados) para controlar la posición angular de un objeto.

Pinout del servomotor

El servomotor tiene tres pines:

  • Pin VCC (usualmente rojo) debe conectarse a VCC (5V)
  • Pin GND (usualmente negro o marrón) debe conectarse a GND (0V)
  • Pin de señal (usualmente amarillo o naranja) que recibe la señal de control PWM desde un pin del ESP8266.
pinout del servomotor

ESP8266 - Servomotor

Algunos de los pines del ESP8266 pueden programarse para generar una señal PWM. Conectar el pin de señal del servomotor a un pin del ESP8266 y programarlo para generar PWM en el mismo pin nos permite controlar el servomotor.

Gracias a la biblioteca ESP8266 Servo, controlar un servomotor es fácil. No necesitamos entender cómo funciona el servomotor o cómo generar una señal PWM. Todo lo que necesitamos hacer es aprender a usar la biblioteca.

Diagrama de Cableado

Diagrama de cableado del servomotor ESP8266 NodeMCU

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.

A modo de simplificación, el diagrama de cableado anterior se utiliza para pruebas o fines de aprendizaje, y para un servomotor de bajo par. En realidad, recomendamos encarecidamente utilizar una fuente de alimentación externa para el servomotor. El diagrama de cableado que se muestra a continuación ilustra cómo conectar el servomotor a una fuente de alimentación externa.

Diagrama de cableado de la fuente de alimentación externa para el motor servo ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Cómo programar para un servomotor

El núcleo Arduino-ESP8266 ya viene con su biblioteca de servomotores integrada, por lo que no es necesario instalarla.

  • Incluir la biblioteca:
#include <Servo.h>
  • Crear un objeto Servo:
Servo servo;

Si tienes más de un servomotor, simplemente declara objetos Servo adicionales:

Servo servo1; Servo servo2;
  • Asignar el pin de control del ESP8266 al pin de señal del servomotor. Por ejemplo, el pin D7:
servo.attach(D7);
  • Por último, gire el servomotor al ángulo requerido. Por ejemplo, 90°
servo.write(90);

Código ESP8266

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { servo.attach(D7); // attaches the servo on pin D7 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // rotate from 0 degrees to 180 degrees // in steps of 1 degree servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // rotate from 180 degrees to 0 degrees servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } }

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 como se muestra 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, como (por ejemplo NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Conecta tu ESP8266 al PC usando un cable USB.
  • Inicia Arduino IDE, selecciona la placa y el puerto correctos.
  • Copia el código proporcionado y ábrelo en el Arduino IDE.
  • Haz clic en el botón Subir en el Arduino IDE para compilar y cargar el código al ESP8266.
Cómo subir código al ESP8266 NodeMCU usando el IDE de Arduino
  • Mira el resultado: el servomotor se mueve en sentido horario y antihorario.

Explicación del código

¡Consulta la explicación línea por línea que se encuentra en los comentarios del código fuente!

Cómo controlar la velocidad de un servomotor

Utilizando las funciones map() y millis(), podemos regular la velocidad del servomotor de forma suave sin entorpecer el resto del código.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; unsigned long MOVING_TIME = 3000; // moving time is 3 seconds unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(D7); move_start_ms = millis(); // start moving // TODO: other code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: other code }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!