No coding, soldering or prior experience needed.

How are you building?
Pick one to see your steps.
A desktop or laptop with Chrome or Edge, to connect to your Pico. Keep this guide in one tab from step 02 to step 09, so the pairing scan can save your robot's Wi-Fi setup password.
A separate phone that passes the GrowBot check.
On that phone, open: growbot.dev/check
The status above checks this computer only. Run the phone check on the phone you’ll mount on the robot.
If browser USB setup is blocked, the manual Thonny option is in step 02.
Still stuck? info@growbot.dev · Ask on Discord
GPIO_PINS = {1: 15, 3: 13} in PicoRobotics.py (sockets 0 and 2). For ESP32, use the existing ESP32 build guide. This walkthrough shows Waveshare.In your kit
Body, power and tools
You add
Something is missing or broken. Email info@growbot.dev with a photo and your order number.
My Pico has no header pins. Get the version with headers already soldered on for this build.
Can I use SG90 servos? Use the linked MG90S pair; its metal gears and fit are tested here.
I have a different carrier board. Open “want to use another board?” above for the existing alternatives.
Still stuck? info@growbot.dev · Ask on Discord
Start with the Pico on its own. Leave the Waveshare aside.

Already installed? Skip to 2B.
RP2350.RP2350.No RP2350 drive. Unplug, hold BOOTSEL and reconnect. Use a data-capable USB cable in the Pico’s own port.
Still stuck? info@growbot.dev · Ask on Discord
Install MicroPython in 2A first. Disconnect this page from the Pico, then open Thonny.
Connect: Run > Configure interpreter > MicroPython (Raspberry Pi Pico). Select the Pico’s serial port (usbmodem… / COM…, or auto-detect).
Download the body kit. Open each file from your computer, then File > Save As > Raspberry Pi Pico:
PicoRobotics.py → PicoRobotics.pyact_engine.py → act_engine.pysecrets.example.py → enter your Wi-Fi name and password, then save as secrets.pyrelay_chip.py → main.pyRestart the Pico and read its actual pairing code in the Shell. Keep USB connected for step 03.
This route skips travel Wi-Fi (the robot's own setup network for new places). The USB installer adds it.
With Python 3 installed, run pip install mpremote. In the extracted kit folder, copy secrets.example.py to secrets.py and enter your Wi-Fi details. Close Thonny and disconnect the browser first.
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 mpremote repl
Read the pairing code in the output and leave USB connected.
Still stuck? info@growbot.dev · Ask on Discord
No Pico in the picker. Finish MicroPython installation in 2A, try a data-capable cable, and close Thonny or other USB tabs.
Connection not confirmed yet. Keep USB connected. Open “GrowBot already installed?” to restart and check, or copy diagnostics under Technical details.
Need to change Wi-Fi? Edit the network name and password, then use “Save Wi-Fi & install GrowBot”. This writes the credentials and GrowBot files again.
Network compatibility. Pico uses 2.4 GHz Wi-Fi. If your router has separate network names, use its 2.4 GHz name. A delayed or failed connection alone does not identify a password or band problem.
No pairing code appears. Open Technical details and copy diagnostics. If using Thonny, check its Shell.
Still stuck? info@growbot.dev · Ask on Discord
Leave USB connected.
Once online, continue to step 04.
Still waiting for online? Check the pairing code and USB power. Return to step 02 to check the saved connection.
Using the manual setup? Enter the actual code from Thonny or the terminal above.
The computer uses another network. That’s fine; both it and the Pico need an internet connection.
This checks the connection without moving the servos.
Still stuck? info@growbot.dev · Ask on Discord
Push the Pico into Waveshare, matching the USB marking.
Use the carrier’s power terminal, never the Pico’s own pins.
Left and right are the robot’s own. With the plate in front of you and the batteries at the bottom, they are exactly as marked here:
01
Leave the Waveshare switch OFF until step 05.
A part feels loose. Check the foam tape under the board and holder, and the glue or screws holding each servo.
My servo wires are different colors. Match the board labels: G = brown/black, V = red, S = yellow/orange/white.
The plug colors don’t match the labels. Keep power off and turn the plug around. Check that all three pins are covered.
Still stuck? info@growbot.dev · Ask on Discord
A good movement check does this quickly:
Try it one more time to confirm.
Nothing moves. Board switch on? Fresh batteries? Servos only ever move on battery, never on USB alone. On a carrier board other than the Waveshare or the Kitronik 5329, the driver may be talking to the wrong pins: see want to use another board? in the parts list.The kit’s Waveshare board needs no pin changes, so check that both battery wires are held tight in its screw terminal (4C).
Only one moves. Reseat the still one’s plug, and check it is in socket 0 or 1, no other socket does anything. Still dead? Swap the two servos between the sockets: if the fault moves with the servo it is the servo, if it stays put it is the socket.
They twitch and the board restarts. Weak power. Four fresh or fully charged AAs, or a 5-6 V supply that can give 2 A.
A servo buzzes hard or runs hot. Power off, check the plug isn’t shifted over by one pin.
It ran once and never again. The sequence only runs at power-on. Switch the board off, wait a second, switch it on.
Still stuck? info@growbot.dev · Ask on Discord
The movement check ends by parking both servos at 90°, so you attach the legs right after it.
Need help with the servo horn? Watch a builder do it.
Now switch the board off and on once more. This is what the movement check should look like, check your legs move the same way.
✓ Success looks like: right leg first, then left leg, then the two of them wiggling together in opposite directions.
Wrong leg first? Switch off, swap the two servo plugs, then switch on again.
A leg sits crooked at rest. Pop it off the shaft, rotate it one tooth, re-seat on the next 90° hold.
The leg works loose. The small screw is not optional.
A leg moves the other way to the video. The two servo plugs are swapped. Switch off, swap them between sockets 0 and 1, then switch on again.
It restarts part way through. Low batteries: the servos pull the voltage down and reset the Pico. Four fresh or fully charged cells.
Still stuck? info@growbot.dev · Ask on Discord
It won’t connect. Is the robot on, on batteries? The code must match step 02.
A leg runs out of taps. Its horn is a whole tooth off. Turn it one tooth on the shaft (step 06), then try again.
Still stuck? info@growbot.dev · Ask on Discord
Secure your phone with an elastic band or foam tape. Screen facing out, camera at the top, away from the batteries.
Common mistake: mounting it upside down. Put a small sticker at the top of the shell so you always remember.
On the phone that will ride the robot, scan this. It pairs the robot, brings this robot’s saved trim along (the newer saved trim wins), and saves its Wi-Fi setup password from this install. That saved password is its robot passport. After that, just open growbot.dev on that phone; it remembers.
Your code fills in here once step 02 or 07 has your pairing code.
Reading this on that phone? Open GrowBot here.
growbot.dev/v3/next.html?id=…&mode=legs
Each time you open GrowBot, it connects to its legs by itself.
In GrowBot, open Settings and tap Pair.
Still nothing? Switch the robot off, wait 5 seconds, switch it on, wait 20 seconds after its wiggle, then reload growbot.dev.
The robot remembers up to 8 Wi-Fi networks. Somewhere new, open GrowBot Settings and tap robot somewhere new?. The phone needs the passport saved from this install; the page guides you to join the robot’s setup network and enter the new Wi-Fi password.
Legs look uneven? Redo step 07, save after checking the legs, then scan this code again.
Still off, or a leg turns the wrong way? Optional fine-tuning tools.
| you did | which proved |
|---|---|
| computer installer check passed | this browser can offer USB setup; Pico access is checked when you connect |
| pairing code printed | this board has an identity; Wi-Fi and server connection are checked separately |
| Pico online check passed | the relay reports that board online; movement is checked later |
| both servos moved | power + wiring + ports correct |
| legs on at 90° | both legs start straight, so the walk begins from a known shape |
| right leg first, then left | each command reaches the servo it names |
| legs line up, seen from the side | trim saved: both legs match, so the walk goes straight |
| body assembled | ready to wake |
Anything on this list failing? Its step above has a "trouble with this step?" panel, and the 🤖 box at the top of the page knows this whole guide.
Special thanks to Jason Taylor for early contribution to this build.