Choosing an SoC for Your Consumer IoT Product
There are a lot of development boards and SoCs available on the market these days, and choosing the right one for your use case can be difficult. We know this because, well, we love working with IoT devices. Although at Yonomi we don’t build hardware, we’ve worked with device makers large and small to build products consumers will love. We see first hand how much variability exists which is why our cloud backend is hardware agnostic. In this article we discuss design challenges, cost, and delivery for producing devices at scale across three development approaches for prototyping your IoT use case.
Linux based dev boards (raspberry pi/Intel edison/pine 64)
We will use the example of a Raspberry PI to cover the wide range of linux dev boards available.
Raspberry PI is very versatile development board. It has many IO ports as well as different versions of the board that fit various use cases. At the core of a raspberry pi is an ARM processor. It can run many different linux distributions out of the box and has enough RAM to run the most RAM hungry processes with ease.
Running a linux OS gives the developers the freedom to quickly write firmware code in many different languages.
There are a few things, however, that tip the scale. Writing the firmware can be easy, but managing firmware updates for devices in the field at scale utilizing OTA (over the air updates) is not straightforward. There are not a lot of supplemental libraries or services available to help with the OTA implementation which takes additional development time and adds cost. If a third-party service is used, it will also incur its own cost to manage the OTA updates for the devices.
Raspberry Pi is not an ideal board to produce an IoT product at scale. The cost of the hardware is generally higher and includes the need for a supplementary circuit around the board that will package everything into a user-friendly product. Using a Raspberry Pi may also lead to licensing issues when it comes to deploying them in production.
Overall, the Raspberry Pi is a great product for rapid prototyping and testing your use cases. However, it requires additional time, cost, and effort to turn it into a production ready device.
ThinCloud supports an SDK for node.js and has a guide that can be followed to prototype your IoT use-case using a Raspberry Pi.
IoT WiFi SoC (ESP8266/ESP32/Marvell-MW320/Arduino-MKR1000)
We will use the example of Espressif ESP8266 to cover the wide range of systems on chips (SoC) available.
ESP8266 is a low-cost WiFi SoC and it is available as a dev board by different chip manufacturers. It is a highly versatile, low cost, and widely used.
There are many frameworks in different languages that you can use to write the firmware. The most widely used language for this SoC is C but you can also use microPython or mongoose OS to write your firmware. You’ll want to make sure the framework you choose has a lot of supporting libraries and a large community of developers maintaining and managing source code and design.
The ESP8266 dev board comes with many IO ports and has a small memory and compute footprint. This makes it ideal for uses-cases that involve 2-way control and small data footprint. (i.e. a cloud-connected light bulb).
OTA support is built into some frameworks available for this board.
There are several things to consider when choosing an SoC. The small compute and memory footprint can sometimes be an issue depending on the use cases that are being implemented. Poorly written firmware can eat away ram and unknowingly cause the devices to fail and restart intermittently. An end product based on this SoC would require additional circuitry to turn it into a shelf-ready product.
Overall systems like the Espressif ESP8266 are great for prototyping and are cheap enough to have in an end product manufactured at scale.
ThinCloud supports a C SDK and has a guide that can be followed to prototype your IoT use case using these types of SoCs.
Custom Hardware is the most ambitious way to build or prototype your IoT product. Sourcing all the components and managing a design lifecycle over a custom hardware implementation can be a lengthy and costly process. The advantage, however, is complete control over every aspect of your device.
That said, you would still require business specific logic implemented on the hardware. This approach is only beneficial for large enterprises who have the resources to put together a piece of hardware from scratch.
Designing your own hardware requires a lot of R&D up front to produce a board that is production ready.
Regardless of the dev boards and SoCs available today, all shelf ready IoT products require certain engineered efforts. At Yonomi, we work with device makers who need consumer grade cloud solutions to support their products. We’ve helped companies better understand the cost implications of different supply chain models, architecture, and hardware design on their end goals. Choosing the right SoC for your product can be challenging with new solutions on the market every day. Below is a simple checklist you can use to choose the right hardware for your next great IoT product.
✔ Ability to have factory-reset or roll back to factory default firmware
✔ Over the Air Updates (Cloud-based end-device firmware updates)
✔ Secure way to commission devices on the network
✔ Transport level security
✔ Power supply/battery management module (if required for your use-case)
About the Author
Hassan Khokhar is a Senior Software Engineer at Yonomi. During his time here, he has been responsible for developing and architecting our next level enterprise IoT cloud management platform and loves every minute of it. He previously worked for Deloitte digital as a Senior Consultant and holds a degree from Metropolitan State University in Electrical Engineering.
Are You Building a Connected Device?
Learn more about what it takes to get your device connected with our free Guide to Building a Connected Device.