ALANA: 3D Printable DIY Humanoid Robot With AI, Voice, and Gestures Made Under $70
by Shashwat Batish in Circuits > Robots
1032 Views, 12 Favorites, 0 Comments
ALANA: 3D Printable DIY Humanoid Robot With AI, Voice, and Gestures Made Under $70




Meet ALANA – My Most Advanced Humanoid Robot Yet
ALANA is a fully 3D-printed, general-purpose, life-size humanoid robot . The entire build cost me just around $70. That includes everything: 3D printing materials, electronics, and power supply.
Here's what she can do:
- Engage in natural, human-like conversation
- Gesture fluidly with 6 degrees of freedom in each arm, thanks to a custom mechanical design
- Autonomously manipulate objects on a table
- Recognize faces
- Entertain with a lively, quirky personality that feels truly interactive
Her arms aren't just for show — they’re powered by custom servo motors capable of lifting up to 500 grams at full extension. Not bad for a robot that costs less than the average phone charger.
At the core of ALANA’s hardware is an ESP8266 microcontroller, which handles motor control and basic sensor input. It communicates wirelessly with an external PC, which runs all AI processes — including a LLAMA 3 large language model(Qroq) for conversation, ElevenLabs for realistic speech synthesis and the Math for spacial awareness.
This instructable will focus more on the hardware part of Alana rather than software.
Supplies

parts to be printed:
Downloads
Print the Parts
I have provided all the main parts to be printed in 'Supplies'.
The parts were printed in the following Cura settings on my ender 3:
- layer height - 0.3mm
- 20% infill
- infill pattern - cubic
- support structure - normal
DESIGN CONSIDERATIONS
actuators
- Alana uses 10 rpm Johnson geared motor as it can provide a torque of 20kg-cm and has a stall torque of 120kg-cm while consuming 15W of power.
- The motor for the main servo can be replaced based on your preferences. For faster movements it is recommend to use 30-60 RPM motor and 10RPM for high torque applications.
shoulder servo motor (jhonson geared motor)
- The thin covering (part 5) over the potentiometer helps in adjusting the “centre” position by tilting the potentiometer spur gear slightly away from the motor shaft allowing it to slip over the main gear connected to the motor. After tilting the potentiometer, you can then put the potentiometer in the centre angle and let the arm rotate in the direction towards the centre position. Then u can release the potentiometer and ensure that it engages with the gear on the motor properly.
- A portion on the covering (part5) near the potentiometer is extruded out so that it is easier to swap the potentiometer by just losing the nut and pulling it out.
main servo motor (12v general geared dc motor)
- There is a 9mm clearance around the screw holes for M3 threaded inserts.
- Space is left on the 3d printed part to which the motor is mounted for securing the motor with screws.
- The position of the servo head can easily be seen through the hole above the potentiometer in the servo housing
control circuit
- The center position, extreme position and the sensitivity can be fine-tuned using trimmer potentiometers.
- More information on https://www.optolab.ftn.uns.ac.rs/index.php/education/project-base/284-diy-servo-motor
- use of readily available LM358 op amps.
- the circuit can be used with both Arduino based boards (5v) and esp32 based boards (3.3v). More information in basic circuit explanation
hardware
- For the power supply, Alana uses a Zebronics 450W SMPS. It provides 12V to the geared motors, 5v to the servo motor driver and wemos d1 mini and 3.3v to sensors or components which may be added in the future.
- Use of cheap structural material like PVC pipes.
firmware
- The servo motors are addressed as channels 1,2,3.... the desired angle and the channel is entered in the parameters.
- In def sc(channel, angle): , channel and angle are parameters. When calling sc(12, 180), 12 is the argument for channel, and 180 for angle.
Main Servo

.png)
Insert the 12V geared dc motor 10-60 RPM in part 1 as shown.
Using the nut provided with the motor, secure the motor ensuring not to over tighten. The orientation in which you insert the motor does not matter. Make sure the motor shaft is perpendicular to the surface of part 1
Main Servo

Insert the 100k potentiometer in part 1 as shown after soldering wires to the 3 pins. The middle pin will be the sens wire. You may need to clip off the extruding part on the potentiometer. Tighten it using the nut provided with the pot. Make sure that the knob is perpendicular to the surface of the part and aligned with the motor shaft. while assembling the servo motors, make sure that the potentiometer is in its center position.
Main Servo

