How to Scope Your First HMI Project

Jacob has 15+ years of experience in microcontroller based real-time embedded systems. An avid writer, trainer, speaker, consultant and entrepreneur, he transforms the complex into simple, understandable concepts that accelerate technological innovation. Jacob has more than 200 published articles on embedded software development techniques and holds three degrees including a Masters of Engineering from the University of Michigan. Visit Jacob at

How to Scope Your First HMI Project

Many embedded systems today use a human machine interface (HMI) to interact with the users and world around them. HMI’s are so common that a first time HMI developer often under estimates the total extent of what is necessary to successfully pull off the project. In this post, we will examine what is necessary to scope your first HMI project and make it a success.

Usually the first instinct a developer has when working on an HMI project is to build the solution from scratch. I often see developers start by searching the internet for cheap LCD’s, video graphic chips, single board computers and even start to generate block diagrams for building their own custom display module. There are several major issues with going down this path such as:

  • Significant time investment
  • Substantial monetary investment
  • Scalability issues as hardware such as the LCD changes over time
  • Creating and maintaining the software that drives the LCD

Rather than starting at the implementation level, first time HMI project developers should take a 30,000-foot view and think through the entire HMI process to fully understand everything that will need to go into the project.

There are four major areas that a developer needs to consider in order to make their HMI successful that covers far more than just driving a LCD. These include:

  • User Interface (UI) / Graphical User Interface (GUI)
  • Communications
  • Firmware and Infrastructure
  • Hardware

Developers should start their scoping process in the same order that these major areas are listed.

The UI/GUI can make or break a product. A user isn’t going to care about the underlying hardware or what it is does. Their main care is whether the UI is intuitive, fast and easy to use. In order to achieve these factors, a developer needs to make time to map out the menu’s and functions within their UI and also follow a creative process  to provide the UI with a good look and feel. The more options available in the user interface, the more time that will need to be allocated for creating graphics, reviews and testing.

Many first time HMI developers overlook how important communications can be in their project and often create extremely complex solutions to have their HMI communicate with the external world. This often stems from starting with a hardware focus and working up into the higher-level requirements. Leveraging existing communication modules such as the SCM208 or the SCM318 can simplify the need for complex hardware designs and decrease development time by avoiding the typical design cycle issues.

If developers spend most of their time focusing on their HMI and how that HMI will communicate with the external world, essentially focusing on their products value add for their clients, they can then minimize the time spent developing firmware, infrastructure and hardware by looking at their HMI and communication requirements and finding existing solutions that support their HMI needs. They can then completely eliminate the need to develop hardware and instead can focus on the HMI design which will prevent them from reinventing the wheel. Most of an HMI project should be spend on the HMI and not on developing the components that support the HMI like the hardware, software and infrastructure.

In the next post, we will start to explore how developers can simplify device communications in the IoT age using existing communication devices.


Creating an HMI for the first-time developer can be a bit overwhelming. Please check-out two resources for ideas on how to develop and design an HMI:

3 Pillars of Embedded Innovation

Three pillars of innovation – communications, control, and human machine interface (HMI) – drove a consumer device revolution.
How are these affecting the embedded systems you design?

Are we Doomed to be Integration Engineers?

Developers are between a rock and hard place managing increasing design complexity and are turning to off-the-shelf hardware and software ingredients. Are we doomed to become integration engineers?

The Top 3 Problems Holding Back Embedded Systems Engineering

Most embedded system developers don’t realize it, but they have three mindset problems that are preventing them from getting to market faster and decreasing their engineering costs: customization,
starting out too low-level, and believing that all software should be free.

The Siren’s Call of the Pseudo Platform

An LCD and touch screen are certainly important, outward facing factors of a Human Machine Interface (HM). But behind the scenes, there is much more to a display module than meets the eye — it’s is a highly integrated real-time embedded system tuned to efficiently interact and communicate with its environment.

7 Free Resources for Embedded UI Design

Designing an embedded HMI’s User Interface (UI) and User Experience (UX) can be a daunting task. We’ve compiled seven free resources to equip you and your creative team (if you’re lucky enough to have one), with an arsenal to leverage when drafting your UI design.

The Anatomy of a Display Module: Software

there is a lot of software that is used to get a Human Machine Interface (HMI) display module up and running. To compete in today’s fast-paced and competitive market, can you leverage an existing display module to accelerate your development cycle and beat the competition to market?

The Anatomy of a Display Module: Hardware

An LCD and touch screen are certainly important, outward facing factors of a Human Machine Interface (HM). But behind the scenes, there is much more to a display module than meets the eye — it’s is a highly integrated real-time embedded system tuned to efficiently interact and communicate with its environment.