In the previous article in this series exploring the Internet of Things (IoT), we provided an overview of the concept and explained the differences, and areas of overlap, between IoT, embedded, and edge computing. In this article, we’ll examine the device side.
IoT Gateways and Nodes
IoT devices can be divided into gateways and endpoint nodes. Some function as both or either, however, and consumer electronics equipment such as smart refrigerators often combine an IoT gateway with multiple sensor nodes.
Gateways, which in home automation settings are referred to as smart hubs, typically run Linux—or in some cases Windows—on higher-powered processors. They are typically headless—i.e., without a display—or have a low-res HMI (Human Machine Interface) touchscreen.
IoT gateways aggregate inputs from sensor nodes and other smart endpoints. Higher-end nodes run Linux, but most run bare-metal code or lightweight real-time operating systems (RTOSes) on low power microcontroller units (MCUs) based on Arm Cortex-M cores. RTOSes often used for IoT include the open source Arm Mbed, FreeRTOS, and Zephyr, as well as proprietary platforms like QNX.
One simplified way of thinking about IoT is that the Raspberry Pi powers your gateway while the Arduino powers your node. However, there are many other options available for both device types, and now that there is a non-Linux, MCU-based Raspberry Pi Pico, you could even have an all Pi IoT network.
With the growing demand for IoT, MCUs and RTOSes have grown more sophisticated, especially when it comes to handling wireless. Espressif’s open source ESP32 has led the way by combining WiFi and Bluetooth with Arduino compatible Cortex-M cores on a single system-on-chip (SoC).
IoT Gateway Components
Because IoT gateways are not usually processing high-end multimedia or AI algorithms like edge computers or high-end industrial gear, they typically run on lower-powered CPUs, such as Arm Cortex-A7, -A35, or -A53 based processors. There are also plenty of gateways running on the Intel Atom, the more power-efficient Intel Core U-series processors, or AMD’s Ryzen Embedded SoCs. RISC-V based processors are already being deployed for IoT for both Linux-driven gateways and RTOS-powered MCUs.
In home automation, low power is important to reduce costs, including energy costs. In the industrial and smart city realm, cost and power consumption are also important—there are often a lot of gateways, and the cost adds up.
IoT gateways are almost always equipped with Ethernet and/or WiFi to communicate with the cloud, other gateways, or nodes. Many offer mini-PCIe or M.2 expansion interfaces that let customers choose from a growing smorgasbord of wireless options for both cloud and node connections. These range from 4G or 5G to lower-bandwidth modems for LoRa, NB-IoT, CAT-M1, or Bluetooth, which usually comes with WiFi. Mobile gateways may offer GPS and RFID readers. An example of a recent LoRa gateway that includes GPS is RAK Wireless’ Raspberry Pi based RAK7246.
Short-range, IoT-focused wireless technologies typically used in smart homes, such as ZigBee, Z-Wave, and Thread, are capable of mesh networking. Mesh not only enables nodes to exchange data with the gateway over long distances via relay, but also with each other for unattended collaboration, optimization, and self-learning. An example of a gateway that supports Zigbee and Z-Wave is Avnet’s Raspberry Pi based SmartEdge Industrial IoT Gateway.
Mesh networking was core to the original Internet of Things concept as a path toward enabling all devices with collective, distributed intelligence. In practice, however, most IoT nodes link directly to a gateway.
Because IoT gateways usually require limited local processing and enjoy frequent or persistent cloud connections, they tend to use low-capacity microSD or eMMC flash storage, although some higher end gateways provide SATA solid state drives. Many gateways provide low-power wired interfaces, especially in IIoT settings. These include serial RS-232, GPIO, DIO, I2C, SPI, and many more. CAN is commonly available with in-vehicle gateways.
Most gateways offer a few USB ports and a low-resolution, HMI-oriented display interface such as LVDS or MIPI-DSI. Some provide HDMI ports and MIPI-CSI camera inputs. IoT gateways often provide a highly customized Linux stack based on code and templates from the open source Yocto Project. Ubuntu or the trimmed-down Ubuntu Core are also popular options along with the lightweight, networking focused OpenWrt, among others.
A growing number of IoT gateways add an IoT device management and aggregation stack, with similar code running on cloud platforms or servers. Examples include Eurotech’s Everyware Software Framework and Amazon’s AWS IoT Greengrass.
IoT’s Role in Linux Development
As the Internet of Things continues to expand, it is taking on a greater role in the development of the Linux kernel. In a recent TechNewsWorld analysis, Jonathan Terrasi argues that IoT is growing in importance to the Linux development community in part due to the changes in the Linux server world, which has been the primary driver of Linux development.
As enterprises move toward “serverless” cloud models, which are themselves usually built on Linux, “the cloud vendor abstracts server deployment and maintenance away from the customer,” writes Terrasi. He goes on to project that “most server Linux will be chosen, configured, and deployed by a few cloud providers,” and that “the end result is fewer server distros with high install bases.”
Meanwhile, the types of IoT gateways and devices continue to proliferate, continually challenging the Linux kernel to keep up with new technologies and use cases. Since Linux continues to show only incremental growth on the desktop and since the role of Linux on smartphones has been abstracted by Android, it is IoT that will push the diversity of Linux and drive its development.
In the next, and final, article of this series, we’ll look at some of the challenges associated with the rapid growth of IoT, including related software development, security, and privacy.