8 servos, um Arduino Uno e um shield. Peças, fiação, calibração e código prontos para ele ficar em pé e andar.

O robo4 é um plano completo para construir, em casa, um pequeno robô de quatro patas (uns 20 cm) que anda. Cada perna tem dois motores pequenos, chamados servos: um no quadril e outro no joelho. Quem controla tudo é um Arduino Uno com uma placa de encaixe (shield) por cima, onde os 8 servos são plugados. Aqui estão a lista de peças, os diagramas de fiação, o passo a passo de montagem e calibração, e o código que já compila. Serve para quem quer aprender robótica com as mãos; precisa de um computador, das peças da lista e de uma tarde para montar.
Duas juntas por perna é o mínimo para o pé subir, ir para a frente e descer. O resto é calibração e ritmo.
Quadril e joelho em cada perna (8 servos MG90S de engrenagem de metal). O pé faz um arco: sobe, avança e apoia.
O Sensor Shield V5 tem 3 pinos por porta: os servos plugam direto no D2 a D9. A força dos servos vem de uma fonte separada.
Cinemática inversa, trote, marcha lenta, giro e calibração salva na memória. Controle por letras no Monitor Serial.
Sete etapas, que viram os 10 passos do guia: bateria = passo 1, eletrônica = 2, servos em 90° = 3, pernas = 4 e 5, calibrar = 6 a 8, marcha lenta = 9, trote = 10.
O código pensa em milímetros: "pé 15 mm à frente e 85 mm abaixo do quadril". A cinemática inversa (lei dos cossenos) converte isso em dois ângulos.
90° no servo = coxa na vertical e joelho em ângulo reto. Quadril: 90 + sinal × ângulo + ajuste. Joelho: 90 + sinal × (ângulo − 90) + ajuste.
Na marcha lenta sobe um pé por vez (três no chão) e o corpo balança para o peso ficar sobre eles. No trote sobem dois pés em diagonal. Tudo atualizado 50 vezes por segundo.
Preços em reais são estimativas de outubro de 2026. Total básico: R$ 450 a 850, sem impressora 3D e sem os opcionais.

No celular, arraste a tabela para o lado para ver todas as colunas.
| Item | Qtd | Estimativa | Por que este |
|---|---|---|---|
| Arduino Uno R3 + cabo USB | 1 | R$ 50–130 | Cérebro do robô |
| Sensor Shield V5.0 para Uno | 1 | R$ 20–35 | Pinos S/V/G para plugar os servos e borne de força separado |
| Micro servo MG90S | 8 (+1 reserva) | R$ 18–30 cada | Engrenagem de metal aguenta o peso no joelho; o SG90 de plástico espana |
| Bateria LiPo 2S 7,4 V, 1000–2200 mAh, XT60 | 1 | R$ 70–140 | Alimenta servos e Arduino |
| UBEC / step-down 5–6 V, 5 A ou mais | 1 | R$ 20–45 | 8 servos puxam 4 a 6 A no pico |
| Porta-fusível de lâmina + fusível 7,5 A | 1 | R$ 8–15 | Logo depois do XT60: um curto não derrete fio nem trilha |
| Chave liga/desliga (≥ 5 A) | 1 | R$ 5–10 | Cortar tudo de uma vez |
| Alarme de tensão para LiPo (bipador) | 1 | R$ 8–15 | Apita antes de a bateria descer demais |
| Plugue P4 macho 5,5 × 2,1 mm com rabicho | 1 | R$ 5–10 | Leva a bateria ao jack DC do Uno (o shield cobre o pino VIN) |
| Fio 18 AWG vermelho e preto (~1 m) | 1 | R$ 8–15 | Linha de força bateria → chave → UBEC → borne |
| Carregador balanceado 2S | 1 | R$ 60–150 | LiPo só carrega com balanceador |
| Chassi + 4 coxas + 4 canelas | 1 jogo | R$ 10–40 | Acrílico ou MDF de 3 mm cortado pelo desenho com cotas, ou impresso em 3D com os arquivos STL (15 peças, incluindo 4 cantoneiras) |
| Pés de borracha, parafusos M2/M3, espaçadores, abraçadeiras, velcro | kit | R$ 30–60 | Fixação e aderência |
| Opcionais: Bluetooth HC-05, ultrassom HC-SR04, IMU MPU-6050 | — | R$ 50–80 | Controle pelo celular, desviar de obstáculo, equilíbrio |
Chave Phillips pequena, alicate de corte, multímetro e ferro de solda (só para o XT60 e a chave).
Arduino IDE ou arduino-cli (ferramenta de linha de comando do Arduino). Os comandos deste guia usam o arduino-cli.
# instala o arduino-cli (Linux/macOS; no Windows baixe em 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" # ponha esta linha no ~/.bashrc arduino-cli core update-index arduino-cli core install arduino:avr arduino-cli lib install Servo # Linux: permissão para usar a porta USB (saia e entre na sessão depois) sudo usermod -aG dialout $USER
Clones com chip CH340 aparecem como /dev/ttyUSB0 e, no Windows, podem pedir o driver CH340.
Baixe o repositório com os dois sketches: montagem e firmware.
git clone https://github.com/inematds/robo4 cd robo4
Os diagramas estão em SVG no repositório (guia/assets/). No celular eles ficam pequenos: toque em "Abrir em tela cheia". Para imprimir o desenho das peças em tamanho real, use as cotas escritas nele (em mm), não a escala da tela.
Troque /dev/ttyACM0 pela porta do seu Uno (no Windows, algo como COM3). arduino-cli board list mostra qual é.
Carregue a LiPo. Ligue bateria → chave → UBEC e meça a saída com o multímetro. Tem que dar entre 5 e 6 V. Só depois ligue qualquer servo.
Encaixe o Sensor Shield. Retire o jumper SEL. Com tudo desligado e sem bateria, ponha o multímetro em continuidade (o modo que apita) e encoste uma ponta num pino V de qualquer porta de servo e a outra no pino 5V do Uno (ou no pino 5V do shield): não pode apitar. Se apitar, o jumper ainda está ligando os dois (clones variam). Ligue o UBEC no borne dos servos. A lógica do Uno recebe a LiPo pelo jack DC (o conector redondo ao lado do USB), com um plugue P4 5,5 × 2,1 mm: centro positivo, fio vermelho no pino do meio. Confira a polaridade com o multímetro antes de encaixar.
O regulador do Uno precisa de uns 7 V no jack. Regule o alarme da LiPo para 3,5 V por célula (7,0 V no total): ele apita antes de o Uno começar a reiniciar.

