All-in-one Robotics Board + micro:bit - Review

Table of contents

RoadTest: All-in-one Robotics Board + micro:bit

Author: jdlui

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Arduino Raspberry Pi

What were the biggest problems encountered?: Lack of documentation for the kitronik shield

Detailed Review:

Summary: I absolutely loved the micro:bit but had major issues getting the kitronik shield working.

Review:

I tested the BBC microbit robotics kit and had a great time overall. The ease of setup and focus on education make it a real joy to use. The main unit is absolutely packed with sensors and interfaces. This device was designed by BBC to further computer science in the UK, and I can really see the quality in this device. This seems like a device that is ready to be delivered into grade school classrooms for a great computing course experience.

The front of the unit has an LED array and two buttons for interfacing the device. The funny looking bottom is a great design for interfacing the micro:bit using alligator pins, or for inserting into interface ports like the kiktronik robotics board.

The back of the unit displays the two power inputs (lipo connector and usb connector), and displays the multiple available sensors, including accelerometer and compass.

Also included in the kit is the Kiktronik robotics board. This shield interfaces the microbit and allows several stepper motors or servo motors to be controlled. Power supply to this device is recommended via a separate power supply, although some power will flow into the shield via the interface with the microbit.

Initial setup of the micro:bit occurs quite easily. When you connect device via USB, you can immediately access a python editor where you can write MicroPython code. The IDE is decently made, including options to save, load, and download code. For a quick interface to start coding Python and lighting up the lights on the device, it’s definitely a slick and quick IDE.

The device itself comes with a decent library that wraps commands like text and shape rendering to the LED array. Within minutes I found some example commands and can write messages across the screen. This is exactly the type of smooth onboarding you want to present to a young mind to get them excited for the capabilities of the product.

Additionally, there is a graphical coding language that can be written in the MakeCode editor, which you can use to create programs for the micro:bit. I was initially started using this interface with some trepidation, but quickly found my self loving it. This coding language is apparently called Static TypeScript, which is like Typescript but without Javascript dynamic features. This visual block-based method of writing code is described as being similar to Google Blockly code.

The editor has many pre-built tutorials to try out, and again presents an interface that is very friendly to beginners. The visual interface makes creation of custom LED images much easier. In the program below I was able to quickly draw 4 images and make a logic to show some images on start-up, and then alternate 2 images in a loop. This interface is pretty well suited to this task, whereas I think this would have taken 4 times longer to write from scratch in the Python editor.

The Editor will even simulate your script in left side of the screen! Simply a joy to use.

Going further with MakeCode editor, you can read inputs from the push buttons, and use this to trigger actions. In a basic demo, I display a number on screen, and increment or decrement this number with the buttons. One can easily see how they might begin to design a game. One only needs the patience and creativity to take the next steps. Designing a mini Tetris or flappy-bird game could be within reach for an eager young mind!

In demo below I could easily and quickly made a custom program to accept button press inputs, increment counter, reset the counter at a value, and trigger a reset for a specific button combo. This is a very versatile and useful coding interface.

Some other program experiences.

You can make a program that generates tones!

A variety of tutorials exist on MakeCode, and they are great for getting orientated in the MakeCode environment and for understanding the capabilities of the micro:bit. The tutorials really up the educational value of this product, and could keep a kid learning all summer or all year.

Kiktronik motor board

This motor board shield is a must-have for taking the micro:bit to the next level. This board is really packed with pins and interfaces to the motors.

It’s mounted into micro:bit in the following manner

Diagram overview is below.

I started trying to use the motor board and ran into a handful of obstacles. To begin interfacing motors, insert the micro:bit into the motor shield and connect up a motor. You’ll need to add extension to access commands for the motor board. See image below:

While I could drive my servo motors with my Arduino with DC power supplied simply from laptop USB cable, I could not successfully power the motors when they were connected via the kitronik shield. Further, I had significant challenge in locating the proper MakeCode plugins which provided access to the correct motor driver blocks. I repeatedly ended up selecting some Kitronik motor driver, and I strongly suspect I wouldn’t be the only person making this error.

I first did not even realize that I needed these plugins to control the servor motors. I first off was trying to control servos with the standard servo controls. No success. A this point I didn’t know if it was the code a power problem to motors via kitronik board, but I did know the motors worked via Arduino without external power.

Going further, I finally found some mention of these extensions you should add to interface these shields. No mention of this on kitronik’s pages when I was searching around. I first found this motor driver extension. This is the wrong plugin: https://makecode.microbit.org/pkg/kitronikltd/pxt-kitronik-motor-driver. Note that there are no servo pins at the bottom. On all other accounts the shields look identical. Very confusing. The resulting commands only allow interface to two motors, and no servor controls.

This is the actual plugin you want: https://makecode.microbit.org/pkg/kitronikltd/pxt-kitronik-robotics-board. After so much ease in setting up the micro:bit, I was confused and fairly irritated at how long it took me to navigate. At least we can finally see servo motor controls. Alas I setup the program and don’t see the motors running, so I’m back to adding extra commands everywhere in my script in a desperate attempt to find the source of my errors. After selecting the correct extension and building a test program, I still have no luck.

Toward the very end of my desperation, I find the GitHub link for kitronik’s MicroPython code: https://github.com/KitronikLtd/micropython-microbit-kitronik-robotics. I download this library and try to give it a spin. I don’t get much further down this road, by hitting issues somewhere between executing python code locally on PC and trying to drop the python script on the device to make it run. I’m having some I2C errors, and at this point I’ve deviated pretty far from the initial goal of making a motor spin.

