Introduction: Dtto Modular Robot - Self-reconfigurable Modular Robot

This is an illustrated guide on how to assembly a module (v2) for the Dtto Modular Robot.

Hackaday Project:

In the project files you will find the following documents:

- Bill of Materials

- List of 3D Printed Parts

- Schematics

- STL files for printing

You will find all the documents also on:


22 x 3D Printed Parts

1 x Arduino Nano v3.0

1 x HC-05 Bluetooth Module

1 x NRF24L01+ Wireless Transceiver

24 x Neodimium Disk Magnets (4x3mm)

2 TowerPro MG92B Servomotor

3 x TowerPro SG90 Servomotor

2 x Li-Po Battery 3,7V 600mAh 25C

1 x LM317 Voltage Regulator

1 x Mini Switch

1 x WS2812 RGB LED

40 xM1.7x4mm Self Tapper Screw

1 x330 Ohms Resistor

1 x1200 Ohms Resistor

4 x520 Ohms Resistor

3 xSmall Rubber Band (dental braces)

Step 1:

This tutorial will show how to assembly a fully working Dtto Modular Robot module. We strongly recommend you to have close by a rasp (nail file, emery board, sandpaper) and a set of precision blades.

First of all, we need to print all the parts of the robot. For this type of project, whe think that ABS plastic it’s better because it is more machinable than others. The .stl files are available in the links in the first page. You also have a link to a pdf file detailing how many parts we need, each Part Nº and some details (List of 3D Printed Parts). We will be using the Part Nº to identify the parts. We also need the schematics file to check the connections.

Once we have all our parts printed, all supports removed and carefully sanded, we can proceed to the assembly of the module.

Note: In this tutorial we won’t be assembling the IR detection system. This feature will be available as soon as possible.

We do not take any responsibility and we are not liable for anything occurred while assembling and working with this modular robot. :)

Step 2:

We need:

- 2 x Part 004-1

- 1 x Part 011-1

First of all, we have to ensure these 3 parts fit perfectly. It is very important that the 004-1 Parts rotate freely around the center. The easier they rotate, the less energy is lost in friction -> the robot moves better.

Step 3:

We need:

- 2 x MG92B Servomotor

- 4 x 520 Ohms Resistor

The second thing to do is to adapt the MG92B Servomotors to turn the full 180 Degrees. The method we used was to add a couple resistors to each servo control circuit:

- Take apart the back cover of the servomotor (4 screws).

- Carefully separate the control circuit from the inside. The potentiometer is located under the circuit (it may be covered by a black film). Once you can access the 3 pins of the potentiometer,you have to unsolder the first and the third cable (not the center one). Then, you have to solder a 520Ohms resistor to each of these two pins, and then solder the cable to the resistor. You can find tutorials on how to modify servomotors (search: Modify servo 180 degree), but it’s important you use the 520 Ohms resistors (in the pictures we used one 680 and one 2200 Ohms resistors in parallel to get the 520 Ohms).

- The control circuit does not fit the casing anymore, so we are going to stick it to the side of the metal case (see pictures). Protect the circuit from short-circuits with some tape on both sides.

- Repeat the procedure for the other servomotor

Step 4:

We need:

- 2 x Part 004-1

- 2 x MG92B Servomotors (step 3)

In this step we are going to fix the motors to the printed parts. The motor should fit correctly. We can use the screws that come with the motor, but we will have to cut them to the right length.

Step 5:

We need:

- 1 x Part 011-1

- 1 x Part 012-1

- 2 x Servo Arm (Cross)

Now we are going to fix the servo arms to the 3D printed part. This step is very important because we have to ensure that the servomotor is centered. If it is not centered, once assembled, the module motor won’t be able to rotate all the way.

The next image illustrates the result. When the servo is set to 90º (servo.write(90)), the relative position of the parts should be like in the center picture. If the position is slightly deviated, like in the picture on the right, we will have to center the part.

