Introduction: Creative Robotix - Educational Platform - Codee and Friends!

About: The Creative Science Foundation (CSf) is a nonprofit organization, dedicated to the exploration and promotion of creative methods for supporting science, engineering, business and sociopolitical innovation thr…

Hey Everyone! Creative Robotix, now that's what we like! Have you ever wanted to imagine, create and make your very own humanoid robot with its very own personality? We have, so we did, and we would like to share with you what we have done.

Our Creative Robotix educational platform is an open source platform designed for those who are interested in learning more about the next major market for technology, robots! Our platform provides a fun, hands-on, fully customisable and accessible experience which addresses core STEAM (Science, Technology, Engineering, Arts & Maths) learning outcomes and is suitable for groups and individuals of any age to imagine, and create their very own robot.

Our educational platform is fully opensource and can be built from cheap off the shelf and readily available parts. By building a robot from basic parts you will lean about robotics, electronics, computing, 3D printing and modelling. While assembling the robot, you will be introduced to the basics in all these skills; you can chose to focus on a particular area by modifying any aspects of the design, such as personalising your robots face, body and arms with your own designs or decoration. Alternatively, you might like to upgrade your robots compute or sensing capabilities.

The platform is articulated with 5 low-cost servo motors, enabling differential drive with independent head and arm movements. An 8x8 LED matrix enables colourful facial expressions and the addition of buzzer allows your robot to 'talk' (like R2-D2 from Starwars) and sing a nice tune (including the theme from Starwars). The platform can also sense objects, such as lines on the floor and obstacles that are along its pathway. It is powered by an Arduino Nano and has Bluetooth connectivity, which allows you to program the platform to operate in a few different modes. In full autonomous mode the platform makes for a happy little robot independent and carefree, or you can connect the platform to your mobile phone for some interactive fun, in super smart mode, you can give your robot a 'Brain the Size of a Planet' (as Marvin, the Paranoid Android, a fictional character in The Hitchhiker’s Guide to the Galaxy series by Douglas Adams was said to have) and hook it into the cloud of things via your PC where it can access internet knowledge and talk to other cloud connected Creative Robotix robots out there and share experiences. The options are limitless.

Our design philosophy is based around the 21st Century Robot Project an open source, crowd sourced framework approach to building robots in the 21st Century where robot's are imagined, designed and built to be social, to each have a name, to be community driven, connected, evolving, growing, improving over time, with each contribution and each iteration.

To get you started we’ve included a basic open source skin, CodEE. We encourage you to customise CodEE, with your own artistic skills, to give him his own personality, look and style, so why not print him out in white and let your artistic creativity go wild! Alternatively, why not dress him up, and take him out to see a show?

The Creative Robotix Educational Platform is skinnable, so why not show us your design skills and create a new robot character of your own, and perhaps write a creative story about your characters antics using some Science Fiction Prototyping, for more head on over to the Creative Science Foundation. To help your creative juices flow we have made other character skins for the platform, called RobEE, TimEE, TobEE (instructable to follow soon).

If you are technology minded, then why not try to find new ways to power our platform, perhaps with some of the latest advances in embedded technology, for example Pi-Zero-W and why not try out some other neat sensors, maybe a camera, positioning or even give our platform a sense of smell, or try out adding some other off-the-shelf technology you prefer. By evolving our design, creating your own robots, we hope that you will enter into the spirit of free-sharing by offering your designs back to the community so our Creative Robotix project can fulfill its vision for creating an an open source, crowd sourced approach to building and exploring the future of robotics with RobEE, TimEE, TobEE and Friends.

Finally, we wish you, "Happy Imagining, Happy Creating & Happy Making!"

Project Essentials:

  • Estimated time to build (excluding 3D printing): 2 hours
  • Estimated cost
    • group build (excluding 3D printing): USD 18 - USD 30, group of 5
    • individual build (excluding 3D printing): USD 33 - USD 55
  • The project will teach:
    • Engineering
    • Computer programming
    • Logic
    • Algorithms
    • Problem solving
  • Fun for individuals of any age, especially for parents and teachers to engage their children and classes with leading edge design technology and ideas of the future. We recommend younger creatives be under adult supervision.
  • The project has been designed not to require soldering.

Step 1: What You Need, the 3D Parts...

