Skip to main content

See the new JunkBot interface for Primary Education

Copyright Scott turner
The aim of the project is to give students in Primary Education an introduction to programming principles and basic programming language structure via physical feedback, in the shape of robotics. To do this, research and development into available methods currently available toke place, possibilities to do with JunkBot programming such as JunkBots using Scratch and other potential languages were explored and developed upon.

History of JunkBots

The JunkBot concept originally comes from the University of Northampton JunkBots Project[1]. The aim of the concept is to introduce the concept of Environmental Sustainability through the use of recycling “junk” to create the JunkBots and introduce computing and engineering to students. JunkBots were selected for this project due to several factors. Firstly, they are cost effective ways of delivering fun, creative ways of teaching computing and engineering principles to young students. JunkBots also have scope to be flexible, in terms of creativity and scope for more developments upon the existing concept. JunkBots vary in terms of design however all have the same factor in common; they are powered by a motor of some sort. The design does have an impact on the functionality of the bot, for example a robot with pens can draw whereas a robot that has an eraser attached to it can potentially rub out. The flexibility and creativity ties in with the project aims. 


Copyright James Mitchell
The project overall flowed as one major project with sub-stages, these came in the form of Scratch, Python and the Blockly stage. Before these stages could be advanced onto, initial research and experimentation was carried out. The case study of existing projects, such as the JunkBot concept were investigated into. As the project was to be based around JunkBots and education, surveys were carried out in order to provide a base set of requirements and an understanding of what needed specifically to be developed. Once this was achieved, concepts and already existing developments with JunkBots were researched into. This involved Scratch, Raspberry Pi and JunkBots which led to the Scratch stage of the project. The author did not develop this stage, which meant that it was simply a base to work from. The findings from this section led on to the Python implementation due to its high level programming nature in a simple formed syntax, unlike other similar languages such as Java, C++. It was found during research and both experimentation of the Python language, that the language principles of Python and simple syntax structure are essential elements in an Educational environment, which showed that to be successful the project from that point needed to implement a similar Scratch-like concept, in the form of a graphical programming interface to be successful.

The Python implementation was primarily a stepping stone to achieving the
graphical programming interface element, as it would be used in conjunction with the final stage, Blockly to achieve the required specification and combine the findings from the Python Implementation with Scratch via Blockly. The findings from the Python implementation showed that on its own, being a completely code-based implementation and had no graphical programming meant that a combination between Blockly and Python was needed. The Python implementation itself was successful and led on to the final development stage of the project, Blockly.

Copyright James Mitchell

The Blockly stage involved utilizing the Blockly platform to implement the Python solution with both a graphical programming style and allow for the use of code unlike Scratch. This proved success, providing both a graphical programming interface which generated code based on the Block structure. This implementation adhered to the original requirements found via surveys and research initially, which were to provide Primary Education with a physical entity that could be programmed via a graphical interface in order to teach programming principles. The application also had to allow creativity for experimentation and logical/computational thinking. A key focus on both graphical and having a physical feedback element are the key points for a successful implementation. The findings of the Blockly stage were a success, as the implementation provided a fit for purpose product and also was found to adhere to relevant points of the Computing National Curriculum for both Key Stage 1 and 2 as set out in Section 1.2, National Curriculum Changes.

The Blockly application itself is considered by the author as a development rather than a finished product, which means the application can improve certain aspects. The main improvement that can now be fulfilled as the initial implementation is complete, is the creation of a standalone application to implement Blockly inside of. This is mainly due to accessing direct control of the JunkBot via the application rather than having to use the Raspberry Pi terminal to access Blockly generated code. This can be considered a weakness of the project at its current stage, similar to how the Python implementation was a stepping stone that led to the Blockly application. However, this can also be considered a strong point in regards to the transitional benefit in Education from Scratch based learning to Python. In its current state, the application allows the generation of code via Blocks which can power the JunkBot after placing the code into the appropriate place. This can potentially be taken further in an Educational setting by having activities starting with Scratch and leading up to the Python using Blockly to power the JunkBot and then potentially leading onto actual Python language programming rather than using Blockly. The benefit to this method would be the pupil gets to see the process gradually and gives a reason to write a program to power the JunkBot rather than just learning Python syntaxes. This can be combined with Syntax learning. This also makes the application beneficial between Key Stage 2 and 3 of Education, as the Python language is generally considered to be used more so in Key Stage 3 than Primary Education. This means the application potentially bridges Primary and Secondary Education programming teachings and could even be used at a higher level of Secondary Education.