Insert spur gear -1 and spur gear -2 on the motor shaft and potentiometer as shown.
Use M3 screws to secure the spur gear on the motor shaft.
Make sure to align both the spur gears as shown in the 2nd image. This helps in inserting the top cover and screws without interfering with the gear. you can do this by temporary unscrewing the nut attached to the motor and moving the actual motor until the spur gear aligns correctly.
At this point you would want to solder wires to the motor. Attach the 2 wires from the motor and 3 wires from the potentiometer to the female header with 6 pins leaving one pin in between(6 pins in total). Glue this header pin in the space shown in the image.
Main Servo

Insert the top and bottom covering (part 2 and 3). The wires coming from the motor will be inside the canal in part 3 as shown in image 4. Use M3 screws to secure.
Shoulder Servo

Insert Johnson geared dc motor into part 4 as shown making sure to align all the screw holes with the motor’s gear box
Shoulder Servo

Insert the 100k potentiometer inside the designated space in part 4 as shown.
Solder 3 wires onto the potentiometer with the middle one being the sens wire.
Use M3 screws to secure the plate (part 5) with the potentiometer housing on the motor. As mentioned in design considerations, the plate is thin so be careful while assembling or this 3d printed part might crack. Use the nut provided with the potentiometer to secure it with the plate.
- Unlike the main servo, the motor for the shoulder servo uses screws to attach to the housing.
- It is recommended to avoid using long M3 screws to secure the plate to the motor as the screws may interfere with the gears inside.
Shoulder Servo
.png)
Insert the spur gears (shoulder spur gear -1) on the motor shaft and the (shoulder spur gear -1) on potentiometer as shown. Make sure they engage perfectly.
Use M3 screws to secure the gear to the motor shaft.
- There is no special alignment of the gears for the shoulder servo unlike the main servo
Shoulder Servo

Insert the current assembly in part 6 as shown. Use M3 screws to secure. You might need add additional screws (use a soldering iron to insert the screws into the plastic).
Shoulder Assembly

Make sure to “centre” the motors before assembling. The instructions to that are mentioned here
Align part 7 and the shoulder servo motor as shown and use M3 screws to secure. Make sure that the servo head (spur gear) is completely flush with the part.
tip: the assembly with me more stable if you use threaded inserts instead of directly screwing into the plastic. HOWEVER, if you don’t have them you can insert small strands of pla fillament inside the screw hole and use a hot soldering iron to forcefully insert the screw.
Shoulder Assembly

Using the assembly created in the above step and an assembled main servo motor, align them as shown and secure using M3 screws. Make sure the servo head is completely flush with the surface of part 7
Insert part 8 in the circular part of the main servo as shown making sure that the servo is free to rotate. Secure using M3 screws. The circular part should stick out a bit. The assembly should look like as shown in the last image
Shoulder Assembly

Align part 9 and an assembled main servo motor as shown. Use M3 screws to secure the part with the servo
Shoulder Assembly

align the assembly made in step 3 and step 2 as shown and forcefully insert. Use m3 screw to secure as shown in middle image. there are 3 screws in the back of part 9. Only screw the last 2 holes as shown in the last image.
Elbow
.png)
Use part 10 and screw it down to the shoulder assembly making sure that it faces inwards as shown in the image. The angled cylinder plays a role in determining the length of the arm. You can read on how to change the arm size here:
Elbow

Insert a PVC pipe of desired length in part 10 as shown in image 1 (the blue rod in the image is in fact not an actual PVC pipe. Ignore it).
Insert part 11 in the PVC pipe as shown in middle image making sure that the cavity faces towards the shoulder servo motor as shown in the last image.
Part 11 is the housing for the futaba servo motor
Elbow

Insert futaba servo motor in part 11. It will be easier if you align the motor as shown in the first image and then push it in. the wires of the motor go inside a cavity in part 11 and come out of the circular hole
Glue or screw the servo horns provided with the servo on part 12.
First insert the back side of part 12 on part 11 and then forcefully push the servo horn on the servo. The final assembly should look like the 3rd image.
Forearm and Hand

Insert 3 mg90s servo in part 13 as shown. Use the screws provided to secure. Make sure to insert the servos in the correct position. You might need to create spacing for the wires depending on the design on the servo motor.
Forearm and Hand

Insert the 2 spur gears as shown. You need to “weld” the 1st spur gear (wrist spur gear 1) to the servo horn using a soldering iron and use a long M3 screw to secure the 2nd spur gear (wrist spur gear 1). Make sure that the gears engage and move properly. The 2nd spur gear glues to the hand
Forearm and Hand