Plugue os 8 servos nos pinos D2 a D9 (marrom no G, vermelho no V, laranja no S) sem os braços (horns, a pecinha plástica que encaixa no eixo) presos. Com a chave dos servos desligada, carregue o sketch de montagem pelo USB (o Uno pode ter um programa antigo que mexe nos pinos D2 a D9). Depois ligue a chave: os servos vão para 90° um por vez e ficam travados. Não gire o eixo com a mão enquanto estiverem ligados.
arduino-cli compile --fqbn arduino:avr:uno firmware/montagem arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno firmware/montagem
Corte as peças pelo desenho com medidas. Parafuse os servos do quadril nas janelas das paredes laterais, eixo para fora, e prenda o horn no topo de cada coxa: coxa na vertical, apontando para o chão. Os furos dos 2 parafusos do horn variam por fabricante: encoste o horn na peça, centrado no furo do eixo, e marque os furos com ele (furo central de 3 mm para o parafuso do eixo, furos de 1,5 mm para os parafusos do horn). Encaixe o servo do joelho na janela da coxa com o eixo para fora (o mesmo lado do quadril) e o corpo subindo pela coxa, voltado para dentro do robô. A canela vai no horn do joelho, do lado de fora da coxa, apontando para a FRENTE do robô em ângulo reto (vale para as 4 pernas). Se ela apontar para trás, o joelho dobra do jeito errado e o robô não fica em pé, e trocar o sinal no código não resolve. Se o horn não encaixar em ângulo reto exato, use o dente mais próximo: o resto se corrige no passo 7. Opcional: para menos folga, um parafuso M3 com porca travante (porca com anel de nylon que não solta) no lado oposto ao eixo, passando por uma segunda placa, faz de mancal.