In addition to a standalone application, further advancements into the development of Blocks to achieve a broader range of uses. This could range from motor control variations to other JunkBot control.

External sources towards the end of the project have had a major interest in the project, for example at a recent BCS Teaching Scholarship interview in Manchester, a recommendation by representatives of BCS stated that "I urge you to continue the work you are carrying out with your dissertation project, as it is a key area of Computing and a very interesting project". Other sources have taken an interest in the project and have requested a copy of the finished project report and have asked for the developed product to be even demonstrated at a Teaching event. This also shows the potential advancements of the project and the need for it to be continued to be developed. The author in conjunction with Dr. Scott Turner also intends to publish both the Blockly application and Python implementation as a ComputingAtSchools (CAS) resource, which is designed as a resource bank for teachers.

In conclusion to the project, the final conclusion is that the overall project was a success. A Blockly-JunkBot application was developed towards and has met all of the requirements originally set out and has proved the concept will be a positive impact on education via testing and review of the application. 

Sources of further information
[1] Turner, Scott. (2013). JunkBots Blog, Available:
[2] Turner, Scott. (2013). JunkBots Project, Available:

[3] Turner, Scott, Teyley, Hayden. (2014). JunkBots Project, Available:

[4] Mitchell, James. (2014). Teaching Programming in Education, a study of Physical Computing, Available:

If you'd like to find out more about Computing at the University of Northampton go to: All views and opinions are the author's and do not necessarily reflected those of any organisation they are associated with

If you would like to know more about the Junkbots project contact

Popular posts from this blog

Blog usage statistics

Popular posts

How to build junkbots: Old toys In a previous blog entry the idea of using drinks can and an unbalanced motor was discussed. but what else have the projects participants t... How to build junkbots: Drinks can, unbalanced motor The junkbots project has now being running for 18 months in Northamptonshire, UK. But how have the junkbots being built? A video produced by... How to build junkbots: Wheels don’t always work well Back to the main approach, simplest way and probably the quickest:- A body (drinks can and drinks bottles usually) and an unbalanced motor -... Huxlow Pt 2: Lego Robots  The second half (programming lego robots) on the junkbots project has been carried out at  Huxlow Science College  on 28th February 2011. ... Toys from trash Arvind Gupta has produced a lot of work on turning junk into toys that aim to demonstrate the engineering ideas in an very interesting (wel... Brooke Weston Event Students at Brooke Weston School, Corby have been working with the University of N…

Controlling a junkbot with a Micro:bit

A new direction has been developed for the junkbot project (; previously Raspberry Pis have been used to control the junkbot’s movement ( – but what about the recently released Micro:Bits; can it be used to control a junkbot?
Matthew Hole, a student from Wrenn Academy, Northamptonshire ; has been investigating this idea whilst on a Nuffield Research Placement ( working with Dr Scott Turner, University of Northampton. The project was to look into developing junkbots controlled using a Micro:bit and also to produce some materials for schools to use with or without outside assistance.

What is a Junkbot? For this project, it is a moving ‘bot’ made from waste materials, combined with an electric motor and a programmable device (in this case a Micro:Bit) to control (or try) it. An example is shown above. More details on junk…

Do it yourself: 'Radio' Controlled Micro:Bit Junkbot

In an earlier post, I showed how you could build a Micro:Bit controlled Junkbot. In this post I want to show a modification to it, to use one Micro:Bit to control the junkbot controlled by another Micro:Bit. A nice feature of the Micro:Bit using micropython, is it can send and receive simple messages via radio - so here is my take on it.

The first problem is the Python editor available on does not seem to work with the radio API. One solution to this is to change to the mu editor.

Two pieces of code are needed.

Sending Code for the 'remote' control:
Essentially it is set up to send two messages, via the built-in radio module, spinl or spinr depending on which button is pressed.

import radio
from microbit import button_a, button_b


while True:
   if button_a.is_pressed():
   if button_b.is_pressed():


Junkbot Code
This takes an adapted form of the previous Junkbot code to work by; on r…