Product Design Trends in 2020: Modular Hardware vs. Modular Software

November 15, 2019 Zachariah Peterson

Hardware and software containers

Containerization is a core concept in modular hardware and modular software

Modular hardware design is everywhere and has been on the rise in the embedded world. The drastic rise of the Arduino and Raspberry Pi ecosystems has encouraged greater use of a modular architecture. Open-source hardware platforms are gaining momentum, particularly in single board computer design and development board design.

When it comes to modular software, we are seeing the same trends. The copious number of open-source libraries for use with popular programming languages (Javascript and Python anyone?) gives designers a significant level of freedom to implement new functionality without rebuilding the wheel. For embedded systems designers, modular hardware and modular software are no longer mutually exclusive. With the right design tools, embedded designers can take both approaches to product design going forward.

Modular Design for Single Board Computers

Modular ideology breaks down a generic system into several independent parts, each of which can be used to extend diverse functionality to new systems. Single board computers (SBCs) are seeing greater use in the modular ecosystem. Popular SBCs like Raspberry Pi provide support for improving the functionality of the Raspberry Pi using modules called HATs. Aside from the Raspberry Pi SBC, products like BeagleBone, Asus Tinker Board, Odroid-XU4, NVIDIA Jetson, and others all give designers the opportunity to take a modular design approach to product development.

COMs are the natural step to making SBCs modular in that they package the core processing capabilities onto a small module. A COM can then connect to a custom carrier board using an interface slot, allowing users to include other functionality in a customized board. This allows a designer to focus on expanding beyond the base functionality of a commercial SBC.

COM and carrier board for modular hardware vs modular software

Interface between a carrier board and a COM

Artificial Intelligence and Modular Hardware

Innovations in artificial intelligence (AI) are disrupting existing markets. AI on the edge is gaining ground with a wider audience of designers thanks to AI edge accelerators, which can be plugged into any SBC. For example, the Intel Movidius Neural compute stick can connect to any hardware board through the USB port and bring AI to any application. Another great example is the Grove AI HAT, which easily connects to a Raspberry Pi SBC.

Grove AI HAT module for modular hardware vs modular software development

Grove AI HAT module. This board easily interfaces with a Raspberry Pi SBC. Image source: wiki.seeedstudio.com

The push for AI on edge is fostering greater use of modular hardware design approaches, both at the hardware and software level. Most IoT product developers tend to focus on software for AI applications, but the hardware platform is just as important as it forms the basis for interfacing with the analog world. Working with a modular hardware platform and designing your own carrier board for COMs gives embedded designers the freedom to include functionality beyond what can be provided by most SBCs.

ROS: Modular Robotics Design

Robotics, in general, is built around the concept of modularity. Each piece is designed to be modular, and the modules fit together to make a system that works. Everyone from large companies to makers are adopting a modular hardware design ideology in robotics.

On the software side of Robotics, one interesting robotics framework with modularity at its core is ROS. ROS, also known as Robot Operating System, is a meta-operating system that is specifically designed for robotics applications. ROS combines several software frameworks to provide services for hardware abstraction, low-level device control, communication, and much more. The beautiful thing about ROS is the fact that it’s built to run on top of a modular hardware architecture. The modularity of ROS at the hardware and software levels allows users to pick and choose which parts, modules, nodes, or services will be incorporated in a new product.

Modularity in Software Design

In as much as we have discussed modularity in hardware, the core concepts in modular design are becoming prominent in software development beyond ROS. In software engineering, modularity is all about dividing a software application into several smaller modules. Each module is responsible for implementing or anchoring a relevant part of the overall system.

Modular software development concept

Breaking a software platform into different modules.

Conversely, modular software application design facilitates loose coupling of classes or methods, making code easier to maintain and debug. Modularity helps software developers use existing prewritten code in the new system, thereby saving time and valuable resources. Think of this as dividing your software architecture into different functional blocks, where each functional block includes the relevant functions required for your application. An engineer simply needs to define how each block interfaces with other blocks.

Modular systems are easily reusable and mutable compared to traditional monolithic systems because modules created during development can easily be reused in other projects without requiring major changes. For a large software development team, a modular design approach allows new team members to come into an existing project and quickly become familiar with the existing software stack.

Modularity in Web Design & Development

One of the major success stories in web design and development is WordPress. According to W3techs, among all websites that are known to use a content management system (CMS), 61.4% of these websites use WordPress. This equates to nearly 35% of the entire internet.

Modular software design with WordPress
Typical WordPress dashboard

WordPress incorporates a modular ideology at its core. WordPress comprises modules that are designed to provide important functionality to a web site. If a user is in need of map functionality, this is added by installing a Map plugin (equivalent to a module in hardware design); this works without re-writing the existing code base for that functionality. Another example in this the Wix platform. Although not fully customizable like WordPress, Wix provides similar modularity by providing users with apps that can be used to improve and expand site functionality.

Hardware designs are being released that can be interfaced into an existing system to increase its function. Engineering development platforms like LabVIEW (Laboratory Virtual Instrument Engineering Workbench) allows you to build software applications that are fully reusable and adaptable to new systems. The great thing about LabVIEW is you can define complicated data acquisition and signal processing functionality without writing a single line of code. Creating the same system in any other programming language would be much more difficult and time-consuming.

Geppetto Lets Everyone Go Modular

The open-source movement, which initially focused on software development, is making greater inroads into hardware development and has helped push for ever more modularity in new products. Taking COMs, custom carrier boards, and the right open-source libraries together allows embedded designers to take a fully modular approach to new product development at the hardware and software levels. As newer industrial, edge computing, and IoT products become more complex and require greater functionality, we can expect these new product development trends to continue in 2020.

Platforms like Geppetto are helping designers build next-generation embedding computing solutions. Geppetto is a graphical SBC design interface that includes an extensive array of COMs and other modules, such as sensors, actuators, and other components. This unique platform allows engineers to easily modify existing carrier boards or create entirely custom boards that incorporate COMs at their core.

All these tools are available in a browser-based design interface that allows designers to create fully functional modular hardware systems and quickly plan for production. A Linux kernel can be loaded onto the COM, and the device can be easily programmed in standard languages. This unique platform allows designers to take a fully modular approach to hardware design and software development.

Take a look at some Gumstix customer success stories or contact us today to learn more about our products, design tools, and services.

About the Author

Zachariah Peterson


Zachariah Peterson has an extensive technical background in academia and industry. Prior to working in the PCB industry, he taught at Portland State University. He conducted his Physics M.S. research on chemisorptive gas sensors and his Applied Physics Ph.D. research on random laser theory and stability.

His background in scientific research spans topics in nanoparticle lasers, electronic and optoelectronic semiconductor devices, environmental systems, and financial analytics. His work has been published in several peer-reviewed journals and conference proceedings, and he has written hundreds of technical blogs on PCB design for a number of companies.

More Content by Zachariah Peterson
Previous Article
Calculating your PCB Complexity & First Pass Yields
Calculating your PCB Complexity & First Pass Yields

Learn why Happy Holden is so excited about statistical tools like complexity indexes and fabrication yields...

Next Article
Adding a GNSS Module to Your SBC with Geppetto
Adding a GNSS Module to Your SBC with Geppetto

If you need to add a high-powered GNSS module to your next system, the modular design tools in Geppetto can...