Build it yourself

Build him yourself.

Everything is here. The parts list, the wiring, the files, the firmware. Two servo legs, a phone for a brain. No terminal, no coding, no prior hardware needed. Nothing to solder.

≈ 30 MIN · NO SOLDERING

BUY THE $99 KIT →
The finished body: two servo legs, a battery pack, and your phone as the whole mind

two legs, a battery, and your old phone

Stuck at any point?

Copy this file into ChatGPT, Claude, or any AI and ask it. It knows the whole build, every step on this page.

01

What you need

Every link below goes straight to the part. You print or cut the shell yourself.

GROWBOT BODY BUILD · PARTS LIST

1 ×Raspberry Pi Pico 2 Wthe little board that drives his legs. Already have an ESP32? There is a community ESP32 guide.≈ $7
2 ×MG90S micro servosmetal gear. These are his hips. SG90s work but are weaker.≈ $8
1 ×connections, pick oneeasiest: a Pico carrier board (≈ $13), the servos plug straight in. Or a mini breadboard and jumpers (≈ $5) if you want to wire it yourself.≈ $13
1 ×shell and two legsDownload the STL files. Plain PLA, no supports, no glue. No 3D printer? Cut them from any flat material with this template.free
1 ×two-sided foam tapecheap sticky foam. Holds the phone and the battery pack on.≈ $5
4 ×AA lithium batteriesthe 1.5 V single-use kind, plus a holder with a switch (≈ $3). Plain alkalines run it too: heavier, weaker legs, fine to start.≈ $15
1 ×an old phonethe one in your drawer. His face and his brain.free
Which battery should I get?

They all need ~5-6 V and at least 2 A. The servos spike when they move, so a weak supply browns out the Pico: the legs twitch, then it resets.

The main pick, no solder. Four AA lithium cells (Energizer Ultimate type, the 1.5 V single-use kind) in a holder with a switch. Strong fast legs, hours of hard play, and it stays strong even when a leg gets grabbed or the pack runs low.

Exactly these. NOT "rechargeable lithium" or USB-rechargeable 1.5 V AAs, they cut out the moment the legs push hard. And never 3.7 V "14500" AA-size cells: four of those will destroy the board and the servos. Plain alkaline AAs are fine to start, they are heavier and fade sooner. Swap all four when the walk goes lazy.

Advanced, compact and rechargeable. A 1S LiPo, 1000 mAh or more plus a 5V/2A charge-boost board (example board, or search "5V 2A lithium charge-boost / IP5306"). Charges over USB, puts out a stiff 5 V. This one needs a little soldering. The boost board's battery input is for a single 3.7 V LiPo only, never wire AA cells into it.

Shortcut: a bare 1S LiPo straight in, no board, also runs it, legs a bit weaker. Recharge it with a ~$2 TP4056 USB-C module and never drain it too low.

Already own a power bank? A small 5 V / 2 A USB power bank works. Neatest is a solderless USB-C to screw-terminal adapter (~$10, pick one that says "C-to-C compatible / 5 V output"), or cut a spare USB cable and strip the red (+5 V) and black (GND) wires into the board's power input, ignoring the data wires. Legs are a bit softer at 5 V, and some banks switch themselves off when the robot rests.

The build is solder-free with 4×AA (the main path) or a power bank and adapter. The LiPo and boost board is the compact rechargeable upgrade.
02

Power & signal

One rule, and it is the only rule that can cook something: the servos draw power from the battery rail, never from the Pico's pins.

POWER IN 4×AA lithium or LiPo + boost + RAIL 5-6 V ≥ 2 A GND tied PICO 2 W logic + Wi-Fi 2× SERVO MG90S / SG90 GP0 GP1 signal solid = power · dashed = signal only GND, tie together: battery − · Pico GND · both servo −

FIG. 1. Carrier board (the easy path): the board already is this circuit. Screw the battery holder's red wire into its + power terminal, black into −, done. Direct wire (advanced): you build this circuit yourself, wiring map in step 03.

03

Connect the servos

Two ways. Pick one.

