Introduction: Building a Doodle Bot Kit From DAGU

About: I have been building electronic circuits and programming since I was twelve. I am an Australian but now I'm living in China where I design products for DAGU.
Doodle Bot is a very simple beginners robot that can write messages using white board markers, jumbo chalk or crayons. The kit comes with all parts including an Arduino compatible controller and a screwdriver. You will need to supply 4x AAA batteries and a suitable USB cable to program the robot.

A large, full colour manual is included to make assembly easy. The manual can be downloaded from here: https://sites.google.com/site/daguproducts/home/instruction-manuals. This instructable supplements the manual with additional colour photos  and text to show the easiest way to assemble the robot.

There is a tutorial for creating font, symbols and pictures here: https://www.instructables.com/id/How-to-draw-pictures-and-create-fonts-using-the-Do/


Step 1: Check Your Parts

Check that you have all the parts shown in the part list. Note that each part has a number (e.g. the geared motors are part number 5). To help identify some parts such as screws and spacers, there is a small ruler printed in the manual.

Step 2: Assemble Your Wheels

Start by peeling the protective film from the laser cut wheels (part #2). Then slowly  stretch the rubber tires (part #3) over the wheels. You can see in this photo that the manual includes a printed ruler so you can check the size of your screws during assembly.

Step 3: Adding Mounting Brackets to Your Motors

For this step you must make sure you know which motor is the servo. The two geared motors (part #5) are servos with the control circuit removed and therefore look like servos. You can tell the difference because the geared motors only have 2 wires. The servo (part #6) has a third wire which carries signals to it's control circuit.

The kit includes 6x 90° angle brackets (part #9) for mounting your motors and 2 sizes of M2 screws (5mm & 8mm). For this step we need six M2x5mm screws (part #11). Use the printed ruler to check the screw size.

As these motors have mounting slots rather than holes it is easier to partially insert our screws into the 90° brackets first. Then slide the bracket into the motor mounting slot and gently tighten the screws. You only need to tighten the screws a small amount.

Pay careful attention to the way the brackets are mounted as there is a left and a right motor plus the servo only mounts on the left side of the body.


Step 4: Mounting the Motors and Encoder Sensors on the Base

Start by peeling the protective film from the laser cut base plate (part #1) and bending the leads on the sensors (part #21) as shown in the photos. The robot has a small magnetic sensor for each wheel that allows the robot to measure how far each wheel turns. These sensors are held in place by the same M2x8mm screws used to hold the left and right motors to the base.

The easiest way to mount the left and right motors is to start with a single M2x8mm screw (part #14) passing through a fiberglass strip (part #25), through the base plate (part #1) and into the motor mounting bracket (part #9) on the other side. Do not tighten the screw yet!

While the screw is loose, slide your sensor under the strip as shown and then add your second M2x8mm screw. Align the sensor so it sits directly above the output shaft of the motor and gently tighten the mounting screws until the fiberglass strip bends slightly. Repeat these steps for the other motor.

At this point you can also mount the servo (part #6) using the last two M2x5mm screws.

Step 5: Mounting the Wheel Encoder Magnets

Each wheel is fitted with an 8-pole magnet (part #22). This magnet has 4x north poles and 4x south poles. As the wheel spins, the magnetic sensor detects the changes in the magnetic field to give 8 counts per revolution of each wheel. The robot uses these to measure distance traveled and could even measure it's speed with them if necessary.

Note: the magnets are only 1mm thick and quite brittle. They will break easily if dropped or stressed!

These Magnets are the same size as a round servo horn (part #7). A servo horn is a small plastic piece that fits onto a servo's output shaft and has mounting holes so that other devices can be connected to the servo. Servo horns come in several different shapes.

To mount our magnet on the servo horn we have two small pieces of double sided tape (part #23) that have been cut to the same shape as the magnets. Start by peeling away the small disc in the center of the double sided tape. It is easier to do now. Then remove the protective layer from one side and carefully align the double sided tape with the magnet. Once the tape is on the magnet, use the screwdriver to poke out the center of the sticker.

Pay careful attention to which side of the servo horn the magnet will be mounted on as the magnet must be on the inside, closest to the motor. Peel away the other layer of protective film and stick the magnet to the round servo horn. Repeat these steps for both magnets and mount them on the motors using the 2x5mm self tapping screws (part #15).

Step 6: Mounting the Wheels

The wheels are mounted onto the round servo horns using four 2x5mm flange head screws (part #12). These screws do not have a tapered tip and will only dig 1mm into the servo horn so as not to hit the magnet. To help these screws dig into the round servo horns we will prepare the holes that they will screw into.

This may sound complicated but it is only a matter of partially inserting a screw and then removing it. Then partially inserting a different screw and removing it in order to enlarge the holes in the servo horn slightly.

Pay attention to the four holes used. Using the wrong holes will cause misalignment of the screws.

Start by using the remaining 2x5mm self tapping screw (part #15) and gently screwing it in until it hits the magnet then removing it. This will enlarge the holes in the servo horn a small amount. Now repeat the process using the 2x5mm flange head screw (part #12) to create a thread in the hole. Be careful not to push the screws through too far otherwise you may cause the magnet to peel away or break.

Now align the mounting holes in the wheel (part #2) with the holes you have just enlarged and mount the wheel with four 2x5mm flange head screws (part #12). Repeat the process for the second wheel.

Step 7: Mount the Servo Arm Used to Raise/lower the Pen

To write text and draw pictures the robot needs to be able to raise or lower the pen. A small servo at the front of the robot does this by raising or lowering the front wheel (part #19) which is mounted on a servo arm (part #8).

The servo arm must be correctly aligned otherwise the pen may not raise and lower correctly or the servo could jam. To align the servo arm correctly, press it onto the servo output shaft and gently turn the servo output shaft anti-clockwise until it will go no further.

Now with the servo output shaft fully anti-clockwise, mount the servo arm parallel to the base plate as shown and use the last 2x5mm self tapping screw (part #15) to lock it in place.

Step 8: Mount the Front Wheel.

The front wheel (part #19) is just a simple roller made from a brass locking collar. A small brass spacer (part #24) is inserted into the collar to reduce the size of the hole. Sometimes the tin plating on the brass parts may cause the tube to be a tight fit in the collar. If so, you may need to gently press the spacer in with the screwdriver or tap the spacer in with a small hammer.

This roller is fitted to the servo arm using a 2.3x10mm self tapping flange head screw (part #13). Pay careful attention to which side of the arm the roller is mounted on. Do not tighten the screw too far. The roller should spin freely.

Step 9: Mounting the Battery Holder.

The robot is powered by 4x AAA alkaline or NiMh batteries. If you want to use NiMh batteries then you will need to modify the sample code so that the value of "lowbat" is approximately 470. This is explained in more detail in the manual.

The battery holder (part #18) is held in place with a re-usable cable tie (part #20). Thread the cable tie through the holes in the base plate as shown with the head at the back of the robot.

Insert your battery holder (you may want to install your batteries first) and tighten the cable tie gently so that the battery holder cannot fall out.

When you need to replace the batteries, simply press down on the small lever on the cable tie head to release the catch and loosen the cable tie so that the battery holder can slide out. Install fresh batteries and re-tighten the cable tie.

Step 10: Installing the PCB Mounts

The robot control PCB (Printed Circuit Board - part #17) is mounted above the battery holder using 4x 30mm brass spacers (part #10). The spacers are mounted on the base plate using four M3x6mm machine screws (part #16) as shown in the photos.

Do not over tighten the screws! The base can crack if excessive force is used to tighten the screws. You only need to tighten the screws firmly so that friction prevents them from coming loose.

While the robot is upside down, now is a good time to feed your motor and servo cables through the hole at the front if you have not done so already. There is a spare hole at the back in case you wish to add other sensors in the future.


Step 11: Mount the Controller and Install the Rubber Pen Grip

Use the last four M3x6mm machine screws to mount the controller on the brass spacers with the USB (Universal Serial Bus) socket at the rear of the robot.

Press the rubber pen grip into the hole at the front of the base plate. Although the rubber grip was originally designed for thick whiteboard markers and permanent marker pens it can also be used for jumbo chalk and crayons.

Try inserting 2 or three small crayons or chalk sticks into the rubber grip for a rainbow effect. If you have a whiteboard marker or pen that is a little bit too small for the grip then wrap some layers of tape around the pen to make it thicker.

Step 12: Wiring Up the Robot!

The Doodle Bot comes with the "Mini Driver" controller (part #17) from DAGU. This controller is equivalent to an Arduino NG with an ATmega8A processor running at 16MHz, 5V and can be programmed using the Arduino IDE using a USB cable.

Unlike standard Arduino boards, this controller has a few extra features making it particularly suitable for small robots. It has a dual DC motor driver that can handle up to 2.5A per motor and servos can be plugged directly into the PCB.

The digital I/O pins are terminated in a 3 pin male header that includes power for servos and sensors. The power can be selected between +5V or +Battery voltage. Normally +5V is used. If you select +Battery then you should only connect servos to these pins as a battery voltage higher than 5V could damage the digital pins.

Doodle Bot has 2 digital sensors and one small servo that will not be under heavy load so we need to select +5V to prevent damage to the digital inputs.

Next we need to connect the motors. You can see on the control board that the motor outputs are labeled "ML" and "MR" for motor left and motor right. In the case of Doodle Bot, the "ML" output is on the right side and the "MR" output is on the left side. This is so that the USB socket is to the back of the robot.

Connect the right motor to the "MR" output and connect the left motor to the "ML" output. Pay careful attention to the colour of the wires. When the robot runs the sample code the first move it should make is to travel forward a short distance, then back up and turn anti-clockwise.

If either motor runs backward at the beginning of the sample code then that motor needs to have it's wires swapped over. Once the robot has gone forward and then reversed a bit, If the robot first turns clockwise then you need to swap left and right motors.

Make sure the power switch is in the off position and connect the battery holder as shown. The controller has reverse polarity protection so if you accidentally connect these wires the wrong way the robot will not be damaged. it just won't turn on.

Now connect your wheel encoder sensors and the servo. Note that the black/brown wire always goes to the outside of the PCB. The white or yellow wire is always closest to the processor.

make sure your right wheel sensor connects to D2 and your left sensor connects to D3 otherwise the robot will end up running around in circles with one motor stopped and the other motor running continuously.






Step 13: Programming and Upgrading!

The manual contains detailed instructions for uploading the demonstration code into the robot however printed links to the software is difficult to click a mouse on and a pain to type.

To begin with you will need the Arduino IDE to suit your operating system (Windows, Mac OS X, Linux 32 bit or 64 bit). You can download the Arduino IDE for free from here: http://arduino.cc/en/Main/Software.

Do not download the latest version as the code won't compile correctly and even if it did, the new versions compiles into a larger file that may not fit the limited space of the ATmega8A.

The sample code was written in version 0022 of the IDE. You may find it compiles slightly smaller in version 0018 if your running low on memory.

You may also need to download USB drivers for the CP2102 interface. You can download the latest drivers for your operating system here: http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

Once you have the Arduino IDE running on your system you can download the sample code from here:
https://sites.google.com/site/daguproducts/home/download-page. You can then make the robot print any message you want following the instructions in the manual.


Want to do more?
The Mini Driver PCB has a socket for a Bluetooth or Xbee wireless transceiver module. Connect it to your phone or PC and control the robot remotely.

Do more than draw!
If you need more memory or functionality then you can replace the Mini Driver with a Micro Magician. The controllers are the same size but the Micro Magician offers more memory, a 3-axis accelerometer and an IR receiver built in. The IR receiver will allow the robot to be controlled with a universal TV remote or any IR remote using SIRC (SONY IRCode).

I have currently fitted the Doodle Bot with a RTC (Real Time Clock) and an SD card reader for some A.I. (Artificial Inteligence) experiments. You can follow it's progress here: http://letsmakerobots.com/node/34226