In summary, attempting to setup up the kitronik motor shield led me down a very confusing, undocumented paths. I tried in vain to spin a servo motor using the following methods.

  • - native servo commands in MakeCode
  • - the wrong kitronik extension
  • - the correct kitronik extension
  • - python library

Along the way I found a real dearth of other people writing guides for this device, and no tutorials from kitronik showing the steps to get a motor spinning. The main education I got during the latter part of this roadtest was an exercise in frustration. For a product that is sold to interface with the educational wonder that is micro:bit, I think a lot more documentation is required. Some suggestions:

  • - Add a USB connector for power! The majority of hobbyists might just want to tinker with a servo, and USB power is going to be sufficient. Heck a single 1.5A stepper could be powered with USB. Terminal block power connection is not that easy to interface for a home hobbyist who doesn’t have soldering iron or DC power supply. I agree that this seems like a ridiculous thing to whine about, but this truly affected me from progressing further in my roadtest in a timely manner. Someone buying this product for education/fun would reach the same frustrations when they start using the device
  • - Improve documentation. Add clear documentation on how to use, customize, and deploy python code to device. Add example wiring diagrams, link to MakeCode extensions
  • - Add kitronik tutorials to MakeCode
  • - Add clear documentation in the packaging so the user knows where to start
  • - Add some diagnostic information that can be read via micro:bit, status lights, etc. If for some reason the shield was fried, I would have no way of verifying this
  • - Add product documentation to clearly state some standard wiring hookups, power requirements, etc.

I did a bit more plodding around and noticed the voltage across the servo pins is quite low (0.9V) when the kitronik shield is powered by the micro:bit, which is itself powered by a 5V USB connection. It seems quite likely that voltage and current is limited between micro:bit and a peripheral kitronik shield, but I saw no mention of this in kitronik documentation, and the micro:bit pins themselves are able to power a servo motor (hence the following picture when using micro:bit native servo controls)

As I write this review I did another search for more info, I find several guides for controlling servo directly with micro:bit:

https://www.kitronik.co.uk/blog/control-a-360-degree-servo-with-a-bbc-microbit/

https://www.kitronik.co.uk/blog/using-bbc-microbit-control-servo/

However, I still find no information for using and troubleshooting this kitronik shield.

In summary I think the micro:bit is a true piece of art and I think it’s a great product for placing into the hands of a curious child. The kitronik shield however seems to need a better engineer than me to get working, mostly due to the complete lack of documentation. I think this device needs a lot more polishing before its ready for use with children. If you know someone who wants to learn the basics of computer programming with a fun toy, I whole heartedly recommend the micro:bit. If that young person might want to control a servo or three, I still recommend the micro:bit, since it has 3 pins to control the motors. If you want to control 4 or more servos, I would honestly recommend buying another micro:bit because the kitronik shield really does not feel up to snuff based on its lack of documentation and examples online.

 

To provide some more clarity and rational for my evaluation scores:

I think the micro:bit is an excellent product, good documentation, and a great value. I found the kitronik shield to be needing some serious improvements in tutorials, documentation, and examples. As I found an utter lack in hookup guide, example wiring, etc, I feel that the product was not even given a chance to perform to spec.

While I feel somewhat unfair in giving a low mark for lack of support material because I didn't contact kitronik via email/phone, I did write them a comment on their YouTube video for this product, and have not heard a response in 2 months.

 

Jordan

Anonymous
  • Thanks Rich, I'll try this out!

    I'm surprised the shield came with nearly no documentation, and has very little online as well.

     

    Jordan

  • Hello Jordan,

    Some of your problems come from not powering the robotics board via the terminal block.

     

    The VDD pin on the servo connectors directly connects to the terminal block and does not get power from the 3.3V supply.  If you saw 0.9V on the motor's VDD pin, it was probably coming from a powered 3.3V signal line leaking to it.

    Why do it this way?  A couple reasons:

    1) Motors are high current devices.  I haven't used servos but quick search on 9G micro servo specs showed a couple hundred ma to 500ma.  The micro:bit spec says you can draw up to 90ma on the 3.3V pin.

    2) Motors create a lot of noise on the power when they turn on and off.  Keeping them on a separate supply keeps the the voltage on the digital logic cleaner.

    An inexpensive way to power the board would be to get a 5 or 6V DC wall adapter, cut the connector off, and attach it to the screw terminal on the connector block.  Thrift stores usually have a bunch of them.  Be careful to get the + and - wires correct by checking them with a multimeter before attaching them.

     

    If you use MicroPython and the Kitronik demo code, be aware there is a bug in the code.  I describe it and how to fix it in my review.

     

    Hope this helps.

  • It helps is the manufacturers check the RoadTest space here on e14 while their device is under test.
    That has smoothened out problems with test hurdles a few times here.

  • Sometimes a review goes this way because the two parts do not play well together. I was wondering can the

    kitronik shield work with anything else or by itself?
  • Hi Jordan,

     

    Hopefully others in the roadtest program will have more luck and might be able to help get you further down the road on using this board to drive your servos.

     

    Good luck

    Gene

  • Hi Jordan,

     

    Nice RoadTest...  Hopefully Kitronik will see your review here or post on YouTube and address the documentation.  The quality of documentation seems to have deteriorated over the years in many cases.  Frustrating...

     

    Frank