Introduction: Controllable 1/11 Gardener Type Robot Soldier
I love the movie "Castle in the Sky" which is commonly called "Raputa". In the movie, there are many interesting machines. I especially like robot soldiers. I think it seems like they are driven by an entirely different technology from the current one. There are two types of soldier robots. One is for fighting, and the other is for taking care of the garden. I prefer the gardener type, because it's very peaceful and gentle. It looks nostalgic despite being made with amazing technology. (Actually I don't think the gardener type is a soldier, but it is called "robot soldier".)
I wanted a controllable toy of this robot such as the way star wars fans want controllable BB-8 or R2-D2 toys. Some action figures are sold in some stores, but I couldn't find any controllable toys in any stores. So I decided to make one myself.
I'll share how I made it. To be honest, I don't think everyone who reads this will be able to make one. The model has some difficulties in 3D printing and assembling parts. But if you are experienced, maybe you can make one cooler than mine. Anyway I hope you enjoy reading this!
Robot Functions
- to raise and lower the arms
- to turn the head
- to blink LEDs on the head
- to make a beep
- to walk forward and backward (To be accurate, the legs move, but I cannot say it can walk for now.)
Controller
About the controller, please see my other project "Reasonable DIY Wireless Controller".
Supplies
Robot
- MCU: ESP32 DevKitC V4 (×1)
- RC servo motors: MG90S (×2), Powe Pro SG90 (×1)1
- DC motor: Tamiya 70245 Mini Motor Slim Gearbox (×1)
- Motor driver: Pololu DRV8835 Dual Motor Driver Carrier (×1)
- LED: pre-wired SMD LED, RED (×2)
- Speaker: passive buzzer module (×1)
- Battery: LiPo, 750mA, 3.7V, with protection circuit (×1)
- Connectors for battery (×1)
- DC-DC converter: step up, output 5V ~480mA2(×1)
- Power switch: slide, SPDT (×1)
- Rivets: Tamiya 3mm Push Rivet Set, Φ3×8mm (×4)
- 3D printer filament: PLA, 1.75mm, black
- Electric cables, header pins and sockets
- Wires: clear
- Screws and nuts: M2×6mm (×2), M2×8mm (×7), M2.5×6mm (×2), M2.5×10mm (×6), M3×10mm (×2)
- Moss: Miniatures static grass
- Paint: Liquitex® Professional Acrylic Gouache Paint, Turner acrylic gouache set
Notes:
- Many sellers sell various (fake?) SG90s and MG90Ss. They might work well but might have slightly different dimensions. I designed the motor holder for motors that I bought.
- This DC-DC converter module may not be suitable for this project. Some converters didn't work well. I think that contributing factors might be the module's quality variance, higher current requirements than I expected during BLE connection, or my poor soldering. I'm planning to change it to Adafruit MiniBoost 5V @ 1A - TPS61023 like the controller project.
Tools
- 3D printer: Flashforge Adventurer 4
- Screwdrivers
- Soldering iron
- Hot glue gun
- Paint brushes
- Hand drill
Software
- Arduino IDE
- Fusion360
Step 1: Mechanism
Head
A SG90 motor connects directly to the neck. The working range is ±90°.
Arms
When the MG90S motor pulls the wire through the arm, the arm raises, and when it loosens, it lowers.
Legs
A DC motor connects to the legs using each slider-crank linkage as shown in the attached GIF. Also, using two wires per leg, when the leg floats, it opens outward; when it lands, it closes inward.
Step 2: 3D Printing
Print all files. Please note the following:
- Print two copies of each file for ArmBone.stl, Sholder.stl, SholderBase.stl and ClankPlate.stl. These files are exactly the same on the right and left.
- Please be careful about the printing direction for some parts to avoid supports. Especially bodyB.stl has two pocket-like structures for screw nuts. LegR/L.stl have narrow holes for wires. So I recommend to print it with a posture that does not require support inside the pockets and holes.
Attachments
head.stl
neck.stl
jaw1.stl
jaw2.stl
neckHorn.stl
palmR.stl
thumbR.stl
finger1R.stl
finger2R.stl
finger3R.stl
finger4R.stl
palmL.stl
thumbL.stl
finger1L.stl
finger2L.stl
finger3L.stl
finger4L.stl
Shoulder.stl
ShoulderBase.stl
ArmBone.stl
Arm1fR.stl
Arm2fR.stl
Arm3fR.stl
Arm4fR.stl
Arm5fR.stl
Arm6fR.stl
Arm7fR.stl
Arm8fR.stl
Arm1bR.stl
Arm2bR.stl
Arm3bR.stl
Arm4bR.stl
Arm5bR.stl
Arm6bR.stl
Arm7bR.stl
Arm8bR.stl
Arm1fL.stl
Arm2fL.stl
Arm3fL.stl
Arm4fL.stl
Arm5fL.stl
Arm6fL.stl
Arm7fL.stl
Arm8fL.stl
Arm1bL.stl
Arm2bL.stl
Arm3bL.stl
Arm4bL.stl
Arm5bL.stl
Arm6bL.stl
Arm7bL.stl
Arm8bL.stl
LegR.stl
footR.stl
footpinR.stl
LegLinkR.stl
LegCoverR.stl
LegL.stl
footL.stl
footpinL.stl
LegLinkL.stl
LegCoverL.stl
ClankPlate.stl
LegLinkMotorL.stl
LegLinkMotorR.stl
ButtF.stl
ButtB.stl
motorHolder.stl
armHolder.stl
bodyF.stl
bodyB.stl
BreastR.stl
BreastL.stl
Step 3: Painting (optional)
Paint before assembling as you like. Sand the surface before painting as needed. Don't forget to paint the rivets. I used acrylic gouaches. For the first time tried weathering and adding moss.
Step 4: Assembling 1
Assemble the following components. Figures show basically the right side parts. About the left side parts, replace "R" in the STL filenames with "L" and make it symmetrical.
- Head: Attach two LEDs inside "head" using a hot glue gun. Then assemble the head as shown in Fig. 1. LED leads are threaded through the hole of the "neck".
- Hands: Assemble the right hand as shown in Fig. 2. Assemble the left hand in the same way.
- Arms: Thread the wire through the front of parts "ArmBone", "Shoulder" and "ShoulderBase". Don't tie the wire at this step and leave the wire longer. And assemble the right arm as shown in Fig. 3. Assemble the left arm in the same way.
- Arms and Hands: Attach the right hand component to the right arm as shown in Fig. 4. Assemble the left side in the same way.
- Legs: Assemble the right leg as shown in Fig. 5. Assemble the left leg in the same way.
- Leg Motor Component: Attach "LegLinkMotorR", "LegLinkMotorL", to the DC motor using screws. Attach two "ClankPlates" to the DC motor shaft. The left and right "ClankPlates" should have a phase difference of 180°. Then attach "LegLinkR", "LegLinkL", to the "LegLinkMotorR", "LegLinkMotorL" and "ClankPlates" using rivets as shown in Fig. 6.
- Butt: Thread the four wires through the four holes of "LegLinkMotorR/L". Don't tie the wires at this step and leave the wires longer. Then attach the "Leg Motor Component" to the "ButtF" using screws as shown in Fig. 7.
- Inside Body: Assemble the "ButtB", "motorHolder" and "armHolder" using screws as shown in Fig.8.
- Motors: Attach the "neckHorn" to the SG90 motor horn using screws. The SG90 motor horn holes for the screws need to be widened using a drill. Use the one side horn for the MG90S or cut the one side of the horn. Attach three motors to "motorHolder" using screws as shown in Fig. 9.
- Switch: Attach the switch to the "bodyB" using a hot glue gun as shown in Fig. 10. Be careful not to apply too much glue as the switch will not work well.
Step 5: Wiring
Confirm the available space for the electronic components and how to route the wire. Solder and wire all the electronic components according to the schematic diagram. The power switch is located on the back of the robot, so be careful to route the wiring through the back of the robot. I highly recommend using connectors for ease of assembly. Please see some pictures attached as an example.
Step 6: Code
Code the MCU as you like. As a sample I attached my code. The robot and the controller communicate using BLE. The robot is a BLE peripheral device, and the controller is a BLE central device in my code. Upload BLEControllerCentral.ino to the controller MCU when robotSoldierPeripheral.ino is used for the robot. I recommend changing the UUIDs.
See my controller project to know how to make a controller. BLEControllerCentral.ino is exactly the same as the code in that project.
Step 7: Assembling 2
Assemble the following components.
- Attach the right arm components to the "armHolder" using screws as shown in Fig.11. Attach the left arm components in the same way.
- Tie the wire to the MG90S motor horn. Before tying, set the motor horn to the loosest position. For my code as shown in Step 6, the initial position after 'power on' is the loosest position as shown in Fig.12. Check the movement of the arm after tying. You can rotate the motor easily by hand when the power is off.
- Attach the "bodyB" to the "motorHolder" using screws as shown in Fig. 13.
- Put and connect all of the electronic components into the robot as shown in Fig. 14.
- Attach the head component to the "neckHorn" as shown in Fig. 15.
- Attach the "BreastR" and "BreastL" to the "bodyF", and then the "bodyF" to the robot as shown in Fig. 16.
- Attach the leg component to the robot as shown in Fig. 17. The parts "LegCoverR/L" tend to come off easily, so you can use glue after doing the next step.
- This is the hardest step:-( Thread the wires tied to "LegLinkMotorR/L" through the "LegR/L" as shown in Fig. 18. Tie the wire so that the leg opens outward when the foot floats and closes inward when the foot lands. Rotating the DC motor is needed to adjust the wire length.
Step 8: Enjoy!
Enjoy controlling the robot and reenact your favorite scenes!















































































