How to choose a single board computer for your next product ?
There are few parameters which can lead us to the decision of picking a Single Board Computer (SBC) for our smart product development.
Each product runs different software tasks with various hardware resource needs.
The purpose of this post is to understand how to search for the right hardware with the perfect balance between requirements, board costs and enough resources to handle the software tasks we plan to run.
Let’s go over the major decisions and dilemmas that we must understand before purchasing an SBC for our project.
There are two types of memory that can be used by the operating system (OS) - eMMC and SD card.
SD card - "the easy way"
1. Flexibility - ran out of space ? just replace your current SD with a larger size one.
2. Easy software deployment - you don't have to burn the whole OS on every product's SBC, just burn the OS on SD cards the number of SBC's we need and place them inside.
1. SD cards can cost more than eMMC memory.
2. Short life cycle (3-5 years).
3. Less reliable compared to eMMC memory.
4. In some cases, the SD card can jump out from the card slot, what probably forces us to buy or manufacture a special protection case that will keep the SD card in place.
eMMC - "The industrial way"
1. The eMMC memory read and write speed can be double or triple faster compared to a regular SD card.
2. Stability - reliable and stable over time.
1. Impossible to change eMMC size on an existing board.
2. You will have to burn the OS on each board manually.
System On Chip
System on Chip (SoC) is the most important part of the SBC. This chip contains the CPU and the Motherboard. It is responsible for determining how many, and what type of ports you will have on the board itself.
How can you choose SBC with SOC that is perfect for your product?
1. Prototyping. Run your software on a Raspberry Pi SBC. Enter the shell command 'top' to see how the resources handle the situation. This will help you understand if you need a more powerful SOC or the opposite.
2. By reading the specs of your SBC's SOC, you will find the type of the CPU and the number of cores on it. Google the SOC model combined with each one of your software's third-party packages to make sure there are no bugs or unstable behavior that is known.
3. Power consumption - each SOC has unique power consumption and it can be very different from one to another. In some IoT projects, where the product is running on a battery, it's important to compare the ampere parameter.
The SBC is built from a SOC that sits on a carrier board which responsible to convert the SOC ports to actual ports and protocols like Ethernet, USB, HDMI, etc..
Be sure to check if the carrier board has the needed ports for your project as well as the right GPIO digital and analog input/output - keep in mind that analog inputs like 4-20ma are not so common in some known SBCs like Raspberry Pi 3 b+. You will have to purchase an additional adapter that will make the conversion.
Nothing to be worry regarding the RAM. Just keep in mind that each Linux OS has a different RAM usage. Therefore, it's recommended to check how much RAM space left after the OS boots up.
You can find more details about the differences between several SBCs together with an overall score at the ranking table page.
Most of the time, SBCs come with a ready to use OS. These OSs are likely less suitable for industrial products and will require some "cleaning" - reducing packages, setting firewall rules, changing the default SSH configuration, changing the default root password, etc..
This section doesn't relevant in case we don’t plan to use a screen on our product.
For those who do intend to have one, keep in mind that showing GUI with web-based application, will take a significantly higher GPU consumption than a regular application that uses QT or GTK engine.
Unless using an NVIDIA Jetson Nano, we have to take in mind that it's highly important to have good coding skills to make the right optimizations.
Choosing a Single Board Computer for a project is a pretty tough mission. The last point we must think about when we make the decision is the "long-run" needs, like software upgrades, maintenance methods and physical ports that may be used in the future.
As mentioned earlier, Prototyping will help you understand better what is necessary and what can cause you troubles.