YOU CAN 3D PRINT A ROBOT SNAKE THAT SLITHERS LIKE THE REAL THING
A 3D-printed snake with 16 segments that slithers across the floor using real serpentine motion, driven by cheap micro servos.
by mvipin
RoboticsWorkshop
Built withArduino3D printing
- difficulty
- ●●●○○
- time
- a weekend
- license
- MIT
- repo
- repo ACTIVE5 stars
●●●○○ · a weekend · MIT · 5 stars · repo ACTIVE
WHAT YOU’LL NEED
Jump to section
COMPAREE VERDICT
SlitherBot is a genuinely impressive biomimetic robot that does what the video shows: it slithers. The serpentine motion comes from phase-shifted servo movements coordinated by an Arduino, and the effect is convincing. The build is not trivial — you are printing 16 identical segments, installing a servo in each one, threading power and signal wires through the entire length, then tuning the motion parameters until it moves smoothly. The single biggest pain point is that 16 servos means 16 potential points of failure: one servo with a slightly different center point or a weak joint will make the snake move unevenly, and you will spend Saturday afternoon on calibration. The TPU skin is optional but makes a huge visual difference; without it you are looking at a chain of plastic boxes. If you have never worked with servo arrays before, expect the wiring and the PCA9685 setup to take longer than the print. The payoff is a robot that genuinely impresses anyone who sees it move. This is not a beginner project, but it is a weekend build for someone comfortable with Arduino and patient with mechanical tuning.
IN THE REPO
GOOD TO KNOW
- —Printable parts (16 ribs, head, tail electronics housing, wheels and TPU skin) are on Thingiverse; the GitHub repo holds the Arduino code and the documentation.
- —Full Arduino code provided for serpentine motion control with configurable wave parameters.
- —Bill of materials lists 16× MG90S micro servos, Arduino Nano, PCA9685 servo driver board, and TPU filament for the flexible skin.
- —README includes assembly instructions, wiring diagrams, and calibration guidance.
- —Licensed under MIT — commercial use allowed.
- —No prebuilt circuit board; you wire the servo driver to the Arduino yourself using jumper wires.
Parts to buy
7 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
Can I build this?
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
Videos
The project's demo video, linked from the README, shows SlitherBot's serpentine motion; build details are on the README and the Hackaday.io project page.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 1.Print one body segment first and test-fit a servo(Make sure your printer tolerances work before printing all 16.)
- 2.Order servos and the PCA9685 driver board (MG90S servos are cheap but quality varies by supplier; consider ordering a couple of spares.)
- 3.Read the assembly guide and wiring diagram (Wire routing is the trickiest part; understand the path before you start threading cables.)
- 4.Flash the Arduino code and test with one servo(Verify the PCA9685 library and I2C communication work before full assembly.)
KNOWN ISSUES
- Buying servos without checking center calibration first — a batch where half the servos have different zero points will cost you hours of frustration. Test them individually before installation.
- Not leaving enough slack in the wiring between segments — the snake needs to flex, and taut wires will either break or restrict motion.
- Skipping the single-segment test print — if the servo does not fit snugly or the joint is too loose, you will only discover this after printing all 16.
- Underpowering the servo array - 16 servos moving at once need a solid supply; the design uses a 2S LiPo through an MP1584EN buck converter set to 5 V. If the snake jitters or moves erratically, check that the battery is above 7 V and the buck output is 5 V.
- Trying to tune motion parameters without understanding the phase offset logic — the wave propagates through servo positions in sequence, and random tweaking makes it worse, not better.
- Printing the TPU skin before the mechanics work — get the snake moving smoothly with bare segments first, then add the skin as a final cosmetic step.
Can I use different servos?
Yes, but stick to micro servos in the 9g class. Larger servos will not fit the printed segments, and weaker ones may struggle with the snake's weight.
Do I need the TPU skin?
It is not what makes it move — the passive wheels with rubber-band traction under each rib do that. The TPU structured skin is a flexible covering that makes the finished robot look far more organic; get the snake moving first, then add it.
How fast does it move?
Slowly - this is serpentine locomotion, not a racing robot. The README gives no speed figure; the default wave runs at 1 Hz with 30 degrees of swing, both adjustable in the code.
Can I control it remotely?
The base code has no remote control, but it is autonomous: an infrared sensor in the head detects obstacles and the snake backs away and turns. Adding Bluetooth or WiFi control is up to you.
Community builds
No community builds yet — be the first, we feature the best ones.
Discussion1
FROM THE COMPAREE TEAM
Sixteen MG90S servos in a chain, each with its own offset to trim — but the result is a robot that moves like a living thing. Would you tackle this build, or does the servo count put you off?
mvipin
Created by mvipin as an exploration of biomimetic robotics and articulated mechanism design. The project demonstrates how distributed servo control can replicate natural motion patterns using simple, inexpensive hardware.
DISCLAIMER
- Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
- Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
- Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.
CompareeTEAM2mo agoedited
Practical notes from our verification: the GitHub repository holds the README and a single Arduino sketch (serpentine.ino); the STL files are on Thingiverse and there is also a Hackaday.io project page. The README itself is detailed: a full component list (16 MG90S micro servos, Arduino Nano, PCA9685 servo driver, MP1584EN buck converter, 2S LiPo, IR proximity sensor), I2C wiring, print settings, and step-by-step assembly. The creator's demo video on YouTube is linked from the README. The single biggest practical point is servo calibration: the troubleshooting section says uneven movement or a snake that curves to one side is fixed by trimming individual offsets in the offset[] array and checking horn alignment, so expect to spend time on it. Locomotion relies on passive printed wheels with rubber-band traction, and the skin is a separate TPU print with an orthotropic structured pattern inspired by Disney Research, after fabric, silicone and plate attempts failed. Only serpentine motion is implemented; other gaits are listed as future work. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.