Remote Controlled Dalek (Doctor Who)

by DmitryM8 in Circuits > Robots

216 Views, 5 Favorites, 0 Comments

Remote Controlled Dalek (Doctor Who)

Untitled design.png
DSC00074.JPG

Ever wanted to make a remote controlled villain from Doctor Who TV series, complete with speech generation and tiny language model inside?

Now you can!

Here I'm documenting what is described in two videos on my channel,

  1. ESP32 Powered Dalek | Ultimate Halloween Prop
  2. DIY Dalek Robot That Moves and Talks!

Make sure to watch these too, to get some visual understanding of the work you are about to complete.

Supplies

For color scheme of the Dalek, there is no need to exactly match the colors I used (black, red and gray). See the makes section of the original design for some inspiration.

I used eSUN ABS+ for printing the parts, they turned out to be sturdy enough.

Complete list of parts:

  1. DUALSKY AS82MG Servo (you can use a cheaper 9g servo instead with little adjustments to servo holder)
  2. ESP32 WROVER-IB (must be WROVER or other type with PSRAM!)
  3. ESP32 38P Expansion board (same link, pay attention to number of the pins! the ESP32 above has 38 pins)
  4. 2x Single Shaft TT motors (I actually bought dual shaft and had to cut the second shaft)
  5. 2x yellow wheels
  6. L298N motor driver
  7. WS2812B Addressable Led Pixel Ring 16 Leds
  8. PAM8406 Digital Amplifier
  9. 8 Ohm 10W Speakers
  10. Castor wheel
  11. 1x switch
  12. 7.4V 1600 mAh battery with dimensions 1x1x1. The battery I used was bought quite some time ago and I cannot find the link to exactly the same one. However if you get a battery (any type) with similar properties, it should be fine. Voltage can be higher, but not lower, check L298N specs.
  13. Bunch of wires and dupont wires

Finally, you'll need some tools:

  1. a 3D printer. The largest part is the bumper (), so you will need the print area at least this big.
  2. miscellaneous tools (glue gun, small pliers, screwdriver, etc.)

Print and Prepare the Parts

parts.png
20241019_200752.jpg
20241019_200953.jpg

Printing and postprocessing the parts is pretty long process, and is probably around 50% of the job in this case. The STL files are uploaded to Thingverse.

You will need to print:

1) 1x Bumper

2) 1x Core

3) 1x Eye

4) 1x Plunger

5) 2x Armball.

6) 1x Upper Skirt, 1x Lower Skirt, note: May need to be printed with support.

7) 1x Shoulder, note: May need to be printed with support.

8) 1x Dome, note: May need to be printed with support.

9) 2x Ring Halves (for each of the three rings, six total).

10) 2x Lamps

11) 2x Eyestalk Halves

12) 2x Gun Halves

13) 1x Plunger Arm

14) 1x Shoulder Joint Cap, note: Includes two pieces in the file.

15) 1x Slats File, note: Contains 18 pieces; each slat corresponds to a specific slot on the shoulder.

16) 54x Bumps

17) 54x Bump Rings

18) 1x motor_driver_board

19) 1x esp32_board

20) 1x servo_axel

21) 1x servo_holder

After finishing printing, remove the supports where they were installed. Spray paint parts if necessary (I spray painted the upper part of the core, gun and lamps).

Assembly Notes:

Bumps and Bump Rings: Attach to the skirt without glue. Insert bumps through rings, into skirt holes, and turn 90 degrees to lock in place.

Lower skirt to Upper skirt: Glue together.

Skirt to Bumper: Press down; friction fit. Optionally, add a dab of glue (don't glue before finishing installing electronics!).

Core to Skirt: Press in; friction fit. Optionally, add a dab of glue (don't glue before finishing installing electronics!).

Slats to Shoulder: Press into corresponding slots. Friction fit; a dab of glue recommended.

Arm Balls: Fit into shoulder sockets. Shoulder joint caps glue over them; apply glue carefully to avoid jamming.

Plunger Arm: Trim support and glue into the plunger and arm ball.

Gun Halves: Glue together, then press into the arm ball.

Shoulder Assembly: Slides over the core and sits flush on the skirt. Snap ring halves into grooves (bottom to top: Ring 1, Ring 3).

Dome Lamps: Insert into holes in dome bottom. Use glue to secure, if needed.

Eyestalk: Glue halves together, attach to eye piece, then insert into dome slot. Use filament piece to secure, if needed.

Assemble the Circuit

Screenshot 2025-01-13 at 10.47.33.png
Screenshot_20240822_171756_Arduino Car.jpg

It's a good idea to assemble the circuit and upload the code to the control board, so we know everything works - before assembling all the things together.

Consult the above diagram for wiring (you can also download the fritzing file). Additionally the ESP32 pins used:

LED ring 15
Servo 4
Amplifier 25
ENA 21
IN1 23
IN2 22
IN3 19
IN4 18
ENB 5

Please leave a comment if something is unclear or confusing about wiring! I'll reply and make corrections if required.

Git clone the Github repository for the project.

Connect ESP32 to you computer, have ESP IDF (tested with 4.4.8, not guaranteed to work with other versions. Likely to work with 4.x, but not any other major version) installed and run the following commands from the folder of cloned repository:

export ARDUINO_SKIP_TICK_CHECK=1
rm -rf managed_components && idf.py build flash monitor

After the code is finished uploading the ESP32 will boot and LED ring wil blink green. A new WiFi network will be created called tiny_dalek.

Connect to it with your phone and open Arduino Car app. Press on the cog button and set the configuration as in picture above.

Test different functions to make sure they work as intended: motors, servo (upper slider), LEDs(upper headlights icon), X button makes Dalek speak.

Downloads

Assemble the Chassis

DSC00035.JPG
DSC00034.JPG

The below instructions assume that you have all the electronics already wired. You will need to disconnect LED and Servo for Chassis assembly though.

Glue the motors to the chassis with the hot glue gun. Glue the motor_driver_board printed part on top of it.

Attach the L298N motor driver and amplifier to the motor_driver_board with the self-tapping screws.

Place the speaker at the back of the chassis and the battery in front of it, as in the picture above.

Attach the ESP32 on expansion board to esp32_board printed part with the self-tapping screws.

The power switch placement is a bit awkward in current design: it is glued to the one of the bumps in front of the Dalek. It works this way, but better to be improved in future version.

Attach the castor wheel in the middle of the chassis - either with self-tapping screws or with hot glue gun.

Now you should have working chassis - you can drive it around for testing.

Assemble the Core

DSC00042.JPG

Insert servo into servo_holder and use the screws (self-tapping) or regular to fix it in place.

Use self-tapping screws to attach the servo disc arm to the servo_axel.

Put the LED ring around the servo and attach the servo disc arm with servo_axel to the servo.

The servo - LED - axel part is assembled then and can be pushed up inside the core.

Put It All Together

DSC00039.JPG
DSC00045.JPG

Re-connect the Servo and the LED ring to ESP32 expansion board.

There is no glue or any additional connection between skirt and core parts, so the core is simply put on top of the upper skirt.