The design files are split into two ZIP files, the CR-Base Platform set forms the Creative Robotix robot base educational platform which can be 'skinned' to take on different robot characters. The CodEE file set is a character 'skin' which can be applied to the base. Download the design files and print them. We have tested these files on an UP BOX, printing in PLA. If you don't have access to a 3D printer then you might like to try the following online service 3D Hubs. We have also provided UP files with print layouts for the UPBOX+ and UP Box Mini.

Step 2: What You Need, the Components...

The materials can be bought from local electronics shops or online. We have used eBay to source components at the cheapest possible retail prices and have found the quality of components to be both good and reliable. A few of the components need to be bought in bulk and so the individual cost is relatively high when compared to the base unit cost. However, this is good encouragement to gather a group of friends and or classmates to share a social build together. The EXCEL Bill of Materials sheet will automatically adjust the quantity and order counts according to your group size. Also if you find a cheaper source and component combination, please let us know.

Download and print out the build mat on A3 paper, it will help you keep track of your parts.


  • The bill of materials excludes sticky dots, double sided tape and tools as both are assumed to be common items.

Step 3: What You Need, Basic Tools, No Soldering Required...

A set of basic tools.

  • Ruler
  • Set of micro screwdrivers
  • Medium size cross head screw driver
  • Double strength double sided tape (or double sided sticky dots)
  • Long nosed pliers
  • Wire cutters
  • Super Glue (optional)
  • Automatic wire strippers (optional)

Step 4: Pinout Diagram and a Note of Caution When Wiring Up...

It's rarely good to connect devices with reverse polarity. Before you begin your build please familiarise yourself with the breakout board pin wiring diagram. Note where the power pins are on the board i.e. the +5V and 0V. Also note where these are on the other devices.

Step 5: Program the Arduino Nano...

Our platform uses Firmata as a means to communicate with the host PC. You can download the source code and HEX binary from our GIT hub repository If you haven't done so already download and install the Arduino IDE.

Some Nano's use a special type of USB 2 Serial device called the CH340 chip, you will need to install a driver for this chip before you can use the device.

Installing the device driver


Install the latest FTDI driver


Installation with Homebrew-Cask

Install the driver by the following commands:

brew tap mengbo/ch340g-ch34g-ch34x-mac-os-x-driver

cask install wch-ch34x-usb-serial-driver

Plug in your device.

It should now be listed under the /dev directory. Examples:/dev/cu.wchusbserial1410/dev/cu.wchusbserial1420

For more information and an alternative install method see here

Uploading the firmware

You can choose from two options. Download the

