How to Choose a System-on-a-Chip (SoC) for Your Consumer IoT Product
Choosing the right board for your IoT journey can be tough. There are several key considerations when evaluating a board. From security to device management to firmware updates, this article will walk you through them.
There are a lot of development boards and SoCs available on the market these days. Choosing the right one for your use case can be difficult. We know this because, well, we love working with IoT devices. Although we don’t build hardware at Yonomi, we see first hand how much variability exists in the hardware spaces. That variability can make a big impact on your IoT project.
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-Cased Dev Boards (Raspberry PI/Intel Edison/Pine 64)
We will use the example of a Raspberry PI to cover the wide range of available Linux dev boards.
Raspberry PI is a highly versatile development board. It has many I/O (In and Out) 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 (Random Access Memory) to run the most RAM-hungry processes with ease.
Running a Linux OS gives 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) isn’t straightforward. There aren’t a lot of supplemental libraries or services available to help with 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 your devices.
Raspberry Pi isn’t an ideal board with which to produce an IoT product at scale. The cost of the hardware is generally higher and includes the need for supplementary functionality on the board to 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, 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 available System on a Chip (SoC) boards.
ESP8266 is a low-cost WiFi SoC. It’s available as a dev board by different chip manufacturers. It’s highly versatile, low cost and widely used.
There are numerous 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 mongooseOS 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 I/O 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
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 upfront to produce a board that is production ready.
Go Build the Future
Regardless of the dev boards and SoCs available today, all shelf-ready IoT products require certain engineering efforts. Choosing the right SoC for your product can be challenging with new solutions on the market every day. Below is a simple checklist to help you choose the right hardware for your next great IoT product:
- Ability to factory-reset or roll back to factory default firmware
- Over the Air (OTA) Updates (Cloud-based end-device firmware updates)
- Secure way to commission/decommission devices on the network
- Transport-level and end-to-end security
- Power supply/battery management module (if required for your use-case)