If we set the servo to 90º and get a deviated position like in the picture on the right, we will have to un-center the servo arm, like in the second and third picture.

This is a critical part, so be sure to get a well centered configuration. Once we get a well centered part, we have to be completely sure that we got a correct configuration. We can connect the two parts and test the rotation with the “sweep” example in arduino IDE.

Once we finish with one servomotor, we can proceed to fix the other one.

At this moment, the module does not have a male or female part assigned. We will choose one half and we will name it Male. The other will be the Female half. Then, we have to put the cables of the female motor through the hole in the central part, to the male part. You have to ensure that the cables allow a free rotation of the parts.

Step 6:

We need:

- 1 x Part 003-1

Now we will start to assembly the male half of the module. First of all we have to ensure that the hole in the part 003-1 fits with the previously assembled part 012-1. Once sanded, we can attach the part 003-1 to the part 004-1 using 3 screws.

Step 7:

We need:

- 1 x Part 005-1

- 1 x Part 007-1

- 1 x Part 009-1

- 12 x Neodymium Magnets

In this step we will put the magnets on the male parts. It is very important to put all the magnets in the male part with the north pole facing the inside of the module. We put the magnets in the holes, and then we put a drop of glue sticking it to the part. For this procedure, we like to use hot melt glue.

Step 8:

We need:

- 1 x Part 006-1

- 1 x Part 008-1

- 1 x Part 010-1

- 12 x Neodymium Magnets

As we did in the previous step, we will put the magnets in the female parts. Now, remember to put all magnets with the north pole facing the outside of the module. If we do this correctly, the male parts won’t stick between them, but a male and a female part will be magnetically attracted.

Step 9:

We need:

- 3 x SG90 Servomotors

- 3 x Part 013-1

- 3 x Part 014-1

- 3 x Small Rubber Band (dental braces)

In this step we will prepare the coupling mechanism that holds the modules of the robot together. We first insert the servo arm (previosly cutted as in the pic) through the two printed parts. We have to ensure that these parts rotate freely around the servo arm. We put the servo in the 90º position (servo.write(90)), and then we screw the parts like in the picture, using the screw that came with the servo. Finally, we put the rubber band between the two parts.

Step 10:

We need:

- 1 x Part 005-1 (step 7)

- 1 x Part 007-1 (step 7)

- 1 x Part 009-1 (step 7)

In this step we will fix the servos that form the coupling mechanism to the printed parts. First we will insert the servo in the correct position. Then, using the 2 screws that came with the servo, we will fix it to the part.

Step 11:

We need:

1 x HC-05 bluetooth module

1 x NRF24L01 radio module

In this step we will prepare the bluetooth and the radio module. We will have to remove the pin headers to solder wire directly, thus reducing the total volume of the modules. We will be using flat cable from an old PC, because we won’t have much space for cables.

Step 12:

We need:

- 1 x NRF24L02 radio module (step 11)

Now we are going to stick the radio module to it’s final position. Due to the lack of space and the need to reduce weight, we decided to simple stick the module with some hot melt glue. We have to be sure that the module doesn’t make contact with the moving part in the center. The cables go to the other side of the module.

Step 13:

We need:

- 1 x Part 009-1 (step 10)

Using 3 screws, we mount the motor-equipped part 009-1 to the body of the module. Ensure that the servo cables don’t contact the coupling mechanism.

Step 14:

We need:

- 1 x Part 005-1 (step 10)

In this step we will mount the “base” of the robot, the part 005-1, with the previously mounted motor. Now it’s when we realize that the size of the cables connected to the radio module (step 11) it’s very important, because they have to fit between the “base” servomotor and the top part. We need 4 screws for this step.

Step 15:

We need:

- 1 x LM317 Voltage Regulator

- 1 x 1200 Ohm Resistor

- 1 x 330 Ohm Resistor

Now we will configure our voltage regulator. Since we basically need the regulator for powering the servomotors, and since they can operate between 5 and 6 volts, we will set the regulator to the closer to 6 volts we can. We can use any other voltage regulator we want, considering the minimum current needs.