Option 1 - Upload HEX file (Windows)

  1. Download the HEX file.
  2. Open your Arduino IDE. Click on the Tools tab, then Port: and identify the port number your Arduino Nano is located on (in the example COM4)
  3. Open a window command line window change into the directory where you downloaded the HEX file and run the following command (you may need to change the highlighted path to suit your installation.

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf -v -pm328p -carduino -PCOM4 -b57600 -Uflash:w:".\cre_firmata.hex":i

The default name for your robot will be Codee, the default password will be 1234.

Option 2 - Compile source (Windows / MAC OS)

  1. Connect your Arduino using the USB cable.
  2. The square end of the USB cable connects to your Arduino and the flat end connects to a USB port on your computer.
  3. Choose Tools→Board→Arduino Nano
  4. Choose the correct serial port for your board. You find a list of all the available serial ports by choosing Tools→Serial Port→ comX or /dev/tty.usbmodemXXXXX. X marks a sequentially or randomly assigned number. In Windows, if you have just connected your Arduino, the COM port will normally be the highest number, such as com 3 or com 15. On Mac OS X, the /dev/tty.usbmodem number will be randomly assigned and can vary in length, such as /dev/tty.usbmodem1421 or /dev/tty.usbmodem262471. Unless you have another Arduino connected, it should be the only one visible
  5. Choose the correct processor option. Tools→Board→Processor and choose either 'ATMega328' or 'ATMega328 (Old Bootloader)'
  6. Our Firmata makes use of several libraries that you will need to download, install and configure.New Ping library - to install the library, select 'Sketch', then 'Include Library' and 'Manage Libraries'. Search for 'New Ping' and install. New Ping may conflict with the Tone functions, so you may need to edit the NewPing.h file and set the TIMMER_ENABLED setting to 'false'. You will find the '.h' file under the 'Arduino/libraries/NewPing' folder, usually in your 'Documents' folder.LedControl library - download the ZIP file from our GIT repository and install the library via the Arduino IDE, select 'Sketch', then 'Include Library' and 'Add .ZIP library...', locate where you put the copy of LedControl.Zip, select and click open to install the library.
  7. Locate the CRE_Firmata.ino file in your download, double click this to open the file. You may edit the the file to give your robot a new name and pin number password.
  8. Click the Upload button. This is the button that points to the right in the Arduino environment. You can also use the keyboard shortcut Ctrl+U for Windows or Cmd+U for Mac OS X.


// Edit this to rename your robot, you may also rename your robot via Firmata

#define MY_ROBOTS_NAME "Codee"

// Edit this to give your robot a new pin number

#define MY_ROBOTS_PIN 1234

/* ----------------------------------------------------------------------------------------------------------------------------*/


Step 6: Build Mats...

These build matts are a useful visual guide to the build. They are ideal for a classroom where the teacher has experience with the builds. The follow steps can be used in conjunction with the build mats as needed.

Tips that worked for us:

  • Print the wiring mat colour, A3
  • Print the steps build mat in colour, double sided A3.
  • Laminate mats to ease of re/use.

Step 7: Join the Lower Body to the Upper Body...

Press fit the 'body-lower' and the 'body-upper' parts together. We have found the parts to fit quite tightly together, so press firm, so far we haven't broken any parts at the step. You may need an adult to help you with this step, ensure you use the palm of your hand to complete this step.

Tips that worked for us:

  • Lightly press fit the parts together so they are in the correct position. Place soft block of wood over the lower body and use a rubber mallet to gently force the parts together. A couple of gentle taps with the mallet are all that are needed.

Step 8: Mount the Breakout Holder...

Use two 8mm screws to secure the breakout holder to the upper left corner of the body. Ensure the two posts furthest apart are at the top.

Step 9: Fit the Line Sensors...

The line sensor modules should snap snugly into place, held by the lower sensor indents. Use five 5mm washer head screws to secure them to the base, a firm press down on the screw driver will see them sink into the plastic. Hold the screws carefully to see them home. Ensure they are firmly home, but not over tighten.


  • If a screw does not hold, then use one of the four spare 8mm washer head screws from the servo packs
  • The order of the line sensors, this will be important for the correct pinout and wiring

Step 10: Assemble the Wheels and Mount the Drive Servos...

Note the screw heads at the bottom of the FS90R servos. They adjust the servos resting position. Do not touch them, but they may need adjusting in the final step. Remove the FS90R servo labels. Use three sticky dots (or tape, see next step) to mount the FS90R 360 servo into position. They should press fit and hold in place. Assemble the wheels with two 5mm self-taping screws. Fit the wheels to the servos and use two 4mm servo screws to fix the wheels in place on the centre spindle.

Tips that worked for us:

  • After the build is complete you may want to put a spot of glue to permanently secure the motors in place. However, this is best left until your build is complete and you are happy with the way it is working.Instead of using the special 360 servos you may hack the cheaper Tower Pro SG90's servos for continuous rotation. By far the most reliable method is to hack a voltage divider in place of the potentiometer as ably described here.


Step 11: Alternatively...

Use strong double sided tape to mount the servo wheels. Cut two slightly oversized rectangles of double sided tape and fit them into the servo cavities.

Step 12: Attach the Castor Bar...

Place three sticky dots (or double sided tape) along the top edge of the castor and push fit into the body, the top of the castor should appear flush with the front body.

Tips that worked for us:

  • Alternatively use double sided sticky tape, or
  • A tiny amount of superglue

Step 13: Tidy the Servo Wires...

Position the servo wires to receive the battery case in the next step.

Step 14: Fix the Battery Holder to the Castor Bar...

Ensure the battery holder is nice and snug against the top of the castor bar where it meets the main body and that it is centred. If it helps use a sticky dot or double sided tape to hold in place. Use two 8mm screws to fix to the castor bar.

Step 15: Mount the Arm and Head Servos...

Feed the head servo cable through the fittings as shown. As with the wheels, remove the servo labels, use three sticky dots per servo, or cut slightly oversized rectangles of double sided tape and fit them into the servo cavities. Fit the servos in position. They should press fit and hold in place

The servos should fit snugly into place.

Tips that worked for us:

  • To help wiring up later place a coloured dot / tape / marker on each of the servo motors and place the same coloured dot / tape / marker on the servos connector. In this way you will always know what connector corresponds to what servo.

Step 16: Wire-up the Line Sensors...

Strip 5 pairs of 3 wires from the main set of patch cables. Feed through the 5 pairs first, then connect the line sensors and tidily pull through. Facing front, the line sensors are numbered from 1 to 5, left to right. This will be important when connecting the other end of the cables to the Arduino breakout.

Tips that worked for us:

  • The 5 pairs of 3 wires should naturally be different color combinations for easy identification of sensor number.
  • Take a picture of the front, so you can reference the picture when wiring the sensors to the Arduino.

Step 17: Feed Through Wiring for the Ultrasound Sensor...

Strip off a group of four wires from the main patch cable set and feed the group of wires through the same opening at the line sensors, this maybe a tight fit, be gentle, but a firm push and some dexterity maybe needed here.

Step 18: Group the Wiring, Fit the Breakout Board, Connect the I/O and Tidy Up...

Turn the base over and connect the motors and sensors according to the pin mapping PDF. Tidy the line sensor wires through the breakout holder to the left, tidy all the servo wires and the ultrasound wires through the breakout holder to the right. You may need to spread the wires out to flatten them down so that the breakout board can be securely put into place over the top. Tidy and secure wires using cable ties.

Step 19: Fit the Processor...

The USB connector sits towards the top.

Step 20: Wire-up the Buzzer Module and Trim Any Excess Solder...

Strip off 3 wires from the main set of patch cables. Attach to the buzzer module. Using the cutter, carefully trim off excess solder. This will help the speaker fit into the speaker holder later.

Note on wiring:

  • In the picture the white patch wire is 0 volts, the middle wire is +5 volts and the purple wire is signal wire and in the following steps will connect to pin 13 on the break out module.

Step 21: Wire-up the Voltage Divider for the Bluetooth Module...

The Bluetooth module we are using, the HC-05/06, operates on 3.3 volt signalling, the Arduino board we are using operates on 5 volt signalling. The 3.3 volt transmissions from the Bluetooth module to the Arduino are fine, in 5 volt logic a logic 1 is seen as a voltage greater than 2 volts, so we're all good. However, the 5 volt transmissions from the Arduino to the Bluetooth module may cause very bad things to happen to the RX input, over driving the input and potentially causing damage. We need to regulate the transmission voltage down to an acceptable level. This can easily be achieved with a 'voltage divider'. In this case we need to bring 5 volts down to 3.3 volts, so we need a 20K resistor across the modules RX input to ground and a 10K resistor from RX the input. The RX input resistor will connect to the the TX output on the Arduino Uno.


  • How to 'read resistor values'
  • The 20K resistor will be 3 banded red, black, orange, or 4 banded red, black, black, red
  • The 10K resistor will be 3 banded brown, black, orange, or 4 banded brown, black, black, red

Step 22: Wire-up the Power...

Refer to the pinout diagram, connecting the +5V (the red patch wire) to the +5V pin next to A7 and the 0V (the black patch wire) to the 0V pin next at A7.

Step 23: Install the Buzzer and Bluetooth Module to the Carrier...

Ensure the Bluetooth carrier is orientated with the speaker holder top left. Apply two sticky dots or a strip of double sided tape to the lower two thirds of the carrier top. Fix the Bluetooth module in place, careful to alight the solder pins just after the edge of the carrier.

Slide the buzzer module into the Bluetooth carrier, this should be a tight fit. Trim the bottom solder again if necessary.

Slide the Bluetooth carrier over the Nano, top down. Connect up the buzzer and Bluetooth module using the pin out guide in the previous steps.

Use cable ties to neatly secure both to the existing cables.

Step 24: Base Platform Complete...

The platform body is now ready to apply a skin. The skin provided in the base package is CodEE and follows a 2D design aimed to be functional, yet simple and quick to print on all 3D printers. Another example skin is RobEE and a more complex example is our Timee.

Step 25: Mount the Ultrasound Sensor and Front Body...

Connect the strip of four patch cables to the ultrasound sensor. Press fit the sensor into the sensor holder, it should be quite snug.Fit the holder over the body, you may need to apply a slight bend to lift the holder strut over the side of the body. Wire up the sensor using the pinout diagram.

Tips that worked for us:

  • Completing this step after you have completed step 29 may help with the wiring.

Step 26: Assemble the Arms...

Thumbs Up! Using two of the long servo arm mounts from the Tower Pro secure them to the upper arms with two 5mm self-tapping screws, ensuring correct orientation, for left arm, right arm.

Tips that worked for us:

  • If you do get an are the wrong way around, just remove the long servo arm and refit. If the 5mm screws no longer hold the servo arm in place, use a spare 8mm screw instead (you can trim any access with the wire cutters, but ensure you place a cloth over the cutter to capture the screw tip)

Step 27: Assemble the Head Mount Bracket...

Mount the remaining long servo arm to the head mount bracket using two 8mm self-tapping screws.

Step 28: Mount the LED Matrix...

The LED matrix should snap into place with a very snug fit. Ensure you have the LED matrix the correct way around, as shown.

Step 29: Attach the Head and Wire Up the Face...

Ensure that the servo motor spindle is centred before attaching the head, follow the pin map to connect the LED's.

Tips that worked for us:

  • The servo spindle should be centred by default, but if it has moved then you can re-centre. Use a spare servo arm to place on the spindle, gently turning to each extreme to gauge and set the centre point. You don't need to be precise and you can also change the head position on the spindle later.

Step 30: Attach the Arms...

Role the servo spindle backwards until it reaches its end-stop, then attach the arms using two 4mm screws. A magnetic screwdriver head will make it easier to guide the screws down the arm spindle.

Tips that worked for us:

  • We generally fix the arms so they are raised vertically upwards in the 'up' extreme.

Step 31: Build Done! Let's Power Up!

WARNING! Before powering up, check and re-check wiring is correct!

Place CodEE on a flat surface and insert four AA batteries, any AA batteries will do, however we recommend to go green and use rechargeable ones. If all has gone well, then CodEE should spring to life, smile and say hello. Check that CodEE's line sensors are responding. The LED on the front of the sensor should light up when on a light reflective surface and turn off when on a dark surface.

CodEE has an inbuilt demo, to trigger the demo on power up, connect signal pin 12 on the breakout board to GND (0 volts). On power up CodEE should run through his demo routine, moving forward for two seconds, then backwards, play a tune, while swinging both arms and looking around. CodEE's face should also display the distance to the nearest object within 60cm.

If nothing happens, or things don't work out as they should, don't worry, just remove one of the batteries. You will now need to 'debug' CodEE to help to work properly. There's probably just a few crossed wires, so carefully check through the connections, a VCC (+5 volts) or a signal wire may have been connected to a GND (0 volts) pin, or visa versa. If you can see nothing wrong, then remove all wires from the Arduino Breakout I/O board, and then add them back, one at a time, until you have them all connected and and functions working. Debugging, or problem solving, may take time, but it is a very useful skill to acquire.

Tips that worked for us:

  • If your CodEE's wheels move slightly when they should be stationary, then you can adjust the servos by using a small screw driver to adjust the feedback resistor. The feedback resistor screw can be found at the bottom of the servo. Turn the screw until the servo stops turning or is stable at rest.

Step 32: Configure the Bluetooth Module...

Power down CodEE and remove the demo patch wire if connected. Connect a patch wire between signal A7 on the breakout board and GND (0 volts). Power up CodEE. CodEE should emit a series a chirps as the Bluetooth module is programmed and should then proceed to boot up with a smiley face. If this doesn't happen and a series of harsh chirps is repeatedly heard, then something went wrong. If this happens check all the wiring and connections.

One successfully complete, the Bluetooth module is programmed, power down and remove the patch wire.

Step 33: Connect Bluetooth to PC...

For a Windows 10 PC, follow the instructions here and search for a Bluetooth device with your robot's name. The default pin will be 1234 unless you have changed the pin when you programmed the Arduino.

For Linux, Ubuntu, follow the instructions here.

Step 34: Congratulations! Your Creative Journey Has Just Begun!

Our platform can be programmed with Snap4Arduino and Python (coming soon). You can download the latest Snap4Arduino and Python client drivers from our GIT Hub.

You now have your very own CodEE humanoid robot to play with, to program, to customize, to use at home, to use in class, or for your university project. Let us know what you do with yours!

We will be uploading some standalone sample applications and driver software for different platforms, including Python, C/C++, ROS and Android, to our Creative Robotix project pages.

Lastly, we wish you,

"Happy Learning. Happy Playing & Happy Experimenting!"