Skip main navigation

£199.99 £139.99 for one year of Unlimited learning. Offer ends on 28 February 2023 at 23:59 (UTC). T&Cs apply

Find out more

How to create a physical computing project

How do you create an entire project from scratch? Learn about combining all the parts of the computing cycle into one amazing contraption.
Creating A Physical Computing Project

Over the past two weeks of the course, you have acquired a set of physical computing skills. This week, you are going to use those skills to create a physical computing project, using your imagination to design and plan a solution to a real-world problem.

The computing cycle comes back around

Illustration of a circular process, showing the computing stages: input, storage, process, and output

The first step is to remind yourself of the computing cycle in its entirety, as you will have to incorporate each step into your project. In the following sections, I will pose some questions that will help you when you are planning your project this week.


Any project you create will have to include some method of providing input.

A group of makers posing for a picture to be input to their computing project

When designing your system, you should consider the following:

How will my device interact with the world?

A physical computing project should involve some interaction with the physical world. This can happen in one of two ways: the device can automatically gather data about the environment and react to it, or it will require manual interactions from a user.

Your project may have both manual and automatic inputs, as long as it has some way of interacting with the world. Ask yourself:

What inputs would best suit my system?

For the beginning of your project, I want you to keep it simple, and you should think about which input is most appropriate.

Ask yourself whether your chosen input will prevent anyone from using the device. It is good to think about accessibility when designing your system. Using a couple of inputs may help so that someone who might struggle with one input can use another.

If you have a button, it might be a good idea to also have a physical indicator for the button, such as a raised arrow, which will allow someone who is visually impaired to find it.


Some programs you write will require you to store files, or you may not need to store anything directly. Just like the Hello World the program, some programs will handle the storage portion for you.

Either way, it would still be beneficial to ask yourself the following when creating your project:

What type of data will I need to store?


You will have to create some tasks and program them so that the inputs your system receives result in the correct output. Some of the steps in your processing may not impact the actual output directly but may be necessary steps that are needed to arrive at that output — for example, providing credentials to access Twitter. When you design the program, you need to plan out both of these types of tasks.

What parts of the processing does the user need to see?

For each step that your program will take, it is useful to think about whether your user wants or needs to see the output of that processing. For example, in a photo booth that posts pictures to Twitter when a photo is taken, your user will probably want to see the photo and also to have the opportunity to stop it from being sent.

What parts of the processing will the user NOT see?

There will also be some parts that the user does not need to see. For the Twitter photo booth, the user does not need to see the program logging into Twitter. This is a piece of code that will take some time to create, but it will not be directly experienced by the user at all.


The final part to consider is the output; some of these outputs will have become apparent from the last questions. If there is something the user should see, you have to output it.

It is important to think about the accessibility of outputs, just like inputs. As far as you can, you should try to create a project that can be used by everybody.

A girl and her father watching an output on a computer screen

What do I want my user to experience?

The outputs of your system should present the information from your processing in a meaningful way, and the best way to design them is to think first and foremost of the user experience.

This means that you should add prompts and messages that let your user know when things have happened, as there is nothing worse than not knowing if the project is working.

This article is from the free online

Teaching Physical Computing with Raspberry Pi and Python

Created by
FutureLearn - Learning For Life

Our purpose is to transform access to education.

We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.

We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.

Learn more about how FutureLearn is transforming access to education