8 servos, un Arduino Uno y un shield. Piezas, cableado, calibración y código listos para que se mantenga de pie y camine.

robo4 es un plan completo para construir en casa un pequeño robot de cuatro patas (unos 20 cm) que camina. Cada pata tiene dos motores pequeños, llamados servos: uno en la cadera y otro en la rodilla. Un Arduino Uno con una placa de expansión (shield) encima lo controla todo; allí se conectan los 8 servos. Aquí tienes la lista de piezas, los diagramas de cableado, los pasos de montaje y calibración y el código listo para compilar. Es para quien quiere aprender robótica con sus propias manos; necesitas una computadora, las piezas de la lista y una tarde para montarlo.
Dos articulaciones por pata es lo mínimo para que el pie suba, avance y baje. Lo demás es calibración y ritmo.
Cadera y rodilla en cada pata (8 servos MG90S con engranajes metálicos). El pie describe un arco: sube, avanza y se apoya.
El Sensor Shield V5 tiene 3 pines por puerto: los servos se conectan directamente de D2 a D9. Los servos reciben energía de una fuente separada.
Cinemática inversa, trote, marcha lenta, giros y calibración guardada en la memoria. Controla el robot con letras desde el Monitor Serial.
Son siete etapas, que corresponden a los 10 pasos de la guía: batería = paso 1, electrónica = 2, servos a 90° = 3, patas = 4 y 5, calibración = 6 a 8, marcha lenta = 9, trote = 10.
El código trabaja en milímetros: «pie 15 mm adelante y 85 mm debajo de la cadera». La cinemática inversa (ley de cosenos) lo convierte en dos ángulos.
90° en el servo = muslo vertical y rodilla en ángulo recto. Cadera: 90 + signo × ángulo + ajuste. Rodilla: 90 + signo × (ángulo − 90) + ajuste.
En la marcha lenta sube un pie a la vez (tres en el suelo) y el cuerpo se balancea para que el peso quede sobre ellos. En el trote suben dos pies en diagonal. Todo se actualiza 50 veces por segundo.
Los precios en reales son estimaciones de octubre de 2026. Total básico: R$ 450 a 850, sin impresora 3D ni opcionales.

En el celular, arrastra la tabla hacia un lado para ver todas las columnas.
| Elemento | Cant. | Estimación | Por qué elegirlo |
|---|---|---|---|
| Arduino Uno R3 + cable USB | 1 | R$ 50–130 | Cerebro del robot |
| Sensor Shield V5.0 para Uno | 1 | R$ 20–35 | Pines S/V/G para conectar los servos y bornera de alimentación separada |
| Microservo MG90S | 8 (+1 de repuesto) | R$ 18–30 cada uno | Los engranajes metálicos soportan el peso en la rodilla; los engranajes plásticos del SG90 se desgastan |
| Batería LiPo 2S 7,4 V, 1000–2200 mAh, XT60 | 1 | R$ 70–140 | Alimenta los servos y el Arduino |
| UBEC / step-down 5–6 V, 5 A o más | 1 | R$ 20–45 | Los 8 servos consumen de 4 a 6 A en el pico |
| Portafusible de cuchilla + fusible de 7,5 A | 1 | R$ 8–15 | Justo después del XT60: un cortocircuito no derrite el cable ni la pista |
| Interruptor de encendido/apagado (≥ 5 A) | 1 | R$ 5–10 | Apaga todo de una vez |
| Alarma de voltaje para LiPo (zumbador) | 1 | R$ 8–15 | Suena antes de que la batería baje demasiado |
| Enchufe P4 macho de 5,5 × 2,1 mm con cable | 1 | R$ 5–10 | Lleva la batería al jack DC del Uno (el shield cubre el pin VIN) |
| Cable 18 AWG rojo y negro (~1 m) | 1 | R$ 8–15 | Línea de alimentación batería → interruptor → UBEC → bornera |
| Cargador balanceado 2S | 1 | R$ 60–150 | La LiPo solo se carga con un balanceador |
| Chasis + 4 muslos + 4 tibias | 1 juego | R$ 10–40 | Acrílico o MDF de 3 mm cortado según el plano acotado, o impreso en 3D con los archivos STL (15 piezas, incluidas 4 escuadras) |
| Patas de goma, tornillos M2/M3, separadores, bridas, velcro | kit | R$ 30–60 | Sujeción y agarre |
| Opcionales: Bluetooth HC-05, ultrasonido HC-SR04, IMU MPU-6050 | — | R$ 50–80 | Control desde el celular, evitar obstáculos, equilibrio |
Destornillador Phillips pequeño, alicate de corte, multímetro y cautín (solo para el XT60 y el interruptor).
Arduino IDE o arduino-cli (herramienta de línea de comandos de Arduino). Los comandos de esta guía usan arduino-cli.
# instala arduino-cli (Linux/macOS; en Windows descárgalo desde arduino.github.io/arduino-cli) mkdir -p ~/.local/bin curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/.local/bin sh export PATH="$HOME/.local/bin:$PATH" # agrega esta línea a ~/.bashrc arduino-cli core update-index arduino-cli core install arduino:avr arduino-cli lib install Servo # Linux: permiso para usar el puerto USB (cierra sesión y vuelve a entrar después) sudo usermod -aG dialout $USER
Las placas con chip CH340 aparecen como /dev/ttyUSB0 y, en Windows, pueden requerir el controlador CH340.
Descarga el repositorio con los dos sketches: montaje y firmware.
git clone https://github.com/inematds/robo4 cd robo4
Los diagramas están en SVG en el repositorio (guia/assets/). En el celular se ven pequeños: toca «Abrir en pantalla completa». Para imprimir el dibujo de las piezas a tamaño real, usa las medidas escritas en él (en mm), no la escala de la pantalla.
Reemplaza /dev/ttyACM0 por el puerto de tu Uno (en Windows, algo como COM3). arduino-cli board list te muestra cuál es.
Carga la LiPo. Conecta batería → interruptor → UBEC y mide la salida con el multímetro. Debe dar entre 5 y 6 V. Conecta cualquier servo solo después.
Conecta el Sensor Shield. Retira el jumper SEL. Con todo apagado y sin batería, pon el multímetro en continuidad (el modo que pita) y toca un pin V de cualquier puerto de servo con una punta y el pin 5V del Uno (o el pin 5V del shield) con la otra: no debe pitar. Si pita, el jumper todavía conecta ambos puntos (hay diferencias entre clones). Conecta el UBEC a la bornera de los servos. El Uno recibe la alimentación lógica de la LiPo por el jack DC (el conector redondo junto al USB), con un enchufe P4 de 5,5 × 2,1 mm: centro positivo, cable rojo en el pin del medio. Comprueba la polaridad con el multímetro antes de conectarlo.
El regulador del Uno necesita unos 7 V en el jack. Ajusta la alarma de la LiPo a 3,5 V por celda (7,0 V en total): suena antes de que el Uno empiece a reiniciarse.

