From Concept to IoT prototype

Milan Piskla portrait
Milan Piskla
Technical Director / VP
24 May 2021

IoT is an acronym for the Internet of Things. It's an extremely broad term that boils down to physical things connected to the Internet along with all the technologies that enables this. There are many examples, some well-known, others less familiar to the general public. A typical example of an area where IoT has literally redefined the market is Smart home devices, such as thermostats, sensors, cameras, shutter controllers and even doorbells. 

Wearable technology is another prime example – things like a smart watch or a fitness tracker connected to your phone via an app that talks to them is another part of the ecosystem. And then there is the service running on the cloud which gathers and compiles this information. 

IoT even serves a major role in retail and industry, where connected sensors or controllers can provide an abundance of data. Whether it's inventory tracking, customer interest analytics or industrial sensing, all these areas can be connected into a wonderful network and enable a level of control and knowledge previously unheard of.

An IoT product is jointly developed by:

  • Mechanical design engineers
  • Electronics engineers
  • Embedded firmware developers
  • Software developers.

The software developers typically build server components (mostly for a cloud environment), as well as client applications in the form of mobile and web apps. The software in this context often includes machine learning components.

We are proud that in CN Group we cover all these roles, and we obtain a nice synergy between these separate departments, that, over the years, we have been building up independently. We developed this inter-disciplinary approach in response to the needs of one of our clients, Procter & Gamble, who we are proud to have been working with for 11 years now developing award-winning solutions in this domain.

Best practices for SW development utilising agile methods can also be successfully applied to IoT development. This iterative approach decreases the risk of developing a product that the end users will not appreciate.

There is a strong dependency between the CAD and electronics activities. The PCB and electronic components need to have enough space to fit into the case. There are also other aspects that we will discuss later in more detail. Another strong dependency is between the electronics and the firmware. The electronics engineers need to select the microcontroller that has enough processing speed and sufficient memory to accommodate the firmware. There is yet another major dependency, this time between firmware and software which need to agree on communication protocols, security and firmware updates.


Electronics is the heart of any IoT device, and many things need to be taken into account when designing them. Safety, power consumption, cost, connectivity, and compliance are some of the things that must be considered. There are two main areas of safety that need attention when designing the electronics – customer safety and manufacturer safety. Fail-safe design techniques and extensive testing are key elements in ensuring this.

A common type of IoT device is a small battery powered gadget, having replaceable or rechargeable  batteries. To keep down the weight and expense it’s essential to avoid excessive power consumption, whether by careful overall system design or proper choice of parts. And even if the device is mains powered, there's no real reason to waste energy. Cooperation between the firmware and software teams is crucial, since one of the best ways to reduce power consumption is for the controller or the whole system to sleep as much as possible.

No one wants to pay more than necessary for a device, whether it’s the customer or the manufacturer. The obvious choice of using low-cost parts is the simplest way to achieve this. Other ways of reducing the price per device include having boards that support alternative parts and even whole alternative blocks. This allows you to select which block should be populated at a given time. It does create a more complicated design but can reduce the costs significantly and allow you to take advantage of the immediate market situation rather than fear it. Another benefit is making your supply chain more resilient and flexible.

Whichever interface you choose to connect your device to the wider world with, it needs to go through something. For cellular networks it’s a clear choice – developing and certifying your own modem would increase the time to market and development costs drastically, so it is better to use off-the-shelf modules. The same goes for GNSS and most other networks, where using modules is the best choice. Whether or not modules are used, careful design is still needed to get good performance out of the device. The RF portion of your design is an area where cooperation with the mechanics team is vital to get a good signal quality – a blocked or mistuned antenna can drastically degrade performance.

Regardless of the type of device you are designing, it must conform to a number of standards. The most common source of issues for electronics is Electromagnetic Compatibility (EMC), which can be a nightmare. It's always preferable to avoid problems rather than having to solve them. This requires careful design choices from the very beginning, otherwise issues can come up later that force a major redesign not only of the electronics but also of some mechanical components. Early identification of problems by in house pre-compliance testing is always preferable to finding out issues at the EMC testing lab.


Firmware is the soul of any embedded device. Given the often-limited resources available to microcontroller units (MCUs), a huge all-encompassing operating system may simply not fit, or cause excessive power consumption or extra cost. As such, the choice between bare-metal programming or using an operating system is often a difficult one to make and needs to be evaluated on a case-by-case basis. Fortunately, there’s an abundance of tools, libraries, and middleware available for many programming languages. In the embedded world, C and C++ continue to dominate the landscape. That is not to say that other languages cannot be used – Rust, in particular, seems to have a bright future ahead of it and languages such as Python and JavaScript have their place here as well.