Uno + shield em cima com espaçadores M3 de 25 mm (assim a placa passa por cima dos servos do quadril); bateria e UBEC embaixo com velcro. Prenda os cabos com abraçadeiras e deixe folga no joelho, senão o fio puxa quando a perna dobra.
O firmware tem a cinemática, as marchas e a calibração. Deixe o robô suspenso (sobre um pote, pernas no ar) na primeira vez. Sem calibração gravada ele liga em modo montagem, com tudo em 90°, e só fica em pé quando você mandar.
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).
Digite m para pôr tudo em 90°. Corrija a junta torta com o comando o <perna> <junta> <graus>, digitado de uma vez e com Enter (o arduino-cli monitor não mostra o que você digita; na Arduino IDE deixe o Monitor Serial em "Nova linha"). O valor substitui o ajuste anterior daquela junta, não soma: perna 0 a 3 (FE, FD, TE, TD), junta 0 = quadril, 1 = joelho, graus de −30 a 30. Grave com g na EEPROM (a memória do Uno que não apaga ao desligar).
m # todos em 90° o 0 1 -6 # joelho da frente esquerda: −6° (se piorou, use 6) p # mostra os ajustes g # grava na EEPROM (fica salvo ao desligar)
Digite x. As pernas vão aos poucos até a pose em pé (cada servo anda no máximo 5° a cada 20 ms, o que também poupa a fonte). As quatro devem dobrar igual. Se alguma dobrar para o lado errado, troque o sinal dela em SENTIDO[][] no código, compile e carregue de novo.
// firmware/robo4/robo4.ino const int8_t SENTIDO[4][2] = {{1, -1}, {-1, 1}, {1, -1}, {-1, 1}};
Com o robô suspenso, digite c (marcha lenta, em inglês creep) e confira a ordem: trás esquerda, frente esquerda, trás direita, frente direita. O corpo balança para a frente e para trás: é de propósito, para o peso ficar sobre as três pernas no chão. Depois ponha no chão.
BALANCO só leva o corpo para a frente e para trás. Se tombar para a frente ou para trás, aumente BALANCO (12 → 18) ou diminua PASSO. Se tombar para o lado, o que resolve é baixar a altura com - ou afastar as pernas (base mais larga que 80 mm).
Com a marcha lenta estável, passe para o trote.
w frente s ré a gira esq. d gira dir. c marcha lenta x parar z deitar + / - altura
Imagens geradas por IA para mostrar o objetivo. Ainda não são fotos de um protótipo real.


Se uma palavra travou a leitura, ela deve estar aqui.
| Termo | O que é |
|---|---|
| Servo | Motor pequeno que gira até um ângulo pedido (0 a 180°) e fica parado ali. |
| Horn | Braço plástico que encaixa no eixo do servo; é nele que a perna é parafusada. |
| Shield | Placa que encaixa por cima do Arduino e acrescenta conectores. |
| Jumper SEL | Pecinha plástica no shield que liga o 5 V do Arduino aos servos. Aqui ela sai. |
| Borne | Conector com parafuso onde o fio é preso apertando. |
| LiPo 2S | Bateria de lítio-polímero com 2 células em série: 7,4 V nominais. |
| XT60 | Conector amarelo comum em baterias LiPo, aguenta corrente alta. |
| UBEC | Regulador que baixa a tensão da bateria para 5–6 V com corrente suficiente para os servos. |
| AWG | Medida de espessura do fio: quanto menor o número, mais grosso (18 AWG é mais grosso que 20). |
| Mancal | Apoio do lado oposto ao eixo que deixa a peça girar sem folga. |
| EEPROM | Memória do Arduino que não apaga ao desligar; guarda a calibração. |
| Sketch | Nome do programa do Arduino (a pasta com o arquivo .ino). |
| Monitor Serial | Janela de texto onde você conversa com o Arduino pelo cabo USB. |
| Step-down | Regulador que baixa a tensão (o UBEC é um step-down). |
| I2C | Ligação de 2 fios (A4 e A5 no Uno) usada por sensores como a IMU. |
| IMU | Sensor que mede inclinação e giro (ex.: MPU-6050). |
| Jack DC / P4 | Conector redondo de energia do Uno e o plugue que encaixa nele. |
| FQBN | Nome completo da placa para o arduino-cli: arduino:avr:uno. |
| Cinemática inversa | Conta que transforma "onde o pé deve estar" nos ângulos do quadril e do joelho. |
| Marcha lenta (creep) e trote | Jeitos de andar: um pé no ar por vez, ou dois pés em diagonal. |
Quase todo problema de quadrúpede com servo é energia ou calibração.
| Sintoma | Causa provável | O que fazer |
|---|---|---|
| Arduino reinicia quando os servos mexem | Servos tirando energia do Uno | Jumper SEL fora, servos só pelo UBEC, GND comum |
| Servo treme parado | Fonte fraca ou fio fino | UBEC de 5 A ou mais, fio 18 AWG na linha de força, bateria carregada |
| Servo esquenta | Forçando contra o limite | Ajuste com o comando o; veja se a perna não bate no chassi |
| Perna dobra para o lado errado | Sinal invertido, ou canela montada apontando para trás | Confira se a canela aponta para a frente em 90° (passo 4); se sim, troque o sinal em SENTIDO[][] |
| Anda torto | Lados calibrados diferente | Comando m, depois iguale as pernas com o comando o |
| Tropeça | Pé sobe pouco | Aumente ELEVA (constantes no topo de firmware/robo4/robo4.ino) |
| Cai para o lado no trote | Passo longo ou rápido demais | Diminua PASSO ou aumente CICLO_TROTE |
| Não carrega o código | Bluetooth ligado no D0/D1 | Desligue o módulo durante o upload |
Tudo cabe nos pinos que ficaram livres no Uno.