Designing IoT—Part II—the Thing

March 26, 2014 // By Christian Legare, Micrium
In the first article in this series, I presented the communication technologies used in Wireless Sensor Network (WSN) nodes. WSN nodes are not the only types of IoT device, but to provide the hardware and software architectures for each type of IoT node, I needed to establish the kind of software load that is typical on such equipment.

The IoT Devices

In this segment, I will describe what an IoT device actually is – the “Thing” in the Internet of Things. How is it structured, what processor should be used for each case, and which software languages should be used for the framework and the application?

What is a Thing?

The definition of a “Thing” in the Internet of Things varies a lot. I would define a Thing as an embedded computing device (or embedded system) that transmits and receives information over a network for the purpose of controlling another device or interacting with a user. A Thing is also a microcontroller- or microprocessor-based device. The capabilities of these embedded devices have been expanding at the speed of Moore’s law.

What is an Embedded System?

When I am asked what an embedded system is, I like to use the following definition: “An embedded system is a microcontroller/microprocessor-based system encapsulating one single-purpose process for the lifetime of this system.”

As the CTO of Micrium, I consider an embedded system to be a system based on a microcontroller (MCU). Some Linux and Android-based systems can also be defined as embedded systems, but usually, these general-purpose operating systems require an application processor, and have additional capabilities such as dynamic application loading (which does not match my definition of an embedded system). This is why MCU-based embedded systems are often described as deeply embedded systems, versus the more general definition of embedded systems. For us at Micrium, these deeply embedded systems are the Things in the Internet of Things.

MCUs featuring 32-bit architectures have dropped in price dramatically in the last several years, and are becoming increasingly common in embedded systems. The greater capabilities of 32-bit MCUs present new choices for embedded systems developers. For 8 and 16-bit MCUs, software has often been written using a foreground/background approach (that is, a super-loop). With 32-bit CPUs becoming more and more cost effective, using a real-time operating system (RTOS) for embedded devices has become the preferred option, allowing for more flexible and extensible software to run on these systems. A complete RTOS – with kernel, GUI, file system, USB Host and Device, TCP/IP (Ethernet, Wi-Fi), and more – can fit in a memory space of less than 1 MB. With an RTOS, the software architecture of an embedded system can be more flexible, and the device can perform its processing and communication tasks more easily. Troubleshooting and adding new features becomes drastically simplified. It is also simpler to perform firmware upgrades. In summary, it just makes sense to use an RTOS with a 32-bit processor.

Figure 1 IoT device software architecture

Figure 1 illustrates how all activities within an IoT device can be mediated by a real-time operating system. Of course, the same can be done with Linux and Android, but those platforms require larger CPUs with many megabytes of RAM, and much greater power requirements. This is why the majority of the Things in IoT are – and will be – based on 32-bit MCUs.

Networking choices

An IoT device can be very simple and low cost (for example, the nodes in a WSN), or can be quite sophisticated (as, for example, the NEST Thermostat, which runs on a Cortex-A8 and uses Wi-Fi). In a WSN node, the networking technology used is usually a short-range access link. But there are a variety of other networking technologies used in devices where a WSN is inappropriate. These include:


Zigbee, Zigbee IP, and other 802.15.4-based protocols such as 6LoWPAN

ANT, Z-Wave



ISA100: Wireless Systems for Industrial Automation: Process Control and Related Applications

HART, WirelessHART


Wireless M-Bus

Ethernet, EtherCAT, EtherIP

Modbus, Profinet

HomePlug, GreenPhy, G.hnn (HomeGrid)

And more…

In a non-WSN device, the networking technology can be used to connect the device immediately to the Internet, or else to a gateway that will make the connection to the Internet. The connection to the Internet is qualified as wide area access link or cloud access link. Popular technologies for WAN access are:

Ethernet over twisted pair, over fibre

Cellular (GPRS, 3G, 4G, LTE…)

802.11ah, sub gigahertz (M2M and smart metering)



PowerLinc Modem, PowerLinc Controller (PLM /PLC)

And more…

next; processor selection