Many things need to be taken into account regardless of the choice of programming language and OS – or lack thereof. Common communication protocols can generally be handled by standard libraries – this is the preferred choice. Obscure custom protocols, or standard ones with a twist, can get tricky. Power-saving logic is critical in battery powered devices, but there is no reason why mains powered devices should draw excessive power. Putting the whole MCU into sleep mode is just the roughest of ways. There are techniques that allow power consumption to be finely tuned, such as selectively enabling clocks to peripherals only when they are needed and even dynamically adjusting the clock frequency.


The ability to update firmware even on simple devices is pretty much expected these days – and for good reason. Over-the-air firmware updates can be used to add new features, as well as implement small and large bug-fixes, all the way up to a complete recall of the product. Hand in hand with any hardware measures, software security is a vital component for the protection of privileged information, such as intellectual property and user credentials. Encryption, tamper detection and other mechanisms can be used to achieve this.

Mechanical design

The mechanical design engineering starts with an industrial design. It is a creative activity of determining and defining a product's form. Typically, following ergonomic studies, the outer surfaces are designed.

Once the industrial design is ready, concept development follows. Concept development is about the transformation of user stories into functional prototypes. The engineers perform a space analysis and mechanism integration. They often also do kinematic simulations and build-up and assembly studies. If the simulations show the industrial design from a previous phase is not feasible, the process will need to be reiterated.

Concept development is followed by 3D modelling. There are 2 major approaches: solid modelling or surface modelling. Solid modelling is about combining geometric primitives into the desired shape; whereas, on the contrary, surface modelling uses complex 3D curves to define the shape. Properly annotated 3D models can serve as direct input to modern manufacturing methods. Older methods require 2D drawings as input.

The mechanical design engineers need to synchronize with the electronic engineers to agree on fixations, sealings and ensuring that the electronic components will have enough space to fit into the casing.

Software development

The software development for IoT products typically includes the cloud components as well as the client components. The cloud service providers typically have a managed service component called an IoT hub or IoT core. This managed service connects to physical devices using MQTT, AMQP or HTTP protocols.

A very important factor in the IoT cloud context is having so-called ‘Edge computing’. The Edge is basically an infrastructure with very reliable connection to physical devices, in contrast to the cloud’s potentially unreliable connection. All major cloud providers offer SDKs or libraries for Edge computing, making integration with the IoT hub/core easier.

Microsoft‘s Azure offers a fully managed IoT service solution called IoT central. It is targeted at delivering standard solutions with the advantage of no additional software development, but it is lacking on flexibility. Where flexibility is required the IoT hub and Digital Twins can be used, with further connection to Service Bus, Azure Functions etc. via Event Grid.

Amazon‘s AWS offers the IoT core central component with the possibility to connect to other services like Lambda, and Alexa Voice Service, to name but a few. Amazon also provides the Greengrass solution for Edge computing and drives also the open-source real-time operating system development FreeRTOS with ready-made parts for cloud connection.

Google’s GCP offers IoT core as a central component with the ability to connect to their services via a publish / subscribe service. In this way the developers connect to, for example,  AI platform, Dataflow, BigQuery, etc. Google’s Edge solution also supports TPUs (tensor processing units) that are especially efficient at running machine learning inferences.

What comes after the development

What happens when the customer is satisfied with the results, the applications developed, and the overall state of the project? The handover of the finished project, prototypes, sources, and documentation is the culmination of all the design effort.

After that various ways of supporting the customer are possible, whether it’s in dealing with manufacturers, getting the required certifications from authorised test houses or further design support. 

Having all the engineering teams within one house at CN Group – Mechanical design and electronics engineers, embedded firmware and software developers – we have developed a working IoT prototype from the initial concept in just 6 weeks. Why not discuss your ideas for IoT products with us? We will be happy to set up a workshop where, together with you, we can prepare a high-level solution and make estimates of cost for you to consider.

By Milan Piskla, Technical Director, and David Gustafík, Hardware Engineer

Did you find this article useful? Share it on social media.

Need expert advice from our consultants?


All articles
CN Group

CN Group CZ a.s.
Prague Office 
Ve Smečkách 20 
110 00 Prague 1 
Czech Republic
Registration No.:

Social Media
Reviews on Clutch
clutch logo
© 2020-2021 CN Group CZ a.s., All rights reserved.
  • Sitemap
  • Legal Terms / Impressum
  • GDPR