The LM317 Voltage regulator allows us to adjust the output voltage using some resistors. You can find the details and the math in its datasheet, widely available. Refer to the datasheet to be sure of the connections. The resistors that we choose were 330 and 1200 Ohms, resulting 5.8 volts. We can also use 100 and 390 Ohms, resulting in 6.1 volts. Check the schematics.

We need to power 5 servomotors with the output voltage from the regulator, so we need a small board to solder up the regulator, the resistors and the cables. The dimensions of the board shouldn’t exceed 1*2.2cm, and it should fit in the module as in the next pictures.

If we check the schematics of the module, we can see that we can use the board to connect the cables that come from the batteries(switch), and the ones that connect to the Arduino.

Step 16:

We need:

- 1 x Mini Switch

Now we are going to put a little switch to power on/off the entire module. Check the schematics. For now we will leave the switch hanging around, we will return to it later.

Step 17:

We need:

- 1 x Arduino Nano v3.0

The Arduino Nano is the brain of our module, our robot. It is very important we test our Arduino before we proceed to do the following steps. Sometimes we buy not official Arduino Boards, so we have to ensure that we can program them.

In this step we will test the Arduino Board and the connection with the computer. We will program an example program, blink. Once tested, note that, in order to save some valuable space, we will need a pins-free board.

We can now put our Arduino Nano into the module.

Step 18:

We need:

- 1 x HC-05 Bluetooth module (step 11)

Now we are going to solder all the cables directly to the arduino. We will follow the schematics and we will try to keep the cables as short as possible. This is a tricky part, so you have to think how to put the cables to reduce length, to allow all the components to fit and to allow the coupling mechanisms to work. Check the schematics.

As you can see in the pictures, the bluetooth module is “floating”. Since it’s on top of the arduino, and we have to ensure that we can access the Arduino, we will cut the cables long enough. We’ve also used auxiliary boards to solder some cables together (grounds, etc…) , for a better cable organization.

Step 19:

We need:

- 1 x WS2812 RGB LED

- 1 x Part 007-1 (step 10)

In this step we will be mounting the fancy RGB LED of the robot. We will have to cut the LED support to adapt it to the mounted LED. The cables should go as in the picture (Note that the servo in this picture has no cables, we ran out of working ones).

Now it’s time to fix the printed part to the module body, using 2 screws. As you can see in the picture, the mini switch it’s just under the servo we just assembled. We have to stick the mini switch in a position that, when pressed, it doesn’t protrude from the module.

Step 20:

We need:

- 1 x Part 003-1

- 1 x Part 006-1

- 1 x Part 008-1

- 1 x Part 010-1

- 2 x Li-Po Batteries

Just as we did in step 6, we are going to assemble the part 003-1 to the other half of the module. We have to make sure that it rotates nice and easy.

Now that we have the module almost assembled, we have to think where do we want to put the batteries. The module is designed to host the batteries in the male part, at the back of the arduino, but since we are not using the empty space in the female part, we are going to put the batteries in the female half. This way we get a better weight distribution.

First of all we need to put through the cables that will power up the system.

Then we have to mount Parts 006-1 and 008-1, just as we did in the other half. Once we have done this, we can proceed to insert the batteries. We are going to stick them like in the picture.

We can now mount the Part 010-1.

Step 21:

We need:

- 2 x Part 001-1

- 2 x Part 002-1

This is the final step! We are going to assemble the last parts. First of all, we are going to test if they fit correctly. If not, we have to sand until we get them to fit nicely.

And this is the final result!

Now we just have to program the Arduino with the available code and enjoy! If you have any questions don’t hesitate to contact me by the Hackaday page!.

Good luck with your modular projects :).


This project and all of it's files, images and texts are entirely licensed under the CC BY-SA 4.0 license. (

Maker Olympics Contest 2016

Participated in the
Maker Olympics Contest 2016