1 · Easy · carrier board

The front of the robot is the phone screen, mounted with the camera up top. That one choice fixes left and right, and they are the robot's left and right, looking forward from its own screen.
Orientation: L and R are the robot's own sides, top is up when it stands, batteries ride the bottom

FIG. 2A. L and R are the robot's own sides. TOP is up when it stands, batteries ride the bottom.

Mount the two servos flat, shafts pointing out, then plug them into the board:

  • left servo → port 1
  • right servo → port 3
  • leave port 2 empty, it is dead

Each plug: orange wire on SIG, brown on GND. The board prints both.

Now test it. Power the robot off, then on, and watch the wake-up wiggle: it moves the right leg first. If the left twitches first, swap the two plugs and you are set.

2 · Advanced · direct wire, no board

Signal and ground only, on the Pico's top-left corner, USB at the top:

PIN 1 · GP0 left signal (orange)
PIN 2 · GP1 right signal (orange)
PIN 3 · GND both grounds (brown)

Both red + wires go to the battery rail (FIG. 1), never a Pico pin. This path is not yet hardware-tested.

Board compatibility

Tested: Kitronik Robotics Board (5329), plug and play. This is what the guide uses.

Other PCA9685 boards (Waveshare Pico Servo Driver, or a generic PCA9685 breakout): auto-detected if wired to GP8/GP9, otherwise set the pins and address at the top of PicoRobotics.py.

ESP32: works, see the community ESP32 guide by olie-o.

Direct-wire, or another controller (Pi, other Wi-Fi MCUs): experimental.

04

Assemble the body

Board on one side, servos flat in the middle with the shafts pointing out, power pack on the other.

Body layout: board on one side, servos flat in the middle with shafts out, power pack on the other

FIG. 3. Leave the legs off, they go on at 90° in step 06.

Battery pack at the bottom when it stands, screen and camera facing up.
05

Flash & install

The only computer step, on a laptop or desktop. Your phone is the brain later. Two stages: first MicroPython goes on the board, then GrowBot's code.

↓ DOWNLOAD THE KIT (FIRMWARE, RUNTIME & 3D PRINTS)

Stage 1 · Put MicroPython on the Pico

Once only. Skip it if the board already runs MicroPython. Hold the white BOOTSEL button, plug in USB, let go. A drive called RP2350 appears.

Hold BOOTSEL, plug in USB, let go

FIG. 4. Hold BOOTSEL · plug in USB · let go.

Drag the MicroPython runtime (.uf2) onto that drive. It reboots and the drive vanishes. Now it runs MicroPython. This is the only drag step: after it, the Pico is not a drive, so the code loads a different way.

Stage 2 · Add your Wi-Fi and GrowBot's code

The robot joins your Wi-Fi so your phone can reach it. This installs three files, PicoRobotics.py, act_engine.py and the robot program relay_chip.py (saved as main.py), plus your network in secrets.py.

2.4 GHz only. That is the Wi-Fi band, not your internet type: 5G home, fibre and cable all work. Most routers broadcast a 2.4 GHz network. If it will not connect, open your router's admin page (often 192.168.1.1, or your provider's app) and either turn off "band steering / smart connect" so 2.4 GHz gets its own name, or add a separate 2.4 GHz network.

Thonny, a free app, no terminal

A free editor for these chips: thonny.org. Unzip the kit first.

  1. Open Thonny, then bottom-right, pick interpreter MicroPython (Raspberry Pi Pico).
  2. File → Open PicoRobotics.py (in firmware/) → Save as… → Raspberry Pi Pico, same name.
  3. Same for act_engine.py.
  4. Open secrets.example.py, type your Wi-Fi name and password, → Save as… → Raspberry Pi Pico, name it secrets.py.
  5. Open relay_chip.py → Save as… → Raspberry Pi Pico, name it main.py.
  6. Unplug and replug. In the shell, watch for PAIRING CODE: gb-… That is your code for step 08.
Command line, mpremote

Needs Python 3, then pip install mpremote. First copy secrets.example.py to secrets.py and put your Wi-Fi in it.

