An affordable Arduino Compatible Robot for learning to Code

Similar projects worth following
CODI is an educational robot to dive into the exciting world of Science, Technology, Engineering, Arts and Mathematics (STEAM). With CODI, you can learn to code, learn about sensors, electronics and solve problems by making different kinds of robots. It is the perfect tool to be ready for the future.

Why another programming robot? It's probably one of the cheapest that you can buy costing only around $80!


Fun Learning

Learn Programming, Electronics, Robotics, and much more in a fun and challenging way.

Programming Made Easy

Programming has never been easier. With the drag and drop graphical (block based) programming software, learn to program CODI in no time.

Exciting Add-Ons

  • Obstacle Avoidance CODI (Use a sensor to avoid obstacles)
  • Maze Navigator CODI (Program CODI to navigate through a maze)
  • Firebot CODI (Make a Fire Fighting Robot)
  • Astronaut CODI (Explore the Surface of Mars for water)
  • Deliverybot CODI (Make a line following delivery robot)
  • App Controlled CODI (Use a Bluetooth device to control CODI)

Easy to Use

CODI comes pre-assembled with the obstacle avoidance activity. Use your imagination to program CODI into any kind of robot that you like. For getting started and tutorials please visit the Resource section.


Use this manual to get started with Codi. Download the required software and start programming!

Adobe Portable Document Format - 1.89 MB - 08/29/2017 at 20:24



Use this manual to Teach CODI to move around and avoid obstacles. Learn to control motors to move in a straight line and turn around the corners while avoiding obstacles.

Adobe Portable Document Format - 2.04 MB - 08/29/2017 at 20:26



Use this guide to Program CODI to deliver objects from point A to B by following lines along the ground. Learn to interface the line following sensor with CODI’s brain.

Adobe Portable Document Format - 1.50 MB - 08/29/2017 at 20:21



Use this guide to Make CODI’s childhood dream come true and program it to explore Mars for water. Learn to interface a water sensor with Codi’s Brain and detect water.

Adobe Portable Document Format - 1.62 MB - 08/29/2017 at 20:23



Use this guide to Make CODI become a Fire fighting robot. Learn to program the fire sensor with Codi’s brain and extinguish the fire using a Fan.

Adobe Portable Document Format - 1.53 MB - 08/29/2017 at 20:22


  • 1 × Arduino Uno
  • 1 × Sonar Sensor
  • 5 × Spacers 25MM
  • 4 × Spacers 35MM
  • 1 × Toggle Switch Acts as the Power Button