Conecta los 8 servos a los pines D2 a D9 (marrón en G, rojo en V, naranja en S), sin los brazos (horns, la pieza plástica que encaja en el eje). Con el interruptor de los servos apagado, carga el sketch de montaje por USB (el Uno puede tener un programa antiguo que mueve los pines D2 a D9). Luego enciende el interruptor: los servos irán a 90° uno por uno y quedarán fijos. No gires el eje con la mano mientras estén encendidos.
arduino-cli compile --fqbn arduino:avr:uno firmware/montagem arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno firmware/montagem
Corta las piezas según el dibujo con medidas. Atornilla los servos de la cadera en las aberturas de las paredes laterales, con el eje hacia afuera, y fija el horn en la parte superior de cada muslo: el muslo debe quedar vertical, apuntando al suelo. La ubicación de los 2 orificios para los tornillos del horn varía según el fabricante: apoya el horn sobre la pieza, centrado en el orificio del eje, y marca los orificios con él (orificio central de 3 mm para el tornillo del eje, orificios de 1,5 mm para los tornillos del horn). Encaja el servo de la rodilla en la abertura del muslo, con el eje hacia afuera (del mismo lado que la cadera) y el cuerpo subiendo por el muslo, orientado hacia el interior del robot. La tibia va en el horn de la rodilla, por fuera del muslo, apuntando hacia el FRENTE del robot en ángulo recto (en las 4 patas). Si apunta hacia atrás, la rodilla se dobla en el sentido incorrecto y el robot no se mantiene de pie; cambiar el sentido en el código no lo corrige. Si el horn no encaja en un ángulo recto exacto, usa el diente más cercano: puedes corregir el resto en el paso 7. Opcional: para reducir el juego, un tornillo M3 con tuerca autofrenante (tuerca con un anillo de nailon que no se afloja) en el lado opuesto al eje, pasando por una segunda placa, sirve como cojinete.