mpremote cp PicoRobotics.py :PicoRobotics.py mpremote cp act_engine.py :act_engine.py mpremote cp secrets.py :secrets.py mpremote cp relay_chip.py :main.py mpremote reset

After the reset, the serial output prints PAIRING CODE: gb-…, your code for step 08.

One-click install from the browser

Brit's flasher writes your Wi-Fi and all the code over USB in a single click, no Thonny, no terminal. It runs on his site because it talks to the board through your browser's serial port, and we have not rehosted it here without hardware to test it on. Desktop Chrome or Edge only, it is not available on iPhone, iPad, Safari or Firefox.

Open the one-click flasher ↗

Your Pico's battery can be on or off for this. USB powers it while you flash. The legs only move on battery, step 06.
06

Center & attach the legs

Unplug USB and power on the battery. On every power-up the robot runs a quick leg check:

  1. CENTER, both to 90° (straight out)
  2. RIGHT, right leg only (port 3)
  3. LEFT, left leg only (port 1)
  4. BOTH, both sweep at the same time
  5. HOLD, parks both at 90° for a moment, then relaxes and joins your Wi-Fi

Now attach the legs. No glue. Each leg has a slot for a servo horn, the plastic arm that came with your servo. Drop the horn into the slot, sit the leg on the servo shaft pointing straight out, then screw it down tight with the small screw from the servo bag.

The horn sits in the leg slot, screwed tight

FIG. 5. Horn sits in the slot. Screw it tight.

The leg on the servo, pointing straight out

FIG. 6. Leg on the servo, pointing straight out.

The servos park at 90° during the check, so a leg screwed on straight now is straight for the walk. Ended up crooked? Pop the horn off the shaft and re-seat it a tooth over. Cut your own legs instead of printing them? Those have no slot, so glue that leg to a horn instead.

07

Verify

Power-cycle and watch the legs run the four-step check again.

SYMPTOM FIX
nothing moves Power on? (battery and switch). Is PicoRobotics.py on the Pico?
only one leg moves Reseat the still leg's plug. The legs use GP0/GP1, ports 1 and 3.
"RIGHT" waves the LEFT leg The two servo plugs are swapped.
a leg sits crooked at rest Screwed on off-90°. Pop it off and re-seat it while it holds 90°.
buzzing or jittery Weak power. Use fresh 4×AA (lithium best) or a solid 5-6 V, 2 A supply.
TABLE 2. Both legs straight at rest, even sweeps: done.
08

Connect your phone

Your phone becomes the brain, the voice, the face and the walking. It finds the robot by its pairing code through the cloud, so the phone does not need to be on the same Wi-Fi. Cellular works too.

  1. Battery on. After the leg check it joins your Wi-Fi, about 10 seconds.
  2. On your phone, open the controller.
  3. Type your pairing code gb-… from step 05, then Wake robot.
  4. A green dot means it is connected. Tap Connect, then wiggle, and the legs move. Manual, Policy and voice are now live.
▶ OPEN THE CONTROLLER
No green dot?

Give it ~20 seconds after power-on. Check the robot's network is 2.4 GHz and that the code matches, all lowercase, since phone keyboards auto-capitalize. The phone itself does not need the same Wi-Fi. Power-cycle the robot to re-show the code on serial.

Why is the whole thing free?

Because I want him to exist more than I want to own him. The parts are cheap and off the shelf, the files are up there, and nothing here is a secret. If you have a printer and an afternoon, you do not need me at all.

The kit is for the other case: when you would rather not spend a week sourcing servos and discovering which AA batteries brown out the board. That is all you are paying for. The sourcing, and my mistakes already made.

BritBRIT CRUISE

The files are all there.
Go make one.

If you would rather skip the sourcing, the Founder Batch kit has every part in one box, numbered, for $99. Same robot, same free software, none of the shopping.

SEE THE $99 KIT →

Questions or stuck? info@growbot.dev or join the Discord. Some parts links are Amazon affiliate links, so a build helps fund the next one at no cost to you.