
Chisme 127 del lince: servo 360 ESP32, el mando del Lince
Sierra Bermeja, atardecer. El Lince de la Noche tiene montado en lo alto de una roca un pequeño «periscopio» de cartón para vigilar el valle. Cada vez que quiere mirar hacia otro lado, tiene que trepar, girarlo a mano y volver a bajar.
—Llevas tres subidas esta tarde —dice la Gata Montesa, sin levantar la vista de su pantalla—. ¿Y si lo giras desde aquí abajo?
—¿Con un cable larguísimo?
—Con un servo y una página web. Tú mueves un control en el ordenador y el servo hace el resto.
—Pero un servo se pone en un ángulo y se queda ahí. Yo quiero que gire sin parar, como una noria.
—Entonces necesitas uno de 360 grados. Ya verás que funciona de otra manera.
Introducción: un servo 360 ESP32 controlado desde la web
En este chisme montamos un servo 360 ESP32: el servo QL032 del kit de Acebott, conectado a la ESP32 Plus y manejado desde una página web por USB con Web Serial. Con un deslizador eliges la velocidad y el sentido, y también puedes pedirle «gira dos vueltas». Es la continuación de la estación meteorológica del chisme 125, pero ahora la información viaja en sentido contrario: de la página a la placa.
Cómo funciona un servo 360 ESP32
Un servo normal recibe un ángulo y se coloca en él. Uno de 360° es distinto: lleva el mismo circuito, pero sin tope ni sensor de posición, así que el número que le mandas significa velocidad y sentido:
- 90: parado.
- 0: gira a tope hacia un lado.
- 180: gira a tope hacia el otro.
- Valores intermedios (45, 135…): giran más despacio.
Por dentro, el servo espera cada 20 ms un pulso eléctrico cuya duración es la orden: unos 1,5 ms significa «parado», menos de 1,5 ms gira a un lado y más gira al otro. La ESP32 genera ese pulso por ti cuando usas el bloque del servo. Como no hay sensor de posición, el control es de lazo abierto: la placa manda la orden, pero nunca sabe cuántas vueltas ha dado realmente.
Qué necesitamos para el servo 360 ESP32
- Placa ESP32 Plus de Acebott y cable USB de datos.
- Servo de 360° QL032 del kit de Acebott.
- ACECode y un ordenador con Chrome o Edge.
Conexión del servo 360 ESP32 (3 cables)
| Cable del servo | ESP32 Plus |
|---|---|
| Marrón o negro (−) | GND |
| Rojo (+) | 5V |
| Naranja o amarillo (señal) | GPIO25 |
Es el mismo pin que usamos en la puerta de la cueva del chisme 115, así que si ya lo tenías montado no hay que tocar nada.
El programa del servo 360 ESP32 en ACECode
La placa tiene que escuchar el puerto serie y mover el servo con el número que reciba:
Inicio del programa
Serial 115200 imprimir "Hola"
Servomotor 25 establecer ángulo 90
por siempre
si <el puerto serie recibe datos> entonces
esperar 50 milisegundos
dar a v el valor (puerto serie recibe [número])
si <v > 0> entonces
Servomotor 25 establecer ángulo v
- Servomotor 25 establecer ángulo 90 deja el servo parado al arrancar.
- si el puerto serie recibe datos vigila si la página ha enviado algo. «Esperar 50 ms» deja que llegue el número completo.
- puerto serie recibe [número] lee el valor y lo guarda en la variable
v. - si v > 0 descarta las lecturas vacías: si la placa no encuentra un número, devuelve 0, y 0 en un servo de 360° significa «gira a tope». Sin este «si», el servo se paraba un momento y volvía a girar.
Un error típico al subir: si eliges «datos» en el desplegable del bloque, ACECode da error de compilación porque «datos» es texto y el servo necesita un número. Elige número.
Cómo subir el programa y conectar la página
- Con la placa conectada por USB, elige la ESP32 y su puerto en ACECode y sube el programa.
- Cierra ACECode del todo. Un puerto USB solo lo puede usar un programa a la vez: si ACECode sigue abierto con la placa conectada, la página no podrá abrir el puerto y dará error.
- Abre la página del servo y pulsa «Conectar placa (USB)».
- Elige «CP2102 USB to UART Bridge Controller (COMxx)». Ignora los «Dispositivo periférico Bluetooth».
- Mueve el deslizador o pulsa «Izquierda» y «Derecha».
- Para cambiar el programa, pulsa primero «Desconectar» en la página y después abre ACECode.
Si algo falla: «No se pudo abrir el puerto» casi siempre es que ACECode sigue abierto; «El puerto ya estaba abierto» se arregla recargando la página (F5).
Cómo usar el mando del servo 360 ESP32
- Punto muerto: cada servo para en un valor ligeramente distinto de 90. Si «Parado» se mueve despacito, cambia el punto muerto (aquí fue 92) hasta que se quede quieto.
- Girar N vueltas: pulsa «Medir», cuenta las vueltas en 5 s y escribe el número. La página calcula cuánto tarda una vuelta y, desde ahí, el tiempo para cualquier número de vueltas.
Qué estamos controlando realmente
La página manda un número entre 1 y 179. Nunca envía 0 ni 180 porque la placa lee un 0 cuando no entiende nada. El servo no avisa de lo que hace: si algo lo frena, la página seguirá creyendo que ha dado «dos vueltas». Controlar algo sin medir lo que hace es un lazo abierto; medirlo y corregir sería un lazo cerrado, como hacen los robots con codificadores.
Para el aula con el servo 360 ESP32
- ¿Qué valor deja parado vuestro servo? ¿Es el mismo en todos los del aula? ¿Por qué?
- Mide cuánto tarda una vuelta para 100 %, 75 %, 50 % y 25 % de velocidad. ¿Es proporcional?
- Pide «2 vueltas» y cuenta cuántas da realmente. ¿Cuánto se equivoca? ¿Y con 10 vueltas?
- Repite la prueba con un peso colgado del eje. ¿Cambia el error?
- ¿Qué hace falta añadir para que el servo sepa cuántas vueltas ha dado de verdad?
Retos con el servo 360 ESP32
- Reto 1: haz que el servo gire y se pare desde la página.
- Reto 2: encuentra el punto muerto de tu servo.
- Reto 3: haz un periscopio de cartón que gire con el servo.
- Reto 4: añade al programa un LED que se encienda mientras gira.
- Reto 5: guarda una tabla de vueltas pedidas frente a vueltas reales.
- Reto 6: combina el servo con el sensor de luz de la shield para que gire hacia la luz.
Qué hemos aprendido
Hemos conectado un servo 360 ESP32 con tres cables, hemos leído números del puerto serie en ACECode y los hemos usado para mover el servo desde una página web. Y hemos descubierto algo importante: un servo de 360° no sabe dónde está, solo obedece una velocidad. Además, un 0 inesperado puede arruinar el programa si no lo descartamos.

Etiqueta:acebott, acecode, AIDARAC, esp32, ies monterroso, montesteam, Puerto serie, Servo, servo 360, web serial