Coloca el Uno + shield arriba con separadores M3 de 25 mm (así la placa pasa por encima de los servos de la cadera); fija la batería y el UBEC abajo con velcro. Sujeta los cables con bridas y deja holgura en la rodilla; si no, el cable tira cuando la pata se dobla.
El firmware incluye la cinemática, los modos de marcha y la calibración. Deja el robot suspendido (sobre un recipiente, con las patas en el aire) la primera vez. Si no hay una calibración guardada, se inicia en modo de montaje, con todo a 90°, y solo se pone de pie cuando se lo indiques.
arduino-cli compile --fqbn arduino:avr:uno firmware/robo4 arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno firmware/robo4 arduino-cli monitor -p /dev/ttyACM0 -c baudrate=9600 # robo4 pronto (sem calibracao: modo montagem, 90 graus).
Escribe m para poner todo a 90°. Corrige la articulación torcida con el comando o <perna> <junta> <graus>, escrito de una sola vez y con Enter (arduino-cli monitor no muestra lo que escribes; en Arduino IDE, selecciona «Nueva línea» en el Monitor Serial). El valor reemplaza el ajuste anterior de esa articulación; no se suma: pata 0 a 3 (FE, FD, TE, TD), articulación 0 = cadera, 1 = rodilla, grados de −30 a 30. Guarda con g en la EEPROM (la memoria del Uno que no se borra al apagarlo).
m # todo a 90° o 0 1 -6 # rodilla delantera izquierda: −6° (si empeora, usa 6) p # muestra los ajustes g # guarda en la EEPROM (se conserva al apagar)
Escribe x. Las patas irán poco a poco a la posición de pie (cada servo se mueve como máximo 5° cada 20 ms; esto también reduce la carga de la fuente). Las cuatro deben doblarse igual. Si alguna se dobla hacia el lado incorrecto, cambia su sentido en SENTIDO[][] en el código, compila y vuelve a cargarlo.
// firmware/robo4/robo4.ino const int8_t SENTIDO[4][2] = {{1, -1}, {-1, 1}, {1, -1}, {-1, 1}};
Con el robot suspendido, escribe c (marcha lenta, en inglés creep) y comprueba el orden: trasera izquierda, delantera izquierda, trasera derecha, delantera derecha. El cuerpo se balancea hacia adelante y hacia atrás: es intencional, para que el peso quede sobre las tres patas apoyadas en el suelo. Después, ponlo en el suelo.
BALANCO solo mueve el cuerpo hacia adelante y hacia atrás. Si se cae hacia adelante o hacia atrás, aumenta BALANCO (12 → 18) o reduce PASSO. Si se cae hacia un lado, baja la altura con - o separa las patas (base más ancha que 80 mm).
Cuando la marcha lenta sea estable, cambia al trote.
w adelante s atrás a gira izq. d gira der. c marcha lenta x parar z acostarse + / - altura
Imágenes generadas con IA para mostrar el objetivo. Todavía no son fotos de un prototipo real.


Si una palabra te impide seguir leyendo, aquí encontrarás su significado.
| Término | Qué es |
|---|---|
| Servo | Motor pequeño que gira hasta el ángulo indicado (0 a 180°) y se queda en esa posición. |
| Horn | Brazo plástico que encaja en el eje del servo; la pata se atornilla a él. |
| Shield | Placa que se conecta encima del Arduino y añade conectores. |
| Jumper SEL | Pieza plástica del shield que conecta los 5 V del Arduino a los servos. Aquí se retira. |
| Bornera | Conector que sujeta el cable al apretarlo con un tornillo. |
| LiPo 2S | Batería de polímero de litio con 2 celdas en serie: 7,4 V nominales. |
| XT60 | Conector amarillo común en baterías LiPo; soporta una corriente alta. |
| UBEC | Regulador que reduce el voltaje de la batería a 5–6 V con corriente suficiente para los servos. |
| AWG | Medida del grosor del cable: cuanto menor es el número, más grueso es el cable (18 AWG es más grueso que 20). |
| Cojinete | Soporte en el lado opuesto al eje que permite que la pieza gire sin juego. |
| EEPROM | Memoria del Arduino que no se borra al apagarlo; guarda la calibración. |
| Sketch | Nombre del programa de Arduino (la carpeta con el archivo .ino). |
| Monitor Serial | Ventana de texto donde te comunicas con el Arduino por el cable USB. |
| Step-down | Regulador que reduce el voltaje (el UBEC es un step-down). |
| I2C | Conexión de 2 cables (A4 y A5 en el Uno) que usan sensores como la IMU. |
| IMU | Sensor que mide la inclinación y el giro (ej.: MPU-6050). |
| Jack DC / P4 | Conector redondo de alimentación del Uno y el enchufe que se conecta a él. |
| FQBN | Nombre completo de la placa para arduino-cli: arduino:avr:uno. |
| Cinemática inversa | Cálculo que transforma «dónde debe estar el pie» en los ángulos de la cadera y la rodilla. |
| Marcha lenta (creep) y trote | Formas de caminar: un pie en el aire a la vez, o dos pies en diagonal. |
Casi todos los problemas de un cuadrúpedo con servos se deben a la alimentación o a la calibración.
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| El Arduino se reinicia cuando se mueven los servos | Los servos consumen energía del Uno | Retira el jumper SEL, alimenta los servos solo con el UBEC y conecta GND común |
| El servo tiembla cuando está quieto | Fuente débil o cable delgado | UBEC de 5 A o más, cable 18 AWG en la línea de alimentación, batería cargada |
| El servo se calienta | Está forzando el límite | Ajusta con el comando o; comprueba que la pata no choque con el chasis |
| La pata se dobla hacia el lado incorrecto | Sentido invertido o tibia montada hacia atrás | Comprueba que la tibia apunte hacia adelante a 90° (paso 4); si es así, cambia el sentido en SENTIDO[][] |
| Camina torcido | Los lados están calibrados de forma distinta | Usa el comando m y luego iguala las patas con el comando o |
| Se tropieza | El pie sube poco | Aumenta ELEVA (constantes al principio de firmware/robo4/robo4.ino) |
| Se cae hacia un lado durante el trote | El paso es demasiado largo o rápido | Reduce PASSO o aumenta CICLO_TROTE |
| No carga el código | Bluetooth conectado a D0/D1 | Apaga el módulo durante la carga |
Todo cabe en los pines que quedaron libres en el Uno.