Three Ways of Achieving Rapid Application Development in IoT

[This is Crosspost from Mr Shyam Purkayastha's Blog ]

 

Applications around are growing at rapid pace with new and innovative use cases being conceived every year. However, one of the challenges for companies working on IoT is to reduce the cost and effort of building an IoT hardware prototype. IoT development poses many complexities due to its interdisciplinary engineering aspects, which is a combination of the usual software stuff along with hardware circuits and mechanical fixtures. All of this adds up the development cycles and costs, which if not monitored, can lead to a failed early mover opportunity. Let's look at some of the obvious and non-obvious options to tackle this challenge. 

The Rapid Application Development Approach for IoT

The rapid application development approach has existed in the software for over two decades now. One of the earliest development tools that embodied this concept was Visual Basic. Visual Basic was a development environment for rapidly building GUI based Windows desktop application. Over the last few years, web and mobile apps have followed the same approach in the form of numerous frameworks and libraries for rapid development.

So why should IoT be left behind? Employing a rapid development approach to IoT can have an immediate advantage of time to market. Also, a framework or template-based approach can reduce the development risks and make the and code easier to maintain.

For the seasoned programmers, the rapid approach might not sound very good. Of course, they want more flexibility in design. However, there is this ever-changing market landscape where new applications emerge every other day. For companies to be able to compete in this scenario, it is more important to have flexibility in rapidly trying out new features and ideas. So when they embrace rapid application development, they are trading off flexibility in design with flexibility in rapidly trying out new marketable features for their product.

Hardware Development vs. Toy Development

Think of IoT development akin to the development of a toy penguin. Either you can design the exact mold to make that perfect looking toy penguin, or you can assemble pre-existing LEGO blocks to rapidly build a toy that does an excellent job of looking like a penguin. 

Which approach would you choose and when? 

Check out the analogy boxes below to understand the trade-offs of different approaches to IoT hardware rapid development from a LEGO point of view. 

Opportunities to Streamline IoT Development 

 

At a very high level, the components of an IoT device can be split up as a three-layered stack starting from the base,  comprising of hardware, firmware and application. 

Each of the layers in the stack has its own set of development challenges. However, before we delve further, lets take a look at the major steps involved in the entire process of IoT product development.  

Developing the hardware components of a product is like the brick and mortar approach to building things. Compared to software components, hardware components take time and effort. Redoing it takes even more time and the costs spiral up. This is inevitable since product development is an iterative process and no product gets acceptance as per the customer or model's requirement in one shot.

Most companies follow some generally accepted approaches to expedite the hardware development. However, there is a scope for streamlining these approaches even further.  Let's explore them.

 

 

 

The Major Steps Involved In Developing an IoT Hardware Product

 

Three Ways to Enable Rapid IoT Application Development

There are many ways to unlock the developmental challenges for IoT.  The underlying theme is always to templatize some of the steps to save time and effort. Here is a detailed low down on the three options that can work for you.

Option 1 - Using Existing Hardware for Application Requirements

This is the most common approach adopted by companies to expedite their development cycle. Instead of starting from the chip, they start with a prototype board or an EVK (Evaluation Kit). There are popular hardware platforms such as the TI Launchpad kits which find application in many IoT enabled products.  

By choosing a prototype board, you can avoid the complexities of hardware design, assembly and board bring up steps and leapfrog your development cycle to focus on building the application software. The Hardware BOM selection step is also significantly reduced as you would only have to worry about the peripherals that are interfaced to the board and not the board components themselves. So the board becomes your template upon which you build your software application. 

This way companies can reduce their hardware development time as well as risk. Moreover, if you select a stable board backed by a well known ODM, then you would be assured of long-term support. This strategy helps to offset the costs of custom hardware design & development. over the entire product lifecycle.  

Pros

  • The risks of hardware design flaws are significantly reduced as iterating a hardware design is a very costly affair.
  • Most of the hardware dependencies are taken care of by the board manufacturers so you can entirely focus on the software.
  • Features can be easily programmed and tested allowing you the flexibility to test new ideas that are software programmable.

Cons

  • Most prototyping boards have a more substantial form factor and tend to get very bulky. They support connectivity to all the interfaces supported by the chip, which may not be required by your application.
  • It is difficult to operate them under certain constrained environments, such as low power operation mode under battery. 

Using Existing LEGO Sets for Toy Application 

LEGO House

Imagine you want to build a toy house. Instead of painstakingly building each component, you can assemble it with the help of a LEGO house set. This is the underlying platform for building your toy house.

In the same way, you would choose an underlying hardware platform to build your IoT product.

Option 2 - Using an Application Enablement Hardware Platform  

This approach is very similar to the option 1, except that in this case, the hardware vendor also provides the SDKs and sample applications. 

Also termed as application enablement platform, these kinds of platforms contain a complete suite of software apps built atop the underlying hardware board that is tailor-made for a specific genre of use-cases. Depending upon the configuration options provided by the vendor, you can use the software as-is with little or no modification. 

One of the recent and trendy products in this category is the ST Microelectronics’s Sensortile. It is a small and compact IoT device which is packed with a host of sensors to make any object smart. It can sense motion, environmental parameters, sound, ambient activities among others. The best part about this kit is that it comes with a host of software application packages that can directly read the data and transmit over the available communication interfaces.

So if you want to make an ordinary consumer product smarter, such as a shoe or a bottle, you can attach this device to it. The entire application stack is made available for you to build the app that interfaces with Sensortile Bluetooth interface. In this way, you would almost eliminate all the steps in hardware product development except for the testing and productization. 

Pros

  • Unless you are going to write an application business logic on the board, everything is available right off the shelf, including the SDKs and software demos.
  • Testing out new features is easier with the supported application software bundles available from the manufacturer.

Cons

  • It takes much time and research to find the ideal hardware platform that can suffice your application requirements.
  • This is a cookie cutter approach to building your product. Slight changes in application requirements might lead to a search for a new platform all over again. So there is an enormous risk of future proofing the hardware against possible requirements change.

Using LEGO Minifigs 

Lego Minifig

A LEGO minifig represents a specific creature. You can move its limbs and maybe change a bit of its attire. But that is it. A minifig represents a particular application of the toy concerning its appearance and it is not flexible to change

Similarly, an application enablement platform serves the needs of a particular application which is not flexible to change. 

OPTION 3 - Using Development Tools to Build Pre-Molded IoT Application on COTS Hardware

The idea of COTS is prevalent in the personal computer industry for a long time. COTS stands of Common Off The Shelf. That's how the computer hardware evolved between the 1960s to 80s, with companies such as IBM and Intel playing a significant role in standardizing the computer hardware architecture (x86), resulting in the personal computer revolution.

A similar kind of revolution went underway in 2012 when Raspberry Pi was launched as a credit card sized computer. Many companies have adopted it as their IoT hardware platform with some of them using it even in production applications. You can use a Raspberry Pi as Option 1, along with the popular Raspbian OS and build your applications on top of it. However, there is another way.

Development tools, like Forward Loop's floop CLI show developers how virtualization on COTS hardware and operating systems makes embedded software development faster. With floop CLI, developers use embedded Docker images to standardize how they interact with different devices. Developers are only required to make their base operating system image one time, so they focus all of their time and energy on writing embedded software. This combination of Docker images with COTS-based standardized hardware abstracts away most differences across devices.

Pros

  • A standardized image allows developers to focus more on writing software than dealing with low-level hardware and OS issues.
  • Widespread adoption of COTS hardware and operating system makes support abundant, making debugging cycles shorter.

Cons

  • Only works with MPU based hardware that supports the full operating system.
  • This approach requires an upfront understanding of Docker.

Using LEGO with Sugru Adhesive Mold

Lego with Sugru
Sugru is a self-setting silica rubber that can be molded in different shapes. By combining it with a type of LEGO element, you can build different applications. 
Image, Courtesy https://makezine.com/2012/12/19/sugru-and-lego/

 

 

If you are wondering how is this possible then take a look at this video

So like you can make different applications of the same LEGO block with different molds of Sugru rubber, you can also make different IoT applications of the same standardized COTS hardware with Docker image.

IoT is still a nascent technology compared to computers and hence the idea of a COTS IoT hardware is still not fully evolved. However, there are trends which are leading to this direction. For example, we are increasingly talking about edge computing and more and more applications are realizing the benefits of edge computing over the cloud. So the different variants of edge computing devices can be conceived through the COTS approach. 

The Emergence of COTS in Networking Technologies

If you follow the development in the networking technologies, then surely you would have heard of SDN (Software Defined Networking) and NFV (Network Function Virtualization). 

A decade back, the routers and networking equipment used in telecommunication were built using custom hardware. The concept of SDN disrupted this space through this fundamental shift in how the networking equipment is designed, operated and deployed. SDN leverages COTS hardware with a standard software framework called NFV that enables telco companies to run different network functions (VNFs - Virtual Network Function) as virtual application instances on a common underlying platform.   

A similar kind of shift could emerge in IoT. Imagine a company that is building a family of IoT devices for related applications. They can leverage this approach through a standardized COTS hardware with a Docker-based software. In this way, all products have the common underlying platform and the developers can focus on the application software that goes into each product.   

What's Your Take?

Without a doubt, none of these options is a good match for the flexibility offered by the traditional hardware design process. However, for low to medium volume manufacturing, these are your best bet to reduce the overall time and cost of development. Not to also forget the cost of iterating a product, since it may take up to five iterations to refine the product for customer adoption. 

With standardization in IoT, much of the design can still bypass the traditional approach and be baselined through the COTS approach presented in option 3. So if you are working in this direction or keen to explore, then it might be well worth the effort to check out the available development kits from Forward Loop. 

It will also be interesting to see if companies adopt this approach for their internal IoT standardization efforts. 

Leave a Reply