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 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.
Interface between a carrier board and a COM
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. 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.
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.
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.
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.
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.
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.
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 Upverter are helping designers build next-generation embedding computing solutions. Upverter 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.