El servo es un tipo de motor con engranajes que solo puede rotar 180 grados. Se controla enviando pulsos eléctricos desde tu placa ESP32, los cuales le indican al servo exactamente a qué posición se tiene que mover.
Descripción general
El servo tiene tres cables: el marrón es el de tierra y se conecta al puerto GND del ESP32, el rojo es el de alimentación y va al puerto de 3.3V, y el naranja es el de señal, que debe ir conectado a un puerto GPIO.
Componentes requeridos
- (1) x Elegoo ESP32
- (1) x Servo (SG90)
- (3) x Cables M-M (puentes Macho a Macho)
- (2) x Protoboard de 400 puntos
Introducción al componente: SG90
- Universal para conectores JR y FP
- Largo del cable: 25 cm
- Velocidad de operación (sin carga): 0.12 seg / 60 grados (4.8V), 0.10 seg / 60 grados (6.0V)
- Torque de bloqueo (4.8V): 1.6 kg/cm
- Temperatura de trabajo: -30~60°C
- Ancho de banda muerta: 5us
- Voltaje de trabajo: 3.5~6V
- Dimensiones: 3.2 cm x 3 cm x 1.2 cm
- Peso: 134 g
Esquema de conexión y diagrama de cableado
Fijate en los diagramas del manual para realizar las conexiones de forma correcta. Asegurate de respetar los colores de los cables para no dañar el componente.
Código
Podés descargar el archivo del programa haciendo clic en el enlace azul y abrirlo con un doble clic una vez que termine la descarga. Acordate de que tenés que tener instalado el IDE de Arduino y haber configurado el soporte para placas ESP32 antes de intentar subir el código.
IMPORTANTE: Antes de correr el programa, asegurate de tener instalada la librería ESP32Servo. Si no la tenés, el código no va a funcionar.
#include <ESP32Servo.h>
Servo myservo; // Crea el objeto para controlar el servo
void setup(){
myservo.attach(18); // Conecta el pin 18 con la línea de control del servo
myservo.write(90); // Mueve el servo a la posición central (90°)
}
void loop(){
myservo.write(90); // Posición central
delay(1000);
myservo.write(60); // Mueve a 60°
delay(1000);
myservo.write(90); // Vuelve al centro
delay(1000);
myservo.write(150); // Mueve a 150°
delay(1000);
}
Configuración de la librería y objetos
Usamos #include <ESP32Servo.h> para traer la librería específica para ESP32, que está optimizada para este hardware. Al declarar Servo myservo, estamos creando una instancia que nos permite manejar el motor usando funciones simples.
Conceptos de Programación Orientada a Objetos (POO)
Acá, Servo actúa como una clase (una estructura compleja que contiene funciones y datos) y myservo es el objeto o variable que usamos para interactuar con esas funciones, como attach() para asignar el pin y write() para definir el ángulo.
Función setup()
En esta parte inicializamos el motor. Con myservo.attach(18) vinculamos el control al pin GPIO 18. Al ejecutar myservo.write(90) ni bien arranca, logramos que el servo comience siempre en una posición conocida, evitando movimientos bruscos o erráticos al encender la placa.
Cableado del Servo
La mayoría de los servos usan este código de colores: el cable de control (amarillo o naranja) va al pin GPIO 18, el de alimentación (rojo) va a 3.3V o 5V, y el de tierra (marrón o negro) se conecta a GND.
Función loop()
Este es el bucle principal que controla la secuencia de movimientos. El código hace que el servo rote entre el centro (90°), una posición a la izquierda (60°) y otra a la derecha (150°), con una espera de un segundo entre cada cambio para que el movimiento sea fluido y visible.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.