Insert part 14 in the above assembly as shown. (The parts are friction fit)
In part 15, insert the servo horn provided with the mg90s servo motor and glue it.
- If you observe part 15 you will notice 2 holes in the wall of the part. facing this side up, press the servo horn down such that the 2 ends of the horn align with the 2 holes. Make sure that the horn faces the servo motor.
Insert this assembly in the servo motor as shown in the 2nd image. use the screws provided to secure.
the final assembly should look like the final image. make sure that the assembly can move freely.
Forearm and Hand

Glue the hand on the 2nd spur gear as mentioned in step 2 make sure that the canals on the hand faces opposite to the spur gears.
- the hand is print in place. The fingers move using a single servo motor with thin fishing wires. All 5 of the wires connect to the horn on the middle servo motor.
use another PVC pipe of desired length to connect the elbow assembly and the hand assembly together. Make sure everything moves properly.
Final Assembly

BASIC CIRCUIT EXPLANATION AND WORKING


components per circuit
- 470nF ceramic capacitor -3x
- 500 ohm trimming potentiometer -1x
- 100k ohm trimming potentiometer -2x
- LM358 op amp -2x
- 1k ohm resistor -3x
- 100k ohm -2x
- 33k ohm
- 4.7k ohm
- 8 pin IC socket -2x
- Male header pins
basic explanation
- The top section acts as a logic circuit that provides output signals based on the voltage difference between sens and ref. the sensory voltage (sens) comes from a 100k potentiometer. (the potentiometer used in main and shoulder servo motor)
- The bottom section is a PWM to analog voltage converter which takes in the PWM signal from Arduino, esp32 etc. and converts it into an analog voltage source which acts as the reference voltage.
working
- We can use both 5v and 3.3v boards with this circuit. For 5v boards, connect the 100k potentiometer in the servo motor to 5v from the Arduino itself and for 3.3v connect the 100k potentiometer in the servo motor with 3.3v.
- The 100k trimming potentiometer in the top section of the circuit (P3) adjusts the sensitivity (proportional gain) of the circuit. High sensitivity will make the servo jitter because of the backlash from the gears and low sensitivity will make the servo motor less accurate.
- The 500-ohm potentiometer adjusts the extreme position of the servo (0 degree)
- The 100k potentiometer in the bottom section (p2) adjusts the centre position of the servo (90 degree)
- External pins like sens and PWM are connected thru male header pins
CALIBRATE SERVO MOTORS
Calibrating the servo motors before assembling is important. This part includes fine tuning the sensitivity, centre position and extreme position
setup
- Make sure that the servo spur gear and potentiometer spur gear engage properly.
- Connect the control circuit with an Arduino or an esp32 with the PWM wire connected to any digital pin on the board using a jumper wire. (If you are using an esp32 power the potentiometer in the servo with 3.3v).
- Connect the potentiometer sens wire to the control circuit with a jumper wire. You might need to solder wire to the potentiometer if you haven’t done so while assembling.
- Connect the output pins (OUT 1 and OUT2) randomly to an H bridge motor driver. for LN298 motor driver, connect OUT1 and OUT2 to the IN1 and IN2. Order does not mater here as you will see
- Connect geared motor of the servo motor to the motor driver. polarity does not matter here. Power with 5v (for testing purposes)
- Open Arduino ide and upload a basic servo sketch to your Arduino board. Make sure to assign the correct digital pin in the sketch.
- Set the servo to move at 90 degrees.
- If the servo head does not stop moving after it reaches 90 degrees (90 degrees being the centre position of the potentiometer) disconnect the power supply immediately.
- Flip the direction of OUT1 and OUT2 on either the control circuit itself or the motor driver.
- Perform the instructions in step 7 again after reconnecting the power supply.
- If the servo head still does not stop moving after it reaches 90 degrees then replace the potentiometer and check the connections properly.
Wiring

The connection shown in the image is just for one of the self made servo motor. note that the same control circuit is used for both the main servo and shoulder servo. one of the motor driver can handle 2 servo motors. connect 2 of the control circuits to the motor driver as shown in the image
the microcontroller can be connected directly to the power supply (5v) using Vin pin.
Code (software)

I have provided the demo code for Alana which includes:
- the AI core (LLM + TTS) (alana.py)
- basic gestures (gestures.py)
- 2DOF inverse kinematics (ik.py)
- autonomous picking-placing objects(camgrid.py)
Note: you don't need a powerful computer to run the ai models. They are cloud based. You only need internet to use the APIs.