View all 20 components

  • Using Raspberry PI with CodiBot

    shamylmansoor02/02/2018 at 21:25 0 comments

     For my PyCon Pakistan talk I used a Raspberry PI to control CodiBot using Python. Adding a couple of videos here. 

  • Base Design

    shamylmansoor10/20/2017 at 21:31 0 comments

    As discussed in one of the previous logs, it took a lot of discussions and revisions to get a design that could help us put many sensors on it. We ended up with an octagon as it gave us the closest shape to a circle but with eight sides to put eight different components or sensors on. The base is designed to be laser cut in acrylic with a LearnOBots logo at the top side. 

    The other two plates are used for battery and arduino mount. The bigger rectangular plate is connected to the bottom of the plate using spacers which houses the re-chargeable battery. While the smaller squarish plate is mounted on top of the octagon base plate on which the Arduino is mounted. Beneath this plate, on the base, the H-bridge, the power rail PCB and the Fire fighting / Object retrieval PCBs are also mounted. 

    In the image above you can see two plates, one above the base and one below mounted using metal spacers and M3 screws. In the design file we can also see a number of different holes. Some big circular ones and some smaller ones. The smaller ones are for mounting different kinds of modules using spacers and screws. The larger ones are for routing wires from different modules towards the battery back. 

    The base has also been designed for mounting the MeArm for one of the activities. It allows Codi to have an Acrylic version of MeArm to be mounted at the front for different activities like object retrieval and manipulation. Since the MeArm uses around 4 servo motors, we already have a power distribution board and servo connection board to connect a MeArm to the Arduino Uno of Codi. 

  • Developing the Content

    shamylmansoor10/16/2017 at 12:47 0 comments

    CodiBot is supposed to be a fun, easy and affordable robot for kids to learn coding, robotics, electronics and problem solving. Just by hooking up an Arduino with a few motors does not really satisfy the goals of this project. Therefore one of the major tasks of this is to create creative content around the Bot that enables children to keep on learning with the kit. With our team's experience of developing curriculum based on thematic project based learning we have developed a few activities. These include

    • Fire Fighting Codi
    • Astronaut Codi
    • Obstacle Avoidance Codi
    • Line Follower Codi

    In our sessions the children our given different missions around which they have to program Codi and solve the mission. For example in one of the first missions they learn to program Codi by blinking an LED. They just don't blink it they have to program a message which is then read by another robot. The following video shows the activity

    In another session the children are given a mission to find Water on the surface of MARS. The following two videos are used in the session.

    We have also developed a number of downloadable tutorials that the kids can follow at home. There is more content that we plan to develop around CodiBot including YouTube videos as well as downloadable content and programs.

    1. Getting Started
    2. Avoiding Obstacles
    3. Line Following
    4. Fire Fighting
    5. Astronaut Codi

  • Selecting the Base Shape

    shamylmansoor10/16/2017 at 12:29 0 comments

    Although it seems pretty trivial decision, however while deciding on the shape of our robot we had plenty of discussions within the team. We experimented with different shapes and decided on the octagon. Here is an explanation as to why.

    When we started designing this robot, we thought about using the usual robot chassis that is available from most websites. 

    However we decided to design our own chassis as we wanted to build a robot that would have lots of add-ons and a number of possibilities. Just using an off the shelf chassis did not give us the freedom to design our add-ons according to how we wanted to place them on the robot. 

    After discussing many different designs and going through different prototypes and versions we ended up with a Octagon shape. We considered a circular chassis, a hexagon as well as the traditional shape shown in the image above. The reason for choosing an octagon shape was it gave us plenty of room to add sensor modules which are usually straight or rectangular in shape. Refer to the image with the Sonar sensor. 8 different small sides gave us 8 spaces to mount sensors that needed to be at the boundary of the base plate (the chassis). For this reason we did not use the existing chassis shape as well as the circular shape. 

  • Developing different components

    shamylmansoor10/16/2017 at 12:09 0 comments

    Since the goal of this project is to teach kids in the domains of STEAM (Science, Technology, Engineering, Arts & Mathematics) we have spent considerable time in developing different activities for kids. These include, 

    • Obstacle Avoidance Codi
    • Maze Navigating Codi
    • Delivery Bot Codi
    • FireBot Codi
    • Astronaut Codi
    • App Controlled Codi

    Each kind of robot uses a different kind of sensor. The idea is to use theme based learning instead of just simply interfacing sensors. In order for all of these different sensors to be used with Arduino (which is Codi's main controller right now), we needed to develop a few small circuits of our own. 

    These include

    • A power distribution circuit to provide power to different circuits
    • A power circuit to connect the FAN for FireBot Codi, Servos for the Robotic Arm extension 

    The circuits can be seen in the following images. Please keep in mind that we are trying to save costs, so the PCBs are simple and made using a local supplier. 

    So instead of just developing a completely new board that would include this functionality we have developed smaller cheaper components that simple connect with the power and the Arduino interface keeping the costs down.

  • Designing CodiBot I

    shamylmansoor09/06/2017 at 17:47 0 comments

    We're trying to bring down the cost, but please do keep in mind, that we are a very small company usually focusing on teaching kids coding, electronics, robotics, 3d modelling and printing, IoT, mostly STEAM subjects. We have a very limited budget. Since most of the kits like Legos and Mbot cost us quite a bit if we imported them in Pakistan, we designed our own. We started off with an open source 3d printed robot  and eventually designed our own as this design had limitations. This is based on our own chassis design and not the usual chassis that one can buy off Chinese websites. There are small circuits (power distribution, servo control etc) that we've designed too, to make it user friendly (just connect a few wires for extra sensors / actuators), although we do believe there is still a long way to go! Next step is to design a custom Arduino controller to include all the necessary controllers keeping the cost low again. 

    Also we are designing some cool tutorials to go along (included in the cost) which are based on themes (Fire Fighting Bot, Astronaut Bot, Delivery Bot etc.). We've learned that kids like stories and programming a robot to solve a challenge within a story keeps them engaged. You can check out our activities as well as Codi in use on (

View all 6 project logs

Enjoy this project?



chane wrote 09/06/2017 at 15:05 point

Can you recommend a seller to purchase a CodiBot from? the manf website does not list any and a web search came up empty.. :0


  Are you sure? yes | no

shamylmansoor wrote 09/06/2017 at 16:55 point

Hi chane. If you want to place your order, you can contact LearnOBots on Since LearnOBots is based in Pakistan, shipping from there may be a bit costly though and add to the total costs. 

  Are you sure? yes | no

shamylmansoor wrote 08/30/2017 at 14:34 point


 We are actually using HC-SR04 and are using the Chinese ones that are locally available to us in Pakistan. However we haven't faced any real issues! Have been using them for 3 years already. Maybe there is something wrong with the code?

  Are you sure? yes | no

agp.cooper wrote 08/30/2017 at 13:58 point


I note you are using HC-SR04 sonar sensors.

Most if not all (at least the ones I bought) of the Chinese clones (don't know about the originals) have a flaw that makes them just about useless. The time out is meant to be not more than 38 ms, but they can take up to 250 ms before timing out. If your software retriggers the HC-SR04 before timeout they return a bad readings (usually but not always zero). This behaviour is a real pain for robotic and obstacle avoidance. You may need to consider another type of sonar sensor. Sorry but I can't give you any suggestions here as I have only tried the HC-SR04.

Regards AlanX

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates