Design Thinking in Embedded Systems

Design Thinking in Embedded Systems

One will surely be surprised when the topic of design thinking is raised in an Embedded Systems class, it is rare to expect anything other than the technical nitty-gritty of hardware and software design in an embedded systems class. At least I believe that for anyone to identify as an embedded systems engineer, such a person is in one way or the other comfortable with the basics of programming hardware. What then differentiates the expert from the newcomers? How many bugs the code has? How well-designed is the hardware? or the design thought that birthed the system?

We can start the topic by considering a popular quote from Charles Mingus, an American jazz pianist, he said:

“Making the simple complicated is commonplace, making the complicated simple, awesomely simple, that’s creative ”

One can say these days that it is not entirely up to whether you can code or design hardware, it is more of how well your embedded design is laid out if at all you will design something useful. Design Thinking should not only be a topic applicable in web or mobile app design but embedded systems engineers should see the reason to properly count their cost before putting down a single line of code or interfacing sensors with the development board. To have a user-centered design, three things should be paid attention to: Design Thinking, Design Process, and Design Psychology.

Key pointers in designing an embedded system solution

Adapted from Qt Introduction to Design Thinking

  1. Discovery: I have a challenge, how do I approach it? Understand the challenge, Research, and gather inspiration. You are building to solve a problem, take time to study the problem and how best the solution can be designed. Pick the right electronic component and the right software solution.

  2. Interpretation: I learned something, how do I interpret it? Search for meaning, Frame opportunities. Your research should give you pointers that will guide your hardware and software design. While building a smart walking stick for blind people, think about it, how can I build a solution that can be easy for any blind man to pick up?

  3. Ideation: I see an opportunity, what do I create? Generate ideas, and refine them. One question that we are often faced with as embedded systems engineer is “Which board should I use?, which Cloud platform should I use for my IoT solution?, How do I do my electronics design? What is the first thing to do in building this solution?”. In addressing these questions, do some Google searches on what capability is present in which board and browse a few tutorials online if you are just getting started.

  4. Experimentation: I have an idea, how do I build it? Make prototypes, and get feedback. Try out a few designs, the code might not give the required hardware behavior the first time but the knowledge gained will be enough to redesign a new way of going about the problem.

  5. Evolution: I tried something new, how do I evolve it? Track learnings, and move forward. The system is now fully working after trying out different methods, note the method that works and use the working method the next time.

Hardware Considerations

Quite a number of times I have seen people using a raspberry pi to build a project (Not just for learning purposes) that any simple microcontroller would have been able to handle, and this is entirely because of a lack of basic information on what these boards can do and should be used for. Simplicity is important and while use a microprocessor for a simple process that a microcontroller should be able to handle. It is important for embedded systems engineers to know the various available development board and what these boards can do.

During learning or prototyping, any board of choice can be used depending on what is being learned but then I think the right board should be used for the right task while designing a project to be deployed.

Software Considerations

These involve the programming language, Cloud platform in case of IoT solutions, and operating systems. Any of the available choices should be selected first by the ease of use and then the community support, it would be a frustrating situation if you encounter a problem while designing a solution and a problem was encountered just to find out that such a technology does not have proper support online.

Conclusions

The use of design thinking aims to understand the new system requirements that have made embedded systems much more complex. There is a necessity for innovative, customized, and trendy systems. The use of design thinking aims to understand users' needs and generate innovative solutions for new systems. It can improve the requirement elicitation process and increase the quality of the final system.[1]

The embedded systems engineer should therefore look forward to designing a user-centered hardware solution that solves real-life problems.

References

  1. Anjos, Eudisley & Araújo, Rodolfo & Silva, Danielle. (2015). Trends in the Use of Design Thinking for Embedded Systems. 10.1109/ICCSA.2015.25.