Since the time the Internet revolution started gaining momentum in the 1990’s, much has evolved. From a point of doubting its success and longevity, much water has flowed. Over the last 3 decades, the Internet, once-seen-as-luxury, has made everything connected. From the humble mobile phone to televisions to automobiles, everything is now interconnected. Even homes for that matter. Smart homes where connected appliances like HVACs, lights etc, which can be operated from the smart phone from anywhere in the world is now a reality. The IoT (Internet of Things) revolution is here and is set to make deeper in-roads.
Internet of Things will serve as the foundation for innovation and business opportunities in the appliance space. Ongoing advances in machine learning and artificial intelligence technology will only accelerate this evolution. The ability to gather raw data from appliances and sensors opens a whole new world of use cases and opportunities.
Developing a great product requires investment of considerable amount of time and resources. Once done, the moot question that exists in the mind of designers is – can more adaptations be made to the existing product? The answer is YES. That would mean, while designing the product, providing options for further adaptions should be made feasible. An IoT-enabled product typically consists of only three elements: a processor or microcontroller (the “smart” element), a network controller (the “connected” element) and a means of securing the communication with the cloud (the “secure” element). Oftentimes, only the connectivity and security elements need to be added to an existing design to enable IoT connectivity. Rather than having to design a solution from the ground up, it is possible to quickly transform existing designs for connection to the IoT. This can be done in a highly efficient manner using techniques proven in the software programming world to simplify and accelerate development.
Decomposing the challenge
There are a few tricks embedded designers can learn from software programmers as they embark on the task of enabling an existing product to operate in the IoT. Programmers facing a complex programming challenge have a long tradition of turning to a top-down design approach, or modular programming. This method involves decomposing the bigger problem into smaller, more manageable sub-problems, which again can be divided up into smaller tasks to be tackled. This is a powerful and proven approach to solve challenging problems that would be difficult to solve with monolithic code. So, how does this translate to embedded hardware systems?
It turns out that embedded systems engineers can achieve the same benefits by modularizing their system development. In addition to posing pure programming challenges, embedded systems often need to comply with standards and undergo rigorous certification processes. Making post-certification software or hardware changes may trigger the need to requalify the product. For this reason alone, there is a huge advantage to separating the portions that need certification into subsystems. This way, bugs in one subsystem will not affect the performance of other subsystems.
For example, many designers want to add a secure internet connection to the next-generation of an existing product to improve the user experience and facilitate adding capabilities including remote diagnostics, monitoring functionality, automated fulfilment services and statistical data gathering to plan for future product enhancements. This IoT-enabled product will need three main functions: 1) the original application; 2) connectivity to the internet; and 3) a means of securing the application. As illustrated in Figure 1, this type of IoT-enabled application is basically the original application with added security and connectivity.
From an implementation point of view, this design can be broken down into three sub tasks, where the original application is used with additions of security and connectivity.
Security and internet connectivity are difficult to develop from scratch. Adding new functionalities to an existing application can have an impact on the system reducing the quality of the combined application.
But this increases the complexity of wiring and debugging the application. Another aspect is a bug in one part of the code can trigger a chain reaction affecting the timing and performance of other functions, warranting even a complete requalification.
Taking a modular approach is an ideal situation to address the issue posed in the other approach. In a modular solution, designers the existing codebase and IP is kept intact, adding the security and connectivity functionality as needed. The modular approach enables fast and easy innovation in IoT design in this scenario.
To simplify the process, certified modules can be chosen for both security and wireless communication, significantly reducing certification time and the time needed to get the product to the market. An example of such a certified secure element is Microchip’s
ATECC608A device. This device handles all the tasks associated with authentication and secure storage of keys and certificates, delivering a secure solution without requiring any code writing. Development boards such as Microchip’s AVR-IoT WG Development Board contain these modules for secure and easy-to-deploy IoT connectivity. Using tools like these, all it takes is a few clicks for an engineer to connect an existing product to Google Cloud IoT Core